在任务相关的用户出口程序中使用 CICS 服务

您可以通过在出口程序中发出 CICS API 命令来调用 CICS® 服务。

但是,您应该注意以下事项:
  • 如果由于 CICS 异常终止而调用程序,那么它不得使用任何 CICS 服务。 请参阅 编码要在 CICS 终止时调用的程序
  • 必须永远不使用导致 XCTL (直接或隐式) 的 EXEC CICS 命令 (例如 EXEC CICS XCTL 或 EXEC CICS SHUTDOWN)。
  • DFHEIENT 和 DFHEIRET 必须在程序中。 但是,请参阅 CICS 关闭期间与任务相关的用户出口的限制中有关在异常终止调用中不使用 DFHEIENT 的说明。 有关 DFHEIENT 和 DFHEIRET 宏的更多详细信息,请参阅 DFHECALL 宏
  • 如果出口程序入口点紧跟其后出现 DFHEIENT 宏 (由 CICS 隐式插入或显式插入) ,那么 DFHEIENT 宏的扩展会将不正确的值存储在 DFHEIBP 和 DFHEICAP 上。 随后,您的代码可以通过将 UEPEIB 复制到 DFHEIBP ,从 UEPEIB 重新装入 EIB 基本寄存器 (DFHEIBR) 并将 DFHEICAP 设置为 X'80000000 '来更正此问题。 例如,
    TESTPROG DFHEIENT CODEREG=2,EIBREG=11,DATAREG=10
             USING DFHUEPAR,1
             MVC   DFHEIBP,UEPEIB              Get correct EIB address
             L     DFHEIBR,UEPEIB              Reload EIB base register
             MVC   DFHEICAP,=X'80000000'
    注意,程序的入口点不必在程序的开始处,可以定位在 DFHEIENT 宏之后。
  • DFHEIENT 宏分配要由 DFHEISTG DSECT 映射的动态存储器。 您必须通过释放动态存储器的 DFHEIRET 宏返回到 CICS 。
  • 命令级调用使用寄存器 0 , 1 , 14 和 15。
  • 请勿在任务开始,任务结束或同步点调用中发出同步点。
  • 每次调用与任务相关的用户出口程序时,都会创建新的 EXEC 环境,即使从同一任务调用该程序也是如此。 这意味着 CICS 操作 (例如资源定义表的浏览) 无法从出口程序的一次调用继续到下一次调用。