终端异常情况程序
BSAM 支持的终端的终端错误处理通常会将任何错误路由到终端异常条件程序 (DFHTACP)。 根据错误类型, DFHTACP 会发出消息,设置错误标志,并使终端或线路脱离服务。
在执行缺省操作之前, CICS® 会将控制权传递给终端错误程序 (DFHTEP) ,以便在必要时执行与应用程序相关的操作。 从终端错误程序返回时, DFHTACP 将执行先前由 DFHTACP 设置或由 TEP 改变的指示操作,该操作的样本版本由 CICS (源代码格式的 DFHXTEP) 提供。 有关 TEP 的更多信息,请参阅 终端错误程序 。
设计概述
终端控制使用终端异常条件程序 (DFHTACP) 来分析任何异常条件。 针对终端统计信息,行统计信息,终端状态和行状态采取相应的操作; 可以终止任务 (事务)。 将消息记录到瞬时数据主终端目标 (CSMT) 或终端日志目标 (CSTL)。 DFHTACP 链接到用户提供的 (或样本) 终端错误程序,通过 DFHTEPCA DSECT 映射的 COMMAREA 传递参数列表。 这允许用户尝试从传输错误中恢复,并对任务执行相应的操作。
表 1 列出了各种 TACP 消息处理例程,这些例程用于组合消息文本并根据错误类型将它们写入三个目标中的一个目标。
表 2 中显示的矩阵显示了针对每个错误代码调用消息例程的顺序。 例如,对于错误代码 X'88 ',将按以下顺序执行处理例程 :ME , F , W , X , N , BA 和 finally R。
表 3 提供了在完成消息处理时 TACP 的缺省错误处理的泛化关系。 对于每个错误代码,它将显示要调用的第一个例程。
| 例程 (routine) | 函数 |
|---|---|
| A | 建立 DFHTC 消息号 2501 (Msg 太长,请重新提交) |
| D | 建立 DFHTC 消息号 2502 (TCT 搜索错误) |
| F | 建立 DFHTC 消息号 2507 (已拒绝输入事件) |
| H | 建立 DFHTC 消息号 2506 (已拒绝输出事件) |
| I | 建立 DFHTC 消息号 2513 (输出长度为零) |
| J | 建立 DFHTC 消息号 2514 (未提供输出区域) |
| K | 建立 DFHTC 消息号 2515 (超出输出区域) |
| L | 建立 DFHTC 消息号 2517 (单元检查 SNS=ss , S.N.O。) |
| M | 建立 DFHTC 消息号 2519 (单元异常, S.N.O。) |
| N | 生成标准消息插入,例如 "at term tttt" |
| O | 为消息 DFHTC2500 生成特殊插入 |
| Q | 使用 MEME RETRIEVE_MESSAGE 调用从 ME 域检索消息文本后,写入终端导致错误 |
| R | 使用对 ME 域的 MEME SEND_MESSAGE 调用写入目标 (CSMT 或 CSTL) |
| T | 获取终端主存储区 (消息构建区) |
| V | 建立 DFHTC 消息号 2511 (写请求不正确) |
| W | 建立 "返回码 xx" 消息插入 |
| X | 将十六进制字节转换为 2 可打印字符 |
| ab | 建立 DFHTC 消息号 2534 (目标不正确) |
| AE | 建立 DFHTC 消息号 2500 (Line | CU | Terminal out of service) |
| AF | 获取终端统计信息 |
| BA | 获取行统计信息 |
| BB | 建立 DFHTC 消息号 2516 (单元检查 SNS=ss) |
| BC | 建立 DFHTC 消息号 2518 (单元异常) |
| BF | 建立 DFHTC 消息号 2521 (未确定单元错误) |
| CA | 建立 DFHTC 消息号 2522 (需要拦截) |
| DB | 建立 DFHTC 消息号 2529 (未经请求的输入) |
| ME | 初始化用于调用 ME 域的参数列表 |
| 错误码 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X'81 ' | X'82 ' | X'84 ' | X'85 ' | X'87 ' | X'88 ' | X'8C' | X'8D' | X'8E' | X'8F' | X' 94 ' | X' 95 ' | X' 96 ' | X' 97 ' | X' 99 ' | X'9A' | X'9F' |
| ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME | ME |
| T | ||||||||||||||||
| AE | ||||||||||||||||
| D | ||||||||||||||||
| V | ||||||||||||||||
| DB | ||||||||||||||||
| F | ||||||||||||||||
| H | ||||||||||||||||
| I | ||||||||||||||||
| J | ||||||||||||||||
| K | ||||||||||||||||
| BB | ||||||||||||||||
| L | ||||||||||||||||
| BC | ||||||||||||||||
| M | ||||||||||||||||
| BF | ||||||||||||||||
| CA | ||||||||||||||||
| ab | ||||||||||||||||
| A | ||||||||||||||||
| O | ||||||||||||||||
| W | W | |||||||||||||||
| AF | ||||||||||||||||
| Q | ||||||||||||||||
| X | X | X | X | |||||||||||||
| N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | ||
| BA | BA | BA | ||||||||||||||
| R | R | R | R | R | R | R | R | R | R | R | R | R | R | R | R | |
| 错误代码 | 缺省操作 |
|---|---|
| X'81 ' | 异常终止事务 |
| X'82 ' | 无 |
| X'84 ' | 根据需要使线路进入或退出服务 |
| X'85 ' | 异常终止事务 |
| X'87 ' | 未请求的输入消息 |
| X'88 ' | 使线路 (或终端) 不服务 |
| X'8C' | 使线路 (或终端) 不服务 |
| X'8D' | 异常终止事务 |
| X'8E' | 异常终止事务 |
| X'8F' | 异常终止事务 |
| X' 94 ' | I/O 错误测试 |
| X' 95 ' | I/O 错误测试 |
| X' 96 ' | I/O 错误测试 |
| X' 97 ' | I/O 错误测试 |
| X' 99 ' | 使线路 (或终端) 不服务 |
| X'9A' | 下一个操作的测试行 |
| X'9F' | 异常终止事务 |
模块
DFHTACP
出口
没有为此功能提供全局用户出口点。
跟踪
为终端异常情况程序提供了以下点标识:
- AP 00E6,其跟踪级别为 TC 1。
DFHTACP 在调用 DFHTEP 之前和之后立即提供跟踪条目。