| **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]]