检查 DTP 命令的结果

检查来自 DTP 命令的响应可以分为三个阶段。

这些阶段包括:
  1. 测试请求失败
  2. 对对话中收到的指标进行测试
  3. 正在测试对话状态。

针对请求失败的测试与针对其他 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 字段的交互方式。

表 1. 某些 EIB 字段之间的交互-所有 DTP 命令
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 命令进行交互。

表 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 映射对话中的状态过渡