An expression in Statement Syntax

Throughout GTL documentation, you see expression used in statement documentation:
BOXPLOT X= column | expression
Y= numeric-column | expression < /option(s)>;
For the X= argument, expression means any EVAL(expression) that results in either a numeric or character column. An expression that yields a constant is not valid because the X= argument does not accept constants.
Similarly, for the Y= argument, expression means any EVAL(expression) that results in a numeric column. The expression cannot result in a character column or any constant because the Y= argument only accepts a numeric column.
On the following REFERENCELINE statement, the X= argument can be a constant (single line) or a column (multiple lines) that has the same data type as the axis. This means that EVAL(expression) can result in a numeric or character column or constant that agrees with the axis type.
REFERENCELINE X= x-axis-value | column | expression </option(s)>;
Automatic Type Conversion. Although expressions that are used in a DATA step perform automatic type conversion, GTL expression evaluation does not. Thus, you must use function(s) to perform required type conversions in an expression. Otherwise, the expression generates an error condition without warning when the template is executed.
For example, consider the following GTL expression:
if(substr(value, 1, 2) = "11")
This expression uses the SUBSTR function to determine whether the first two characters from VALUE evaluate to the string value "11". If VALUE is a string, the expression works fine. However, if VALUE is numeric, the expression generates an error condition. For a numeric, you must convert the value to a string before passing it to the SUBSTR function. The following modification uses the CATS function to perform the type conversion when necessary:
if(substr(cats(value, 1, 2)) = "11")