The following restrictions apply to all arithmetic, character, relational, and logical expressions:
If you reference any one of these items in an expression, variable, array element, character substring, record field, pointer, or function, then that item must be defined at the time the reference is executed.
An integer operand must be defined with an integer value, and not with a statement label value by an ASSIGN statement.
All the characters of a substring that are referenced must be defined at the time the reference is executed.
The execution of a function reference must not alter the value of any other entity within the same statement.
The execution of a function reference must not alter the value of any entity in common that affects the value of any other function reference in the same statement.