Introduction
Information is passed from the client to the HLL exit address space for processing and sending on to the user exit itself. If the exit is designated as a REXX exit, REXX variables are defined and populated with values from the incoming request.
If the exit is an LE-program, the incoming data is formatted in such a way that a (supplied) COBOL and/or PL/I copybook can be used to map the data.
On entry to an exit, a field (xxxxORGN for LE code and callOrigin as a REXX variable) will be set to an identifier that identifies the client process that resulted in this call. These identifiers are:
Identifier | Description |
---|---|
ECL | The call is as a result of a ZMF4ECL client process. |
ZDD | The call is as a result of a ZDD client process. |
SPF | The call is as a result of an ISPF client process. |
XML | The call is due to a direct invocation of an XML service (for example, Through XMLSERV or equivalent). |
The exit has the opportunity to update that data in place. If it does so, it must set the dataChanged variable (or LE equivalent) to YES; otherwise ZMF will ignore it.
If an exit wishes to stop a process, it can set the proceed variable to NO. It can also populate the shortMsg and longMsg variables to whatever is required to be displayed for the condition leading to the stopping of the current function. Furthermore, it can set the cursorField variable to position the cursor at a specific field.
All normal execution of HLL exit routines must end with RC=0 (note that EXIT with no expression is treated as EXIT 0 by HLLX). If the routine ends with RC>0, the infrastructure will take this as a major failure and abandon the current function altogether. In this case, the client will produce a general message indicating an HLL exit failure and will direct the user to the HLLX started task output for further details. (A developer should contact his or her administrator at this point.)
For an LE program we see something like this in sysout:
LE program for exit function PCRE0007 finished with RC=00000007
And for a REXX exec we have something like:
REXX RC for exit function PCRE0101 is 00000000
REXX evaldata (expression coded on EXIT statement) is 9
On return, the HLL exit address space extracts and populates the data in the response section of the XML service request, which gets passed back to the client to deal with as it wishes.