分布式路由程序可以执行哪些操作
本主题概述了分布式路由程序可以对非终端相关 START 请求的路由执行的操作。
更改目标 CICS 区域
传递到分布式路由程序的通信区域的 DYRSYSID 字段最初包含要将请求路由到的缺省目标区域的系统标识 (sysid)。 这派生自路由区域上已安装的事务定义的 REMOTESYSTEM 选项的值。 如果未指定 REMOTESYSTEM ,那么传递的 sysid 是本地 CICS® 区域的 sysid。
当调用它进行路由选择时,分布式路由程序可以通过更改 DYRSYSID 中的值来更改目标区域。
如果指定的 sysid 无效或找不到,那么会将 SYSIDERR 返回到分布式路由程序,这可能会通过返回另一个 sysid 来处理错误。 有关详细信息,请参阅 处理错误: 如果路由选择中发生错误。
如果路由程序在为通知,路由完成,事务启动,事务终止或异常终止调用 sysid 时更改了 sysid ,那么更改没有任何作用。
告知 CICS 是否路由请求
当调用路由程序进行路由时,如果您希望路由请求 (无论是否更改了任何值) ,请在通信区域的 DYRRETC 字段中向 CICS 返回零值。
- 如果 sysids 是相同的 CICS 在本地执行请求。
- 如果两个 sysids 不相同,那么 CICS 会将请求路由到远程 CICS 区域。
如果希望 CICS 拒绝 START 请求,请返回非零值。 EXEC CICS START 命令接收 SYSIDERR 条件,其中 RESP2 值指示 START 请求已被路由程序拒绝。
当针对通知,路由完成,事务启动,事务终止或异常终止调用路由程序时,返回 DYRRETC 中的值将无效。
告知 CICS 是否支持与非终端相关的 START 请求的菊花链
当调用路由程序进行路由时,如果要对路由请求进行菊花链式支持,请在通信区域或容器 (由 DFHDYPDS 副本映射) 的 DYRDCYN 字段中返回值 Y。
在目标区域中接收到动态路由的非终端 EXEC CICS START 请求时, CICS 会检查请求的发起方是否支持菊花链。 如果支持菊花链, CICS 会将发起者的数据(包含在DFHDYPDS的DYRUSERN字段中)原封不动地传递给分布式路由的本地实例,并将DYRDCYN字段设置为N。 分布式路由程序负责决定是否继续对非终端 EXEC CICS START 请求进行菊花链处理,并相应地更新DYRDCYN和DYRUSERN字段的值。
CICSPlex ® SM 路由实现不支持动态路由的 START 请求的菊花链。
处理错误: 如果在路由选择中发生错误
如果在路由选择中发生错误,例如,如果分布式路由程序返回的 sysid 不可用或未知,那么将再次调用路由程序。
- 您可以尝试通过更改 sysid 并在 DYRRETC 中发出返回码 "0" 来将请求路由到其他目标区域。
如果此区域也不可用,那么将针对路由选择错误再次调用路由程序。 在字段 DYRCOUNT 中传递为此请求的路由目的调用路由程序的次数的计数。 使用此计数可帮助您决定何时停止尝试路由请求。
- 您可以通过在 DYRRETC 中发出非零返回码来告知 CICS 不要继续尝试路由请求。