Index: EXT/Optima/Parameters.cls.xml
===================================================================
diff -u -r31917 -r31997
--- EXT/Optima/Parameters.cls.xml (.../Parameters.cls.xml) (revision 31917)
+++ EXT/Optima/Parameters.cls.xml (.../Parameters.cls.xml) (revision 31997)
@@ -6,6 +6,10 @@
%String
+
+
+%String
+
Index: EXT/Optima/String.cls.xml
===================================================================
diff -u -r31844 -r31997
--- EXT/Optima/String.cls.xml (.../String.cls.xml) (revision 31844)
+++ EXT/Optima/String.cls.xml (.../String.cls.xml) (revision 31997)
@@ -2,7 +2,61 @@
datatype
+0
%String,EXT.Optima.Parameters
+
+
+1
+generator
+%val:%CacheString
+IsValidDT
+%Status
+0
+ dirty copy paste :P
+
+ #; Validate MAXLEN parameter - either NULL, "", or a positive integer
+ If ($Get(%parameter("MAXLEN")) '= "") && (('$isvalidnum(%parameter("MAXLEN"),,1)) || (((+%parameter("MAXLEN")\1)) '= +%parameter("MAXLEN"))) { Quit $$$ERROR($$$DatatypeParameterIntegerNotPositive,%class_"::"_%property,"MAXLEN",%parameter("MAXLEN")) }
+ #; If subclass has a IsValidDT then call this
+ If %property'="",$$$comSubMemberDefined(%class,$$$cCLASSproperty,%property,$$$cPROPmethod,"IsValidDT"),$$$comSubMemberKeyGet(%class,$$$cCLASSproperty,%property,$$$cPROPmethod,"IsValidDT",$$$cXXXXorigin)'="%Library.DataType" {
+ Set %codemode=$$$cMETHCODEMODEEXPRESSION
+ Set %code="$select(##class("_%class_")."_%property_"IsValidDT(%val):1,1:$$$ERROR($$$DTFailure,%val))"
+ Quit $$$OK
+ }
+ n err,flag,sep,str
+ s %code=0
+ s %codemode=$$$cMETHCODEMODEEXPRESSION
+ i %parameter("VALUELIST")'="" d QUIT $$$OK
+ . s sep=$e(%parameter("VALUELIST")) ;for now
+ . s %code="$select(%val'["""_sep_"""&&("_$$$quote(%parameter("VALUELIST")_sep)_"[("""_sep_"""_%val_"""_sep_""")):$$$OK,1:$$$ERROR($$$DTValueList,%val,"_$$$quote(%parameter("VALUELIST"))_"))"
+ s str="",err=""
+ If %parameter("MINLEN")'="" {
+ Set str=str_"($s(%val'=$c(0):$length(%val),1:0)'<"_(+%parameter("MINLEN"))_")"
+ If %parameter("PATTERN")="",%parameter("MAXLEN")=""||(%parameter("TRUNCATE")) {
+ Set err="1"
+ } Else {
+ Set err="$s(%val'=$c(0):$length(%val),1:0)<"_(+%parameter("MINLEN"))
+ }
+ Set err=err_":$$$ERROR($$$DTMinLen,%val,"_(+%parameter("MINLEN"))_")"
+ }
+ If '%parameter("TRUNCATE"),%parameter("MAXLEN")'="" {
+ Set str=str_"&&($length(%val)'>"_(+%parameter("MAXLEN"))_")"
+ If %parameter("PATTERN")="" {
+ Set err=err_$select(err="":"",1:",")_"1"
+ } Else {
+ Set err=err_$select(err="":"",1:",")_"$length(%val)>"_(+%parameter("MAXLEN"))
+ }
+ Set err=err_":$$$ERROR($$$DTMaxLen,%val,"_(+%parameter("MAXLEN"))_")"
+ }
+ If %parameter("PATTERN")'="" Set str=str_"&&(%val?"_%parameter("PATTERN")_")",err=err_$select(err="":"",1:",")_"1:$$$ERROR($$$DTPattern,%val,"_$$$quote(%parameter("PATTERN"))_")"
+ i str="" s %code=1 QUIT $$$OK
+ i $e(str,1,2)="&&" s str=$e(str,3,*)
+ s %code="$select("_str_":1,"_err_")"
+ QUIT $$$OK
+]]>
+