异常终止处理
可以使用此伪码示例来处理 3270 事务异常终止。
如果 3270 事务异常结束,那么将对网桥出口进行异常结束调用。 此调用在事务结束时发生-不能用于实现异常终止处理程序。
如果出口程序需要应答客户机,那么它无法通过发出 PUT CONTAINER 命令来执行此操作。 由于 BTS 活动始终可恢复,因此将回退该命令。 一种解决方案是出口程序将消息写入不可恢复的瞬时数据或临时存储器队列。 例如,它可以将此任务委派给子活动。
以下示例包含用于处理 3270 事务异常终止的伪代码。 Requestor 活动是网桥出口的子代; 它处理异常终止。
网桥出口程序
Abend.
encode abend-in-buffer from 3270-msg-out-buffer
EXEC CICS DEFINE ACTIVITY ('Requestor')
TRANSID('ABE1')
RESP(data-area) RESP2(data-area) END-EXEC.
EXEC CICS PUT CONTAINER('Abend')
ACTIVITY('Requestor')
FROM(abend-in-buffer)
RESP(data-area) RESP2(data-area) END-EXEC.
EXEC CICS LINK ACTIVITY('Requestor')
RESP(data-area) RESP2(data-area) END-EXEC.
EXEC CICS CHECK ACTIVITY('Requestor')
COMPSTATUS(status) ABCODE(a)
RESP(data-area) RESP2(data-area) END-EXEC
If status NOT = DFHVALUE(NORMAL)
EXEC CICS ABEND ABCODE(a)
NODUMP
RESP(data-area) RESP2(data-area) END-EXEC.
End-If..
EXEC CICS RETURN END-EXEC
Requestor 活动
WHEN DFH-Initial
EXEC CICS GET CONTAINER('Abend')
INTO(msg-in-buffer)
RESP(data-area) RESP2(data-area) END-EXEC.
decode msg-in-buffer
output a message to a non-recoverable
TD or TS queue.
EXEC CICS RETURN END-EXEC
出口程序发出 LINK ACTIVITY (而不是 RUN ACTIVITY SYNCHRONOUS) 命令来激活 Requestor 活动。 这是必需的,因为子代必须在与出口程序相同的工作单元中执行。