如何修改初始终端数据

动态路由程序不得执行 EXEC CICS RECEIVEEXEC CICS GDS RECEIVE 命令,因为这将阻止路由至事务获取初始终端数据。

CICS® 中继程序 DFHAPRT 将用户初始终端输入的 副本 放置到单独的缓冲区中。 此信息包含 APPC 映射和未映射对话的 SNA 表示服务头。 在从 DFHAPRT 传递到动态路由程序的通信区域中提供指向此缓冲区 (DYRBPNTR) 及其长度 (DYRBLGTH) 的指针。

请注意:
  • DYRBPNTR 指向的缓冲区包含到达消息的第一个请求单元 (RU) 的数据。 如果 RU 大小足以容纳完整消息,那么缓冲区包含完整消息。 但是,如果 RU 大小小于消息长度,那么缓冲区仅包含来自第一个 RU 的数据 (即使缓冲区本身足以容纳完整消息)。
  • 长度字段 DYRBLGTH 是 消息的长度,而不是缓冲区中数据的长度。 仅当完整消息到达单个 RU 时, DYRBLGTH 才包含缓冲区中的数据长度。
  • 如果满足以下所有条件,那么不会将初始终端输入数据传递到路由程序:
    1. 路由程序正在 AOR 中运行。
    2. 原始请求是从 TOR 路由的事务。
    3. 发端设施是 APPC 并行会话。

由于此时尚未查询事务概要文件,因此除非在 TYPETERM 定义上指定了 UCTRAN (YES) ,否则不会对输入数据执行大写转换。

有时您可能希望修改用户输入的初始数据。 (例如,如果您使用通信区的字段 DYRTRAN 来更改远程事务的标识,那么可能需要执行此操作。) 要修改输入数据,您的路由程序在调用路由选择时应执行以下操作
  1. 将 DYRBPNTR 指向的输入数据复制到长度为 DYRBLGTH 的指定变量中。
  2. 修改指定变量中的数据。
  3. 使用 EXEC CICS RETURN 命令的 INPUTMSG 选项使修改后的数据可供应用程序使用。

有关在 EXEC CICS RETURN 命令上使用 INPUTMSG 的指导信息,请参阅 INPUTMSG中描述的其他方法。 有关 INPUTMSG 选项的编程信息,请参阅 RETURN

注: 如果在修改输入数据后,由于路由到所选事务时发生错误而重新调用动态路由程序,那么应 "记住" 它已修改原始用户输入。