Tosdata
This function returns a string value containing an SData where syntax corresponding to a Sage X3 valid condition.
Syntax
STRING=toSData(VARIABLES, SDATA_VAR, EXPRESSION)
VARIABLESis an array containing the variable names used in the condition.SDATA_VARis an array containing the corresponding variable names used in the SData where resulting condition.EXPRESSIONis a Sage X3 valid condition expressed in X3 syntax.
Example
Local Char VARS(20)(1..3), COLS(20)(1..3), MY_EXPRESSION(200),SDATA_EXPRESSION(200)
VARS(1)="country" : VARS(2)="city" : VARS(3)="total"
COLS(1)="COUNTRYCODE" : COLS(2)="CITYNAME" : COLS(3)="AMOUNT"
# Transform the expression
MY_EXPRESSION="find(CITYNAME,'London','Paris')<>0 and (AMOUNT>=1 and AMOUNT<=100) and COUNTRYCODE<>'BE'"
SDATA_EXPRESSION=toSData(COLS,VARS,MY_EXPRESSION)
# The contents of SDATA_EXPRESSION is now:
# "(city in 'London','Paris') and (total between 1 and 10) and country ne 'BE'"
Comments
This function only supports the following subset of the Sage X3 syntax:
- String, numeric, date, and datetime literals. For example, 'Hello "World"',"I'm tired", 3.14, @1959-05-29@, @2008-05-19T16:41:00Z@
- Parentheses
- The following operators: +, -, !, *, /, >, >=, <, =, <=, =, and, or
- The following functions:
find,pat,mod,left$,right$,mid$,seg$,tolower,toupper,ascii,chr$,abs,arr,year,day,month
Expressions that are not based on unary expressions are not accepted and trigger an error. The following table provides incorrect syntaxes and the correct equivalent syntaxes:
| Incorrect syntax | Correct syntax |
|---|---|
| pat(NAME,"*A*") | pat(NAME,"*A*")<>0 |
| find(NAME,"A","B","C") | find(NAME,"A","B","C")<>0 |
| AMOUNT | AMOUNT<>0 |