System Functions

XEQ( )

In-line Subprogram Execute

Format

XEQ(subprog$,expression, [ arglist | * ] ,…[,ERR=stmtref]) 

Where:

*

(Asterisk) Indicates that program will be PERFORMed rather than CALLed; thus, all variables will be passed.

arglist

Comma-separated list of arguments to pass to the subprogram.

expression

Expression will be evaluated after the call and used as the return value for the function.

subprog$

Name of the subprogram to call. Maximum string size 8KB.

stmtref

Program line number or statement label to which to transfer control.

Returns

Evaluated value in expression after executing in-line CALL or PERFORM.

Description

The XEQ( ) function executes an in-line CALL or PERFORM directive. When PxPlus encounters the XEQ( ) function, the subprogram named in the function will be CALLed with any arguments supplied. If an * (asterisk) is specified, the subprogram is PERFORMed instead. After the subprogram exits, the XEQ( ) function evaluates the expression and returns it.

The primary advantage of XEQ( ) is in single-line Global functions. Consider the following:

Was:

0010 CALL "GETDTE",DT,DATE$

 

0020 PRINT "Date:",DATE$

Now:

0010 PRINT "Date:",XEQ("GETDTE",_D$,DT,_D$)


Or you could define a Global function in a start-up program:

 

DEF FN%DTE$(_DT)=XEQ("GETDTE",_D$,_DT,_D$)

Then:

0010 PRINT "Date:",FN%DTE$(DT)

(The ability to have the XEQ function PERFORM a program instead of CALL was added in PxPlus v 7.00.)