Skip to content

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
These messages will mean something to the exit developer as they will have set the non-zero return code. Note that the return code from a REXX exec (for example, EXIT nn) is returned in the evalblock (as shown above for EXIT 9). The actual return code from the invocation of IRXEXEC in this case is zero (that is, successful execution of the exec). The return code will be non-zero only for situations such as REXX syntax errors which cause the execution to fail.

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.