EVALUATE (return runtime expression string result)

Top  Previous  Next

 

EVALUATE(expression)

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

BINDEXPRESSION

FILTER

POPBIND

PUSHBIND

UNBIND