The functional principle of the exit mechanism is illustrated in the following diagram:
Via a TU or TPR macro interface, a module containing an exit point can branch to the corresponding exit routine, provided the routine exists and has been activated. Depending on what is required, this exit routine can check and (if necessary) modify the data, and it can reject or log a request. Control is then returned to the calling system module by means of the @EXIT macro in the program manager environment (DSL environment) or via BR R14 in pure Assembler routines. New exit routines should be developed in the DSL environment wherever possible.
When control branches to an exit routine, certain TPR registers contain information. The register contents should be taken from the description of the relevant exit.
The contents of registers 12, 13 and 14 must not be destroyed by the exit routine; they must have been saved and loaded with the original contents before returning from the exit routine, i.e. they must have their original contents on returning.
The contents of the EXVT and the TCB must be accessed via the unbundled access functions (see the “Developers Handbook”).
As stipulated in the relevant exit description, the return code of the exit routine must be stored either in register 15 or in the specified parameter list with a standard header.