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 +]]> +