When compiling Proc with Uniface 9.5 that has been migrated from an earlier version you may notice one of the following syntax errors:
1. When string or assignment includes parenthesis; for example:
a. putmess "FLD1=%%$number(FLD1.ENT1) (%%FLD2.ENT1-%%FLD3.ENT1)"
>> error: 1000 – Syntax error (Parentheses unbalanced or not allowed)
>> error: 1000 – Syntax error (Statement not valid)
>> error: 1000 – Syntax error (Operand not valid as destination)
2. When string includes left curly bracket; for example:
>> error: 1000 – Syntax error (Numeric not valid)
3. When string includes an arrow operator; for example:
- putmess "%%$nValue$->’%%$sText$’"
>> error: 1000 – Syntax error (Struct member name missing)
Uniface 9.5.01 introduces a flexible new struct data type that holds complex data that is typically represented as a tree-like structure. With the introduction of the data type several changes had to be made to the Uniface Proc compiler and the above described incompatibility issues are a result of these changes.
To work around the syntax errors in a string always mark the end of a substitution with %%%. For example:
1.a. putmess "FLD1=%%$number(FLD1.ENT1)%%% (%%FLD2.ENT1%%%-%%FLD3.ENT1%%%)"
The patch E101 (scheduled for December 2, 2011) will fix the above described compiler incompatibility issues.