使用 HANDLE CONDITION 命令
使用 HANDLE CONDITION 命令来指定在发生条件时要将控制权传递到的标签。
关于此任务
使用此命令时,必须包含条件的名称,并确保在可能导致关联条件的命令之前执行 HANDLE CONDITION 命令。
限制: 此命令仅在 COBOL , PL/I 和汇编语言应用程序 (但不支持 AMODE (64) 汇编语言应用程序) 中受支持。 它在所有其他受支持的高级语言中都不受支持。
不能在同一命令中包含超过 16 个条件。 必须在进一步的 HANDLE CONDITION 命令中指定任何其他条件。 您还可以使用同一列表中的 ERROR 条件来指定所有其他条件导致将控制传递到同一标签。
针对给定条件的 HANDLE
CONDITION 命令仅适用于在其中指定该条件的程序。 该命令在程序运行时或在下列其中一个事件之前保持活动状态:
- 满足相同条件的 IGNORE CONDITION 命令。 HANDLE CONDITION 命令被覆盖。
- 满足相同条件的另一个 HANDLE CONDITION 命令。 新命令将覆盖先前的命令。
HANDLE CONDITION 命令由命令上的 NOHANDLE 或 RESP 选项临时取消激活。
当控件通过 LINK 或 XCTL 命令传递到另一个程序时,将取消激活在调用程序中处于活动状态的 HANDLE CONDITION 命令。 当控制从较低逻辑级别的程序返回到程序时,将重新激活在从中传输控制之前在较高级别程序中处于活动状态的 HANDLE CONDITION 命令,并取消激活较低级别程序中的命令。 (请参阅 程序链接 以获取有关逻辑级别的信息。)
以下示例显示如何处理在使用 WRITE 命令向数据集添加记录时可能发生的条件 (例如 DUPREC 和 LENGERR)。 在此示例中, DUPREC 作为特殊情况进行处理。 对 LENGERR 执行标准系统操作; 即,异常终止任务。 所有其他条件都由错误例程 ERRHANDL 处理。
EXEC CICS HANDLE CONDITION
ERROR(ERRHANDL)
DUPREC(DUPRTN) LENGERR
END-EXEC.
在 PL/I 应用程序中,由条件导致的不活动过程或不活动开始块中的标签分支会产生不可预测的结果。
在汇编语言应用程序中,当条件导致对标签的分支时,应用程序中的寄存器将在发出导致该条件的命令的位置恢复到其在程序中的值。