使用 Link3270 会话方式
会话方式允许客户机使用相同的网桥设施运行多个事务。 它比在单个事务方式下运行这些事务中的每个事务更高效。
- 分配网桥设施
- 正在运行的事务
- 删除网桥设施
- 交付大型消息
- 发生通信故障时的恢复
过程
- 创建消息
在发送每条消息之前,必须执行以下步骤:
- 将缺省网桥消息头 (BRIH) 移动到消息区域中。
- 对于除 allocate 以外的所有消息,将 BRIH_FACILITY 设置为 allocate 上返回的值。
- 根据需要修改消息的其他参数。
- 分配网桥设施要分配网桥设施,客户机程序必须将网桥消息头 (BRIH) 的 BRIH_TRANSACTIONID 字段的值设置为 BRIHT-ALLOCATE-FACILITY。 有关 BRIH 的描述,请参阅 入站 Link3270 消息头 (BRIH) 和 出站 Link3270 消息头 (BRIH) 。 还可以选择定义以下参数,但将忽略消息中的其他字段。
- BRIH-设施保持时间
- 类似于 BRIH-FACILITYLIKE
- BRIH终端
- BRIH-NETNAME
注: 在运行第一个应用程序事务之前,不会验证客户机程序提供的 BRIH-FACILITYLIKE 值。 仅当处理第一个应用程序事务时,才会确定 AOR 区域,并且可以在所选 AOR 中验证类似事实的值。例如,要使用提供的缺省 BRIH 和常量来分配网桥设施:Working-Storage Section ... copy dfhbrico. ... Linkage Section 01 msg-area copy DFHBRIHO. ... Procedure Division. ... move brih-default to msg-area. set briht-allocate-facility to true. EXEC CICS LINK PROGRAM('DFHL3270') COMMAREA(msg-area) LENGTH(length of brih) DATALENGTH(len) END-EXEC ... - 以会话方式运行事务
通过在 Link3270 请求消息中的多个 BRIV 向量中提供所有终端输入,可以在 Link3270 网桥下作为简单的 "非会话式" 事务运行传统对话事务 (与终端进行多次交互)。 详情请参阅 “会话交易 ”。
伪对话通常涉及一系列事务,每个事务都由先前的事务发起,也可能传递一些数据。 用户事务可以通过不同方式定义要运行的下一个事务的名称。 详情请参阅 “伪会话交易 ”。
- 客户机程序必须在网桥消息头 (BRIH) 的 BRIH_TRANSACTIONID 字段中提供用户事务的名称,并将 BRIH-FACILITY 设置为分配请求返回的值。还可以选择定义以下参数,但将忽略 BRIH 中的其他字段。
- 布里赫-达塔利特
- BRIH-会话任务
- BRIH-GETWAITINTERVAL
- BRIH-ADSDESCRIPTOR
- BRIH-注意ID
- BRIH-启动代码
- BRIH-光标位置
例如,要使用提供的缺省 BRIH 和常量来运行事务 NACT:Working-Storage Section.. copy dfhbrico.. Linkage Section. 01 msg-area. copy DFHBRIHO. 03 msg-vectors pic x(2000).. Procedure Division. move brih-default to msg-area move 'NACT' to brih-transactionid move facility to brih-facility move brih-datalength to len EXEC CICS LINK PROGRAM('DFHL3270') COMMAREA(msg-area) LENGTH(length of msg-area) DATALENGTH(len) END-EXEC.. - 您的客户机程序还必须为任何输入命令创建 BRIV 向量。注: 添加 BRIV 时,请始终记住递增BRIH-DATAL思。例如:
move briv-receive-map-default to briv-in. move 'DFH0MNA ' to briv-rm-mapset. move 'ACCTMNU ' to briv-rm-map. move '422' to briv-rm-cposn. move length of acctmnui to briv-rm-data-len. set address of acctmnui to address of briv-rm-data. move low-values to acctmnui. add briv-rm-data-len to briv-input-vector-length. add briv-input-vector-length to brih-datalength.
- 客户机程序必须在网桥消息头 (BRIH) 的 BRIH_TRANSACTIONID 字段中提供用户事务的名称,并将 BRIH-FACILITY 设置为分配请求返回的值。
- 删除网桥设施
当所有会话活动完成时,客户机可以删除网桥设施。 为此,客户机程序必须将 BRIH_TRANSACTIONID 字段的值设置为 BRIHT-DELETE-FACILITY ,并将 BRIH-FACILITY 设置为 ALLOCATE 请求返回的值。 将忽略消息中的其他字段。
如果未显式删除网桥设施,那么如果在 BRIH-FACILITYKEEPTIME 字段或 BRMAXKEEPTIME 系统初始化参数中指定的时间内未使用该网桥设施,那么 CICS® 会将其调度为自动删除。 使用较小的时间间隔。
例如,要使用提供的缺省 BRIH 和常量来删除网桥设施:Working-Storage Section.. copy dfhbrico. Linkage Section. 01 msg-area. copy DFHBRIHO.. Procedure Division. move brih-default to msg-area set briht-delete-facility to true move facility to brih-facility move brih-datalength to len EXEC CICS LINK PROGRAM('DFHL3270') COMMAREA(msg-area) LENGTH(length of brih) DATALENGTH(len) END-EXEC.. - 传递大型消息
如果来自用户事务的输出消息大于在请求上传递的 COMMAREA 的大小,那么网桥机制将返回一个 BRIH 和所需数量的完整 BRIV 向量以适合返回的 COMMAREA。
如果无法将整个出站消息放入 COMMAREA 中,那么字段BRIH-REMAININGDATAL思将设置为非零值。 然后,客户机可以发出一个或多个请求以获取其余数据。 为此,客户机程序必须将 BRIH-TRANSACTIONID 字段的值设置为 BRIHT-GET-MORE-MESSAGE ,并将 BRIH-FACILITY 设置为分配请求返回的值。 将忽略消息中的其他字段。
这样, CICS 可以返回错误信息。 客户机应遵循 Translation considerations 中描述的 CICS 有关 COMMAREA 长度的建议:EXEC CICS 命令中的 LENGTH 选项。
- 从连接故障恢复
如果在接收到响应消息之前通信连接失败,那么客户机可以重新连接到同一路由器,并请求再次发送该消息。 为此,客户机程序必须将 BRIH-TRANSACTIONID 字段的值设置为 BRIHT-RESEND-MESSAGE ,并将 BRIH-FACILITY 设置为分配请求返回的值。 将忽略消息中的其他字段。
如果成功,出站 Link3270 网桥消息将包含尽可能多的可拟合到 COMMAREA 中的消息。 如果路由器或 AOR CICS 区域发生故障,那么返回的消息指示 facilitytoken 未知。
如果不成功,那么输出是带有相应 BRIH-RETURNCODE 的 BRIHT-RESEND-MESSAGE 消息。
注:- 必须在分配请求的 BRIH-FACILITYKEEPTIME 中指定的时间间隔到期之前发送重新发送请求。 否则,将删除网桥设施和未完成的消息。
- 可以使用字段 BRIH-SEQNO 来检查先前请求是否有效。