Global user exits XDLIPRE and XDLIPOST

The two global user exits XDLIPRE and XDLIPOST are available to all DL/I users, both remote users and DBCTL users. Use these global user exits to intercept any Call level or EXEC level DL/I request on entry to and exit from DL/I.

XDLIPRE is invoked before the DL/I request is processed. XDLIPOST is invoked after the DL/I request is processed. If you are using function shipping, the exits are invoked from the application owning region (AOR), and the database owning region (DOR). However, there are restrictions on what actions can be performed by an exit program running at exit point XDLIPRE or XDLIPOST in a DOR. For programming information about these exits, see Naming, testing, and debugging your autoinstall control program and CICS action on return from the control program.

Programs running in these exits must be coded to threadsafe standards and defined to CICS® as threadsafe.

Uses of the XDLIPRE and XDLIPOST global user exits

Use XDLIPRE to change the PSB name that the application program has scheduled at execution time. An example of XDLIPRE that you can modify is shown in Example use of global user exit XDLIPRE.

Use the XDLIPRE exit to change the identity of the SYSID during CICS execution. You might want to change the identity of the SYSID if the one you are currently using becomes unavailable.

Use the XDLIPOST exit with DBCTL to ensure that all the required resources are available before an application starts. The enhanced scheduling feature in DBCTL allows a PSB to be scheduled when one or more databases are unavailable, you can use XDLIPOST to prevent this from happening. Use XDLIPOST to scan the list of PCBs and update the status of any unavailable databases to a response code of 0805. Setting the status of unavailable databases to 0805 means that CALLDLI programs return a value of 0805, EXEC DLI programs abend with code DHTE, and DBCTL does not raise any new schedule requests before the PSB is stopped.