动态路由程序可以执行哪些操作
以下是动态路由程序可以对路由事务执行的操作的摘要。
更改目标 CICS 区域
动态路由程序可以通过修改要将事务路由到的缺省 CICS 区域的系统标识 (sysid) 和网络名来更改目标 CICS® 区域。 有关详细信息,请参阅 更改目标 CICS 区域
更改程序名
对于定义为 DYNAMIC 的事务,在调用路由程序时,通信区域中的 DYRLPROG 字段包含与要路由的事务相关联的初始程序的名称。 如果您决定在本地路由事务,那么可以使用此字段来指定要运行的备用程序。 例如,如果所有远程 CICS 区域都不可用,并且无法路由事务,那么您可能希望在本地 CICS 终端拥有区域中运行程序以向用户发送相应的消息。
告知 CICS 是路由还是终止事务
当调用路由程序进行路由时,它可以选择是应该路由还是终止事务。
如果要路由事务 (无论是否更改了任何值) ,请在通信区域的 DYRRETC 字段中向 CICS 返回零值。 当您将控制权返回给返回码为零的 CICS 时, CICS 首先将返回的 SYSID 与其自己的本地 SYSID 进行比较:
- 如果 SYSID 相同 (或者返回的 SYSID 为空白) ,那么 CICS 将在本地执行事务。
- 如果两个 SYSID 不相同,那么 CICS 会使用远程事务名称将事务路由到远程 CICS 区域。
如果要通过消息或异常结束来终止事务,请设置返回码 X' 8 ' (或除 X' 4'以外的任何其他非零返回码)。
如果要在不发出消息或异常终止的情况下终止事务,请设置返回码 X' 4 '。
警告: 为 APPC 事务路由设置 X' 4 ' 返回码会导致不可预测的结果,应该避免。
当为通知或在事务终止时调用路由程序时,返回 DYRRETC 中的值将无效。
从路由的事务接收信息
如果动态路由程序选择在路由事务结束时重新调用,那么它可以通过监视其输出通信区域和输出 TIOA 来获取有关事务的信息。 有关详细信息,请参阅 从路由事务接收信息。
修改应用程序的通信区域
有时,您想要修改路由应用程序的通信区域。 例如,如果路由程序更改远程事务的标识,那么可能还需要更改传递给路由应用程序的输入通信区域。 路由程序的通信区域的字段 DYRACMAA 使您能够执行此操作; 它是指向应用程序的通信区域的指针。
如果用户应用程序使用通道而不是通信区域,请参阅 修改应用程序的容器。