Index: EXT/Optima/String.cls.xml =================================================================== diff -u -r32001 -r32003 --- EXT/Optima/String.cls.xml (.../String.cls.xml) (revision 32001) +++ EXT/Optima/String.cls.xml (.../String.cls.xml) (revision 32003) @@ -2,6 +2,7 @@ datatype +0 %String,EXT.Optima.Parameters @@ -12,9 +13,51 @@ %Status 0 "_(+%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_")" + + new ValueList + if %parameter("OptimaEnu")'="" d quit $$$OK + . set ValueList = ##class(TECH.ClassUtils).GetClassParameterValue(%parameter("OptimaEnu"),"VALUELIST") + . set sep = $e(ValueList) + . s %code="$select(%val'["""_sep_"""&&("_$$$quote(ValueList_sep)_"[("""_sep_"""_%val_"""_sep_""")):$$$OK,1:$$$ERROR($$$DTValueList,%val,"_$$$quote(ValueList)_"))" + + QUIT $$$OK ]]>