系统恢复程序出口 XSRAB
出口 XSRAB 是在系统恢复程序 (DFHSRP) 在系统恢复表 (SRT) 中找到操作系统异常终止代码的匹配项时调用的。
- 调用时机
- 当系统恢复程序 (DFHSRP) 在 SRT 中找到操作系统异常终止代码的匹配项时,将调用出口 XSRAB。 有关在 SRT 中定义条目的信息,请参阅 系统恢复表 (SRT)。
只有在CICS®基本 TCB(即 QR、RO、CO、SZ、RP 或 FO 之一)下发生 MVS 终止时,才会处理 SRT 表并驱动退出。 对于非必需的 TCB 类型 (例如 L8, SL , SO 或 S8) ,不会驱动出口。
- 特定于出口的参数
- UEPERROR
- 错误数据结构 SRP_ERROR_DATA 的地址,其中包含以下字段:
- SRP_ERROR_TYPE
- 4 字符错误类型,始终为 ASRB。
- SRP_SYS_ABCODE
- 包含二进制格式的系统异常终止代码 XXX 的 2 字节 (例如, D37)。
- SRP_USER_ABCODE
- 包含二进制格式 (例如 0999) 的用户异常终止代码 NNNN 的 2 字节。
- SRP_ERROR_TRANID
- 4-包含异常终止的事务的标识的字符字段。
- SRP_ERROR_STACK_NAME
- 8-包含异常结束时事务的当前内核堆栈条目的名称的字符字段。
- SRP_ERROR_PPT_NAME
- 8-包含事务的当前程序名称的字符字段。 仅当设置了标志 SRP_PPT_ENTRY 时,此字段才包含值。
- SRP_ERROR_OFFSET
- 包含异常终止的程序中的偏移量的全字,如下所示:
- 如果设置了标志 SRP_PPT_ENTRY ,那么在 SRP_ERROR_PPT_NAME 中提供偏移量
- 否则,请在 SRP_ERROR_STACK_NAME 中提供偏移量。
- SRP_ERROR_FLAGS
- 包含标志的 1 字节:
- SRP_CICS_CODE
- 运行 CICS 代码时发生异常终止。
- SRP_USER_CODE
- 运行用户应用程序代码时发生异常终止。
- SRP_PPT_ENTRY
- 运行 SRP_ERROR_PPT_NAME 时发生异常终止。 如果未设置此标志,那么在运行 SRP_ERROR_STACK_NAME 时发生异常终止。
- SRP_VALID_OFFSET
- 可以确定有意义的偏移量。
- SRP_VALID_REASON
- MVS 提供了异常终止的原因码。
- SRP_NOT_CICS_RB
- 在发生异常终止时, CICS RB 不受控制 (即,在 CICS调用的系统服务中发生异常终止)。
- SRP_CICS_ERROR_REASON
- 4-包含 MVS 异常终止原因码的字符字段。 仅当设置了标志 SRP_VALID_REASON 时,它才包含值。
- SRP_CICS_ERROR_DATA
- 描述 CICS 在异常终止之前执行的最后一项操作的区域。 它包含以下内容:
- SRP_CICS_EC_PSW
- 8-包含扩展控制 (EC) 方式程序状态字 (PSW) 的字符字段
- SRP_CICS_PSW16
- 包含 128 位 PSW 的 16 字符字段
- SRP_CICS_EC_INT
- 8-包含中断代码和 ILC 的字符字段
- SRP_CICS_REGST
- 包含通用 (GP) 寄存器内容的 64 字符字段
- SRP_CICS_EXEC_KEY
- 包含 PSW 密钥的 1 字节,格式为 X'0n'。
- SRP_SYSTEM_ERROR_DATA
- 描述系统在异常终止之前所做的最后一件事的区域。 它包含以下内容:
- SRP_SYSTEM_EC_PSW
- 8-包含 EC 方式 PSW 的字符字段
- SRP_SYSTEM_PSW16
- 包含 128 位 PSW 的 16 字符字段
- SRP_SYSTEM_EC_INT
- 8-包含中断代码和 ILC 的字符字段
- SRP_SYSTEM_REGST
- 包含 GP 寄存器内容的 64 字符字段
- SRP_SYSTEM_EXEC_KEY
- 包含 PSW 密钥的 1 字节,格式为 X'0n'。
- SRP_ERROR_FP_REGS
- 描述异常结束时浮点寄存器的内容的区域。 它包含:
- SRP_FP_REG_0
- FP 寄存器 0
- SRP_FP_REG_2
- FP 寄存器 2
- SRP_FP_REG_4
- FP 寄存器 4
- SRP_FP_REG_6
- FP 寄存器 6
- SRP_ADDITIONAL_REG_INFO
- 包含其他寄存器信息的区域。
- SRP_ADDITIONAL_REGS_FLAG
- 包含标志的 1 字节:
- SRP_CICS_GPR64_AVAIL
- 64 位 CICS GP 寄存器可用。
- SRP_SYSTEM_GPR64_AVAIL
- 64 位系统 GP 寄存器可用。
- SRP_ADDITIONAL_FPR_AVAIL
- 还提供了其他 FP 寄存器。
- SRP_CICS_GP64_REGS
- 在异常结束时包含 CICS 64 位 GP 寄存器的 128 字节区域。
- SRP_SYSTEM_GP64_REGS
- 在异常结束时包含系统 64 位 GP 寄存器的 128 字节区域。
- SRP_ADDITIONAL_FPR_REGS
- 在异常结束时包含其他 FP 寄存器的 132 字节区域。
- SRP_FP_REGS
- 在异常结束时包含所有 FP 寄存器的 128 字节区域。
- SRP_FPC_REG
- 4-在异常结束时包含 FPC 寄存器的字节字段。
- SRP_VR_REGS
- 在异常结束时包含所有向量寄存器的 512 字节区域。
如果设置了标志 SRP_NOT_CICS_RB ,那么 SRP_CICS_ERROR_DATA 将描述 CICS 在异常结束之前执行的最后一项操作,而 SRP_SYSTEM_ERROR_DATA 将描述系统服务执行的最后一项操作 (例如, z/OS® Communications Server, VSAM 或 MVS)。
您可以使用 DFHSRED TYPE=DSECT 宏来映射传递到 XSRAB 出口的 SRP_ERROR_DATA。 SRP_ERROR_DATA 的格式显示在 SRED-System recovery error data中。
- 返回码
- UERCNOCA
- 异常终止任务,异常终止代码为 ASRB。 请勿取消与此任务关联的任何程序级异常终止出口。
- UERCCANC
- 异常终止任务,异常终止代码为 ASRB。 取消与此任务关联的任何程序级异常终止出口。
- UERCCICS
- 异常终止 CICS。
- XPI 调用
- 由于 CICS 在错误环境中调用出口 XSRAB ,因此只能使用一部分 XPI 调用。
只有 TRACE_PUT 可供一般使用。
您可以使用 WAIT_MVS ,但只有在出口程序 (从 SRP_CICS_CODE 和 SRP_USER_CODE 字段中) 确定异常结束发生在用户应用程序代码中,而不是在 CICS 代码中。
- API 和 SPI 调用
- 不能使用任何值。
重要说明:
- 对要在 XSRAB 出口点运行的程序进行编码时请小心。 如果出口程序导致重新输入系统恢复程序 (例如,如果发生程序检查) ,那么 CICS 将异常终止,并返回 DFHSR06xx 消息。
- 缺省返回码为 UERCNOCA ,这将确保在出口出错时任务异常终止。
- 在此出口点没有 UERCNORM 返回码,因为在失败后会调用该出口。
- 出口不应设置返回码 UERCPURG。