与出口相关的命令
在 CICS®中,出口是安装提供的代码,在 CICS 系统代码中的特定 CICS定义的点处调用,或者由使用出口机制的应用程序请求 (例如 Db2® 或 IMS 请求) 调用。
有两种类型: 全局用户出口和与任务相关的用户出口。 全局用户出口始终在系统代码中 CICS定义的点处调用; 可以通过两种方式调用与任务相关的出口。 使用用户出口程序进行定制 列出了 CICS 代码中可调用全局出口的点,描述了如何以及何时驱动与任务相关的出口,并提供了编程出口的完整详细信息。
- ENABLE PROGRAM
- 禁用程序
- EXTRACT EXIT
- RESYNC ENTRYNAME
- INQUIRE EXITPROGRAM
您可以使用 CICS支持的任何语言,即使出口本身必须以汇编程序进行编码也是如此。
定义出口
在 CICS 中定义出口 (即安装出口以执行代码) 的唯一方法是发出 ENABLE PROGRAM 命令。
同样,删除定义的唯一方法是发出相应的 DISABLE PROGRAM EXITALL 命令或关闭系统。 退出定义仅在当前执行 CICS时才存在。 它们不会记录在关键点, CICS 全局目录或 CICS 系统定义文件 (CSD) 中,因此在任何类型的关闭后都不会存在。
ENABLE 和 DISABLE PROGRAM 命令仅影响发出这些命令的 CICS 区域。 即使在多个正在执行的 CICS 区域之间共享 CICS 系统代码或出口程序代码,也必须在使用该出口的每个区域中单独定义和删除该出口。
此外,这些命令不可恢复; 如果发出这些命令的任务失败或发出 SYNCPOINT ROLLBACK 命令,那么不会回退这些命令的效果。
出口名称
出口执行的代码包含在一个或多个普通装入模块中; 一个模块可以同时由出口和用户事务使用。
通过在创建出口的 ENABLE PROGRAM 命令的 PROGRAM 选项中对其进行命名,可以标识要在出口中执行的第一个模块。 该出口也可以执行其他模块,但您会告诉 CICS 从何处启动,就像您只指定要在 TRANSACTION 定义中执行的第一个程序一样。
出口由初始 ENABLE PROGRAM 命令中的 ENTRYNAME 值 (而不是 PROGRAM 值) 命名,尽管您可以省略 ENTRYNAME 选项并允许其值缺省为 PROGRAM 值。 但是,出口名称必须是唯一的,如果程序首先由多个出口使用,那么缺省情况下只能通过此方式命名其中一个出口。 此外,即使出口及其第一个程序具有相同的名称,它们也是不同类型的独立实体。
由于此缺省值 (以及某些历史记录) , CICS 要求您始终以在创建出口的 ENABLE PROGRAM 命令中执行的相同方式识别出口,即通过编码 (或省略) 相同的 PROGRAM 和 ENTRYNAME 值。 RESYNC ENTRYNAME 例外; 您在 ENTRYNAME 选项中指定出口名称,而不考虑您最初是使用 ENTRYNAME 还是 PROGRAM 来分配名称。 此外,在 INQUIRE EXITPROGRAM 命令中,用于命名初始程序的选项是 EXITPROGRAM ,而不是 PROGRAM。
与用户事务调用的模块一样,出口使用的装入模块必须定义为 PROGRAM 资源 (显式或自动安装) ,并且它们在调用时必须具有 ENABLESTATUS 值 ENABLED。 此外,在创建出口的 ENABLE PROGRAM 命令时,出口的初始程序必须处于 ENABLED 状态。 但是,程序的 ENABLESTATUS 独立于使用它的任何出口,并且不受引用它的 ENABLE 和 DISABLE PROGRAM 命令的影响。