When TSO/E REXX encounters
a compiled REXX exec,
TSO/E REXX passescontrol
to the appropriate compiler runtime processor to run
the exec. Prior to the first invocation of a compiled REXX exec in the
first language processor environment in
the address space, TSO/REXX loads the appropriate compiler runtime processor, saves
the location of thecompiler runtime processor, then
invokes the compiler runtime processor.
On subsequent invocations of compiled REXX execs, and in subsequent language processor environments, TSO/E REXX uses the
saved location of the loaded compiler runtime processor to pass
control to the compiler runtime processor.
A compiler runtime processor receives
control in the same recovery environmentas the REXX interpreter; TSO/E REXX establishes
ESTAE recovery and attention handling routines based on the characteristics
of the language processor environment.
The compiler runtime processor must
issue all messages relating to language processing. For more information
on REXX recovery
and attention processing, see .
When the compiler runtime processor receives
control, it must pass control to the exec initialization routine (EXECINIT)
and exec termination routine (EXECTERM) at the appropriate times.
The programming routine IRXRTE must be used to pass control to these
routines.
Table 1 describes the results required
from a compiler runtime processor.The
results vary according to how the compiled exec was invoked under
the compiler runtime processor.
Table 1. compiler runtime processor expected
resultsInvocation Method (compiled
exec) |
Returned
results (compiled exec) |
---|
EXIT/RETURN Without Expression |
EXIT/RETURN With Expression |
Language Error |
Processing Error |
---|
Subroutine |
Set return code to 0. The compiler runtime processor must
not obtain or complete an EVALBLOK. |
Set return code to 0. The compiler runtime processor must
use the GETEVAL function of IRXRLT to obtain an EVALBLOK. The compiler runtime processor must
then use the results from the execution of the compiled exec to complete
the EVALBLOK. |
Set return code to 200nn, where nn is
greater than or equal to 1 and less than or equal to 99. The compiler runtime processor must
not obtain or complete an EVALBLOK. |
Set return code to 20, 100, or 104; set abend and reason codes
as appropriate. The compiler runtime processor must
not obtain or complete an EVALBLOK. |
Function |
For a RETURN without expression, set the return code to 20045.
Return code 20045 is a special case of return code 200nn. For
an EXIT without expression, set the return code to 0.
|
Set return code to 0. The compiler runtime processor must
use the GETEVAL function of IRXRLT to obtain an EVALBLOK. The compiler runtime processor must
then use the results from the execution of the compiled exec to complete
the EVALBLOK. |
Set return code to 200nn, where nn is
greater than or equal to 1 and less than or equal to 99. The compiler runtime processor must
not obtain or complete an EVALBLOK. |
Set return code to 20, 100, or 104; set abend and reason codes
as appropriate. The compiler runtime processor must
not obtain or complete an EVALBLOK. |
Command |
Set return code to 0. The compiler runtime processor must
use the GETEVAL function of IRXRLT to obtain an EVALBLOK. The compiler runtime processor must
then complete the EVALBLOK with a result of 0. |
Set return code to 0. The compiler runtime processor must
represent the results from the compiled exec execution as a number
in string format. If the result string will fit in a fullword, the compiler runtime processor must
use the GETEVAL function of IRXRLT to obtain an EVALBLOK. The compiler runtime processor must
then complete the EVALBLOK with the result string. If the result
string will not fit in a fullword, then the compiler runtime processor must
set the return code to 20026 and must not obtain or modify an EVALBLOK. |
Set return code to 200nn, where nn is
greater than or equal to 1 and less than or equal to 99. The compiler runtime processor must
not obtain or complete an EVALBLOK. |
Set return code to 20, 100, or 104; set abend and reason codes
as appropriate. The compiler runtime processor must
not obtain or complete an EVALBLOK. |