检查 DTP 命令的结果
检查来自 DTP 命令的响应可以分为三个阶段。
这些阶段包括:
- 测试请求失败
- 对对话中收到的指标进行测试
- 正在测试对话状态。
针对请求失败的测试与针对其他 EXEC CICS® 命令的测试相同,在此情况下,可使用 HANDLE CONDITION 或 RESP 进行处理。 EIBRCODE 还将包含错误代码。 请注意,当接收到 ISSUE ABEND 并且要进行处理时,应该使用 HANDLE ABEND 而不是 HANDLE CONDITION。
如果请求未失败,那么可以测试在对话中接收到的指示符。 这些将返回到 EIB 中的应用程序。 以下 EIB 字段与所有 DTP 命令相关:
- EIBERR
- 当设置为 X'FF ' 时,指示对话上发生了错误。 原因在 EIBERRCD 中。 这可能是由于伙伴事务发出的 ISSUE ERROR , ISSUE ABEND 或 SYNCPOINT ROLLBACK 命令所致。 EIBERR 可以作为在对话处于 接收状态 (状态 5) 时可以发出的任何命令的结果进行设置,也可以遵循导致传输到伙伴系统的任何命令。 在每个 DTP 命令之后,与 EIBFREE 和 EIBSYNRB 一起测试 EIBERR 是最安全的。
- EIBERRCD
- 包含与 EIBERR 关联的错误代码。 如果未设置 EIBERR ,那么不会使用此字段。
- EIBFREE
- 当设置为 X'FF ' 时,指示伙伴事务已结束对话。 应与 EIBERR 和 EIBSYNC 一起进行测试,以了解如何结束对话。
- EIBSIG
- 当设置为 X'FF ' 时,指示伙伴事务或系统已发出 ISSUE SIGNAL 命令。
- EIBSYNRB
- 当设置为 X'FF ' 时,指示伙伴事务或系统已发出 SYNCPOINT ROLLBACK 命令。 (这仅与同步级别 2 的对话相关。)
表 1 显示了这些 EIB 字段的交互方式。
| EIB-ERR | EIB-免费 | EIB-SYNRB | EIBERRCD | 描述 |
|---|---|---|---|---|
| X'FF ' | X'00 ' | X'00 ' | X'08890000 ' X'08890001 ' |
伙伴事务已发送 ISSUE 错误 |
| X'FF ' | X'00 ' | X'00 ' | X'08890100 ' X'08890101 ' |
伙伴系统发送了 ISSUE 错误 |
| X'FF ' | X'FF ' | X'00 ' | X'08640000 ' | 伙伴事务已发送 ISSUE ABEND |
| X'FF ' | X'FF ' | X'00 ' | X'08640001 ' | 伙伴系统已发送 ISSUE ABEND |
| X'FF ' | X'FF ' | X'00 ' | X'08640002 ' | 伙伴资源已超时 |
| X'FF ' | X'FF ' | X'00 ' | X'1008600B' | 由于协议错误,会话失败 |
| X'FF ' | X'FF ' | X'00 ' | X'A0000100' | 临时会话失败 |
| X'FF ' | X'FF ' | X'00 ' | X 'A0010100' | 已触发 RTIMOUT。 (该任务在等待终端输入时已超时。) |
| X'FF ' | X'FF ' | X'00 ' | X'10086032 ' | 未正确指定使用 CONNECT PROCESS 发送的 PIP 数据 |
| X'FF ' | X'FF ' | X'00 ' | X'10086034 ' | 伙伴系统不支持映射的对话 |
| X'FF ' | X'FF ' | X'00 ' | X '080F6051' | 伙伴事务安全性检查失败 |
| X'FF ' | X'FF ' | X'00 ' | X'10086041 ' | 伙伴事务不支持在 CONNECT PROCESS 上请求的同步级别 |
| X'FF ' | X'FF ' | X'00 ' | X'10086021 ' | 伙伴系统无法识别伙伴事务名称 |
| X'FF ' | X'FF ' | X'00 ' | X '084C0000' | 伙伴系统无法启动伙伴事务 |
| X'FF ' | X'FF ' | X'00 ' | X '084B6031' | 伙伴系统暂时无法启动伙伴事务 |
| X'FF ' | X'00 ' | X'FF ' | X'08240000 ' | 伙伴事务或系统已发出 SYNCPOINT ROLLBACK |
| X'00 ' | X'00 ' | — | — | 命令已成功完成。 |
此外,以下 EIB 字段仅与 RECEIVE 和 CONVERSE 命令相关:
- EIBCOMPL
- 当设置为 X'FF ' 时,指示已接收一次发送的所有数据。 此字段与 RECEIVE NOTRUNCATE 命令结合使用。
- EIBCONF
- 当设置为 X'FF ' 时,指示伙伴事务已发出 SEND CONFIRM 命令并且需要响应。
- EIBEOC
- 当设置为 X'FF ' 时,指示已接收到链结束指示符。 此字段通常与成功的 RECEIVE 命令相关联。
- EIBNODAT
- 当设置为 X'FF ' 时,指示未接收到任何应用程序数据。
- EIBRECV
- 仅在未设置 EIBERR 时使用。 当 EIBRECV 开启 ( X'FF ' ) 时,需要另一个 RECEIVE。
- EIBSYNC
- 当设置为 X'FF ' 时,指示伙伴事务或系统已请求同步点。 (这仅与同步级别 2 的对话相关。)
表 2 显示了这些 EIB 字段中的某些字段如何针对 RECEIVE 和 CONVERSE 命令进行交互。
| EIB-ERR | EIB-免费 | EIB-RECV | EIB-SYNC | EIB-CONF | 描述 |
|---|---|---|---|---|---|
| X'00 ' | X'00 ' | X'00 ' | X'00 ' | X'00 ' | 伙伴事务或系统已发出 SEND INVITE WAIT。 本地程序现在处于发送状态。 |
| X'00 ' | X'00 ' | X'00 ' | X'FF ' | X'00 ' | 伙伴事务或系统已发出 SEND INVITE ,后跟 SYNCPOINT。 本地程序现在处于同步状态。 |
| X'00 ' | X'00 ' | X'00 ' | X'00 ' | X'FF ' | 合作伙伴事务或系统已发出 SEND INVITE CONFIRM。 本地程序现在处于 confsend 状态。 |
| X'00 ' | X'00 ' | X'FF ' | X'00 ' | X'00 ' | 伙伴事务或系统已发出 SEND 或 SEND WAIT。 本地程序处于接收状态。 |
| X'00 ' | X'00 ' | X'FF ' | X'FF ' | X'00 ' | 伙伴事务或系统已发出 SYNCPOINT。 本地程序处于同步接收状态。 |
| X'00 ' | X'00 ' | X'FF ' | X'00 ' | X'FF ' | 伙伴事务或系统已发出 SEND CONFIRM。 本地程序处于 confreceive 状态。 |
| X'00 ' | X'FF ' | X'00 ' | X'00 ' | X'00 ' | 伙伴事务或系统已发出 SEND LAST WAIT。 本地程序处于空闲状态。 |
| X'00 ' | X'FF ' | X'00 ' | X'FF ' | X'00 ' | 伙伴事务或系统发出了 SEND LAST ,后跟 SYNCPOINT。 本地程序处于无同步状态。 |
| X'00 ' | X'FF ' | X'00 ' | X'00 ' | X'FF ' | 伙伴事务或系统已发出 SEND LAST CONFIRM。 本地程序处于 conffree 状态。 |
在分析 EIB 字段之后,您可以测试对话状态以确定接下来可以发出哪些 DTP 命令。 请参阅 APPC 映射对话中的状态过渡。