DL/I interface program exits XDLIPRE and XDLIPOST

The XDLIPRE and XDLIPOST exit points are invoked following the issue of an EXEC DLI command or DL/I call. Exit XDLIPRE is invoked before the request is processed and XDLIPOST is invoked after the request is processed.

When the request is function shipped, the exits are invoked from both the application-owning region and the database-owning region. However, there are restrictions when they are invoked in a database-owning region:

  1. The descriptions of the exits show the general format of the parameter list of the application. For detailed information about the format of the CALL-level DL/I parameter list, refer to IMS Application programming: DL/I calls reference.
  2. For all EXEC DLI calls, the parameter list of the application is in assembler language format; that is, the value of the program language byte pointed to by UEPLANG is always UEPASM, and the parameter list pointed to by UEPAPLIST is always in assembler language format. This format is used because all EXEC DLI calls are converted into assembler-language CALL-level requests.

    An EXEC DLI online request is converted by DFHEDP into a CALL-level request for DFHDLI. IMS does not deal directly with EXEC-level parameter lists. The first parameter in the CALL parameter list contains the address of the parameter count. The second parameter in the CALL parameter list contains the address of the function. All other parameters are dependent on the function.

  3. In an XDLIPRE exit program, you can change the PSB name and the SYSID name. Changing the name helps availability if the originally specified SYSID fails.
    You can change the SYSID in the following ways:
    • A remote value to another remote value
    • The local value to a remote value
    • A remote value to the local value.

    Changing the SYSID has an effect only if the associated PSB has a PDIR entry. The SYSID can be the local CICS® (that is, the SYSIDNT specified on the CICS region) or a remote connection name. For the new SYSID to be used, the PSB name must have a PDIR entry; if it does not have a PDIR entry, the assumption is made that the local CICS is connected to DBCTL, and an attempt is made to run the IMS request there. An IMS schedule failure is handled in the same way as a failure to route to a connection that does not exist. If the SYSID is changed to either the same value as the SYSIDNT of the local CICS, or blanks (hex '40404040'), CICS attempts to run the IMS request on the local system.