编码和启用出口程序
您可以在使用 XPI 或 EXEC CICS 命令从 XRCINIT 和 XRCINPT 出口调用的出口程序中使用 CICS® 服务。
使用 XPI 的限制
在初始化期间早期使用 XPI 有一个限制: 在 PLTPI 的第二阶段之前,请勿调用使用 XPI 函数 TRANSACTION_DUMP , WRITE_JOURNAL_DATA , MONITOR 和 INQUIRE_MONITOR_DATA 的出口程序。
使用 EXEC CICS 命令的限制
在这些出口中使用 EXEC CICS 命令也有一些限制:
- 不能使用 EXEC CICS 命令来访问终端控制服务。
- 强烈建议您不要使用临时存储器,瞬时数据,文件控制,日志控制或 DL/I 服务,因为您尝试访问的资源也可能处于恢复状态,因此 "不营业"。 在这些情况下尝试访问资源最多会导致恢复任务序列化,最坏情况下会导致死锁。如果在从这些出口调用的程序中发出文件控制请求,请注意:
- 如果出口程序由于文件控制请求而获取区域,那么该程序负责释放该区域。
- 除非在初始化出口期间未对该文件指定任何操作,否则出口程序不得尝试对引用了字符串号为 1 的 VSAM 数据集的文件发出任何文件控制请求。
- 如果恢复是 EXEC CICS SYNCPOINT ROLLBACK 请求的结果,那么出口程序不得发出 EXEC CICS 命令。
- 发出 EXEC CICS 命令的出口程序必须首先对 EIB 进行寻址。 请参阅 使用 CICS 服务。
- 发出 EXEC CICS 命令的出口程序以及使用 DFHEIENT 宏的出口程序应该使用 DFHEIRET 宏来设置返回码并返回到 CICS。 请参阅 将值返回到 CICS。
- 如果从这些出口调用的出口程序发出 EXEC CICS 命令,那么必须使用 NOEDF 选项进行转换。 请参阅 编译使用 EDF 调试全局用户出口程序的注意事项。
其他编码注意事项
- 在紧急重新启动处理完成时,将释放在出口程序中获取的任务链式存储器。 但是,一旦不再需要存储器的内容,出口程序就应尝试释放该存储器。
- 任何出口程序都不应重置由文件控制回退程序设置的缺席或无操作指示符。
- 发出递归命令时请注意不要导致循环。 例如,当从这些出口发出 RC 请求时,您有责任避免进入循环。
启用出口程序
要启用这些出口,必须执行下列其中一项操作:
- 指定系统初始化参数 TBEXITS = (name1,name2,name3,name4,name5,name6) ,其中 name1 到 name6 是 XRCINIT , XRCINPT , XFCBFAIL , XFCLDEL , XFCBOVER 和 XFCBOUT 的用户出口程序的名称。
- 使用 PLTPI 程序在初始化的第一阶段启用出口。
如果使用 TBEXITS 参数来启用出口,那么将提供 4 字节的全局工作区。 如果使用 PLTPI 程序,那么可以选择全局工作区的大小。 您还可以启用多个出口程序以在每个出口点使用; TBEXITS 参数在每个出口点仅允许一个出口程序。 编写初始化和关闭程序中描述了 PLTPI 处理。