与出口相关的命令

在 CICS®中,出口是安装提供的代码,在 CICS 系统代码中的特定 CICS定义的点处调用,或者由使用出口机制的应用程序请求 (例如 Db2® 或 IMS 请求) 调用。

有两种类型: 全局用户出口和与任务相关的用户出口。 全局用户出口始终在系统代码中 CICS定义的点处调用; 可以通过两种方式调用与任务相关的出口。 使用用户出口程序进行定制 列出了 CICS 代码中可调用全局出口的点,描述了如何以及何时驱动与任务相关的出口,并提供了编程出口的完整详细信息。

五个 SPI 命令与出口相关:
  • ENABLE PROGRAM
  • 禁用程序
  • EXTRACT EXIT
  • RESYNC ENTRYNAME
  • INQUIRE EXITPROGRAM

您可以使用 CICS支持的任何语言,即使出口本身必须以汇编程序进行编码也是如此。

定义出口

在 CICS 中定义出口 (即安装出口以执行代码) 的唯一方法是发出 ENABLE PROGRAM 命令。

同样,删除定义的唯一方法是发出相应的 DISABLE PROGRAM EXITALL 命令或关闭系统。 退出定义仅在当前执行 CICS时才存在。 它们不会记录在关键点, CICS 全局目录或 CICS 系统定义文件 (CSD) 中,因此在任何类型的关闭后都不会存在。

ENABLEDISABLE 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 命令的影响。