DL/I 接口程序退出 XDLIPRE 和 XDLIPOST
在发出 EXEC DLI 命令或 DL/I 调用之后,将调用 XDLIPRE 和 XDLIPOST 出口点。 在处理请求之前调用出口 XDLIPRE ,在处理请求之后调用 XDLIPOST。
当请求交付为函数时,将从应用程序拥有区域和数据库拥有区域调用出口。 但是,在数据库拥有区域中调用它们时存在一些限制:
- 出口的描述显示应用程序的参数列表的一般格式。 有关 CALL 级别 DL/I 参数列表格式的详细信息,请参阅 IMS 产品文档中的 DL/I 调用参考。
- 对于所有 EXEC DLI 调用,应用程序的参数列表采用汇编语言格式; 即 UEPLANG 所指向的程序语言字节的值始终为 UEPASM ,而 UEPAPLIST 所指向的参数列表始终为汇编语言格式。 由于所有 EXEC DLI 调用都转换为汇编语言 CALL 级别的请求,因此将使用此格式。
EXEC DLI 联机请求由 DFHEDP 转换为针对 DFHDLI 的 CALL 级别请求。 IMS 不会直接处理 EXEC 级别参数列表。 CALL 参数列表中的第一个参数包含参数计数的地址。 CALL 参数列表中的第二个参数包含函数的地址。 所有其他参数都依赖于该函数。
- 在 XDLIPRE 出口程序中,可以更改 PSB 名称和 SYSID 名称。 如果最初指定的 SYSID 失败,那么更改名称有助于提高可用性。您可以通过以下方式更改 SYSID:
- 远程值到另一个远程值
- 远程值的本地值
- 本地值的远程值。
仅当关联的 PSB 具有 PDIR 条目时,更改 SYSID 才会生效。 SYSID 可以是本地 CICS® (即 CICS 区域上指定的 SYSIDNT) 或远程连接名称。 要使用新的 SYSID , PSB 名称必须具有 PDIR 条目; 如果它没有 PDIR 条目,那么假定本地 CICS 已连接到 DBCTL ,并尝试在其中运行 IMS 请求。 处理 IMS 调度故障的方式与路由到不存在的连接失败的方式相同。 如果 SYSID 更改为与本地 CICS的 SYSIDNT 值相同或为空白 (十六进制 '40404040') ,那么 CICS 会尝试在本地系统上运行 IMS 请求。