EXEC 接口程序出口 XEIIN、XEIOUT、XEISPIN 和 XEISPOUT

EXEC 接口程序中有四个全局用户出口点可以在 API 或 SPI 调用之前或之后使用。

退出 XEIIN
在执行任何 EXEC CICS 应用程序编程接口 (API) 或系统编程接口 (SPI) 命令之前调用。
退出 XEISPIN
在执行任何 EXEC CICS SPI 命令之前调用,但以下命令除外:
  • EXEC CICS ENABLE
  • EXEC CICS DISABLE
  • EXEC CICS EXTRACT EXIT
  • EXEC CICS PERFORM DUMP
  • EXEC CICS RESYNC ENTRYNAME
顺序为:
TRACE   –   XEIIN   –   XEISPIN   –   EDF   –   command
退出 XEIOUT
在执行任何 EXEC CICS API 或 SPI 命令之后调用。
退出 XEISPOUT
在执行任何 EXEC CICS SPI 命令之后调用,但针对 XEISPIN 列出的那些 SPI 命令除外。
顺序为:
command   –   EDF   –   XEISPOUT   –   XEIOUT   –   TRACE
注: 如果事务处于暂挂状态 (例如,在文件 I/O 等待期间) ,那么可能会对这些出口进行异步处理。 在 CEDF 下也可能发生此情况,因为 CEDF 在应用程序的 XEISPIN 和 XEISPOUT 出口之间发出其自己的 EXEC CICS 命令。

例如,如果XEIIN和XEIOUT出口共享同一个GWA,则必须允许异步处理的可能性,以确保数据的完整性,并防止出现不可预测的结果。

在进入出口时,特定于出口的参数 UEPARG 包含命令参数列表的地址。

命令参数列表

列表中的第一个参数指向称为 自变量 0的数据字符串。 其他参数指向为命令上传递的参数指定的值。

参数 0 以标识命令的 2 字节函数代码开头。 函数代码记录在 EIB 字段EXEC 接口块 (EIB) 响应和函数代码中。 函数代码后跟包含 存在位的 2 字节字段,这些位指示是否在命令上传递自变量。 例如,考虑以下命令:
EXEC CICS LINK PROGRAM(‘MYPROG')
此处,参数0以函数代码 X'0E02' (LINK)开头。 设置了存在位 1 ,指示存在自变量 1 (即, "MYPROG")。

可以从特定命令的转换代码中推断命令参数 (例如 PROGRAM) 与其在参数列表中的位置和值 (在本例中,参数为 1 , 'MYPROG') 之间的对应关系。

重要说明:

不支持通过更改自变量 0 来修改 CICS® 命令,这将导致意外错误或结果。

例如,如果应用程序是用汇编程序或 PL/I 编写的,而你修改了参数 0,那么你将写入程序存储空间(即程序本身占用的存储空间),这可能会导致 0C4 中止。 此外,修改参数 0 不仅会改变 CICS 命令在应用程序中的执行,还会改变应用程序虚拟存储副本中的 CICS 命令。 这意味着调用同一程序副本的下一个任务也将执行修改后的命令。

修改参数 0 的危险不适用于 COBOL 或 C® 应用程序,但对于用任何支持语言编写的应用程序,都不应修改 CICS 命令。

绕过命令

XEIIN 或 XEISPIN 出口程序可以通过设置 UERCBYP 返回码来绕过命令的执行。 如果执行此操作,那么不会调用 EDF ,但会调用 XEISPOUT , XEIOUT 和出口跟踪 (如果它们处于活动状态)。

例如,绕过 EXEC CICS 命令允许出口程序将 CICS 函数替换为其自己的处理。

在设置 UERCBYP 之前,程序应检查 UEPPGM 指向的值,以确保它不会绕过 CICS发出的 EXEC CICS 命令。