Invoking the panel input exit routine

If the LOAD keyword is specified, ISPF issues an OS load to bring the load module into virtual storage. ISPF then invokes the exit routine through a call (BASR 14,15). You must use standard OS linkage conventions when invoking the panel user exit. The exit routine (called in AMODE 31) must support 31-bit addressing.

Panel exits can be written in languages that use the Language Environment® runtime environment. However, a mixture of Language Environment-conforming main dialog code and service routine code is not supported. Dialogs and service routines must either all be Language Environment-conforming or all be Language Environment-nonconforming.

ISPF uses the standard parameter list format to pass parameters. Register one points to a list of addresses; each address points to a different parameter as shown in Table 1.
Table 1. Parameter list format used to pass parameters
Register Points at… Address points at…
R1 Address 1 Panel name
Address 2 Panel record buffer address
Address 3 Panel record buffer length
Address 4 Panel record length
Address 5 Flags
Address 6 Data area address

See Parameters passed from ISPF to the panel input exit routine.

The keyword, LOAD, on the )INEXIT panel statement provides the option of dynamically loading a panel input exit routine. PGM and LOAD are the only valid keywords:
PGM
Indicates that a panel input exit is already loaded into virtual storage with the address passed in the exit-add parameter.
LOAD
Indicates that the panel user exit routine named by the exit-mod parameter is to be dynamically loaded by ISPF.
ISPF checks the keyword to determine if the panel input exit routine is to be dynamically loaded. If it is, ISPF issues an OS load to bring the load module into virtual storage. The search sequence for link libraries is:
  • job pack area
  • ISPLLIB
  • steplib
  • link pack area
  • linklib

See the z/OS® ISPF Services Guide for further discussion of the search order using LIBDEF.

The panel input exit routine is loaded only once for each SELECT level the first time the panel is displayed. The loaded panel input exit routine is not deleted until the SELECT (which first displayed the panel) is terminated.