| **Navigation:** [[introduction.htm|Language Reference]] > 10 - Expressions > Runtime Expression Evaluation >====== EVALUATE (return runtime expression string result) ====== | [[bindexpression declare runtime expression .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[popbind restore runtime expression string name space .htm|{{btn_next_n.gif|Next page}}]] |
| ||
** **
**EVALUATE(**//expression//**)**
{{blk2blue.jpg|blk2blue.jpg}}
| **EVALUATE** | Evaluates runtime expression strings. |
| //expression// | A string constant or variable containing the expression to evaluate. |
The **EVALUATE** procedure evaluates the //expression// and returns the result as a STRING value. If the //expression// does not meet the rules of a valid Clarion expression, the result is a null string (''), and ERRORCODE is set. A logical //expression// returns a string containing either zero ('0') or one ('1'), while an arithmetic //expression// returns the actual result of the //expression// (in a string). The more variables are bound at one time, the slower the EVALUATE procedure works. Therefore, BIND(//group//) should only be used when most of the //group's// fields are needed, and UNBIND should be used to free all variables and user-defined procedures not currently required for use in dynamic expressions. **PATH(), SHORTPATH() and LONGPATH() **can now be used in expressions evaluated by the EVALUATE statements in runtime application and in the templates.
Field Qualification syntax (dot syntax) cannot be used in the //expression//. Variables should be binded using the standard prefix notation.
**Return Data Type:** STRING
**Errors Posted:**
| 1010 | Illegal Expression |
| 1011 | Variable Not Found |
| 1012 | Mismatched |
| 1015 | Some parameters of built-in functions that are used in the expression are omitted |
**Example:**
MAP
AllCapsFunc PROCEDURE(STRING),STRING !Clarion procedure
END
Header FILE,DRIVER('Clarion'),PRE(Hea),BINDABLE !Declare header file layout
OrderKey KEY(Hea:OrderNumber)
Record RECORD
OrderNumber LONG
ShipToName STRING(20)
END
END
StringVar STRING(20)
CODE
BIND('ShipName',Hea:ShipToName)
BIND('SomeFunc',AllCapsFunc)
BIND('StringVar',StringVar)
StringVar = 'SMITH'
CASE EVALUATE('StringVar = SomeFunc(ShipName)')
OF ''
IF ERRORCODE()
MESSAGE('Error ' & ERRORCODE() & ' -- ' & ERROR())
END
OF '0'
DO NonSmithProcess
OF '1'
DO SmithProcess
END
AllCapsFunc PROCEDURE(PassedString)
CODE
RETURN(UPPER(PassedString))
!***Additional Examples
BIND('Value1',Self.Value1)
BIND('StrVar',StringVar)
Self.Value1 = '15 + 10'
Evaluate(Value1) !Returns 25
StringVar = 'True'
Evaluate('StrVar') !Returns the characters 'True' (without the quotes)
**See Also:**
[[bind declare runtime expression string variable .htm|BIND]]
[[bindexpression declare runtime expression .htm|BINDEXPRESSION]]
[[filter set view filter expression .htm|FILTER]]
[[order set view sort order expression .htm|ORDER]]
[[popbind restore runtime expression string name space .htm|POPBIND]]
[[pushbind save runtime expression string name space .htm|PUSHBIND]]
[[unbind free runtime expression string variable .htm|UNBIND]]