在单个出口上调用多个出口程序

可以从单个全局用户出口点调用多个出口程序。

虽然此类程序可以独立工作,但您应该注意以下几点:
  • 仅当出口程序已可用于通过 EXEC CICS ENABLE 命令的 START 选项执行时,才会在出口调用该出口程序。 当在出口点启动了多个出口程序时,调用顺序是激活程序的顺序 (即, EXEC CICS ENABLE 命令将它们与出口点关联的顺序)。 当程序在同一数据区上工作时,您应该考虑调用它们的顺序。 例如,在终端控制输出出口中,出口程序可能以不同方式处理同一消息,具体取决于先前出口程序的操作方式。
  • 与单个程序相比,返回码管理更为复杂。 每个出口程序都像往常一样在寄存器 15 中设置一个返回码。 从单个出口点调用的第二个和后续程序可以使用 DFHUEPAR 的参数 UEPCRCA 来访问先前程序 ( 当前返回码) 设置的返回码值。
    如果多个用户出口程序在单个出口上调用时设置了返回码值,那么以下规则适用于返回码:
    • 如果用户出口程序提供的返回码值与先前程序 (由 UEPCRCA 寻址) 提供的返回码值相同,那么 CICS® 将对该值执行操作。
    • 如果用户出口程序提供与先前程序不同的返回码值 (由 UEPCRCA 寻址) ,那么 CICS 将忽略这两个值并将 "当前返回码" 重置为缺省值 (通常是 UERCNORM) ,然后再为该出口点调用任何其他出口程序。
    • 如果用户出口程序在寄存器 15 中设置合格值,并将 "当前值" 字段更改为匹配 (由 UEPCRCA 寻址) ,那么将采用新值并将其传递到下一个程序 (如果有) ,或者返回到调用 CICS 模块或域。
      以下代码片段显示出口程序如何设置与先前出口程序返回的 "当前返回码" 不同的返回码,并使 CICS 对新代码执行操作。
                 LA    R15,UERCTDOK  Set the contents of reg 15 to a value of 4
                 L     R6,UEPCRCA    Set reg 6 to the address of the half word
      *                              containing the current return code
                 STH   R15,0(,6)     Store the new return code at the location
      *                              of the current return code.
               . . .