修改初始终端数据
动态路由程序不得执行 EXEC CICS RECEIVE 或 EXEC CICS GDS RECEIVE 命令,因为这将阻止路由至事务获取初始终端数据。
CICS ® 中继程序 DFHAPRT 将用户初始终端输入的 副本 放置到单独的缓冲区中。 此信息包含 APPC 映射和未映射对话的 SNA 表示服务头。 在从 DFHAPRT 传递到动态路由程序的通信区域中提供指向此缓冲区 (DYRBPNTR) 及其长度 (DYRBLGTH) 的指针。
请注意:
- DYRBPNTR 指向的缓冲区包含到达消息的第一个请求单元 (RU) 的数据。 如果 RU 大小足以容纳完整消息,那么缓冲区包含完整消息。 但是,如果 RU 大小小于消息长度,那么缓冲区仅包含来自第一个 RU 的数据 (即使缓冲区本身足以容纳完整消息)。
- 长度字段 DYRBLGTH 是 消息的长度,而不是缓冲区中数据的长度。 仅当完整消息到达单个 RU 时, DYRBLGTH 才包含缓冲区中的数据长度。
- 如果满足以下所有条件,那么不会将初始终端输入数据传递到路由程序:
- 路由程序正在 AOR 中运行。
- 原始请求是从 TOR 路由的事务。
- 发端设施是 APPC 并行会话。
由于此时尚未查询事务概要文件,因此除非在 TYPETERM 定义上指定了 UCTRAN (YES) ,否则不会对输入数据执行大写转换。
有时您可能希望修改用户输入的初始数据。 (例如,如果您使用通信区的字段 DYRTRAN 来更改远程事务的标识,那么可能需要执行此操作。) 要修改输入数据,当调用路由程序进行路由选择时,您的路由程序应该:
- 将 DYRBPNTR 指向的输入数据复制到指定变量中,长度为 DYRBLGTH
- 修改指定变量中的数据
- 使用 EXEC CICS RETURN 命令的 INPUTMSG 选项使修改后的数据可供应用程序使用。
有关在 EXEC CICS RETURN 命令上使用 INPUTMSG 的指导信息,请参阅 INPUTMSG中描述的其他方法。 有关 INPUTMSG 选项的编程信息,请参阅 RETURN。
注: 如果在修改输入数据后,由于路由到所选事务时发生错误而重新调用动态路由程序,那么应 "记住" 它已修改原始用户输入。