何时调用动态路由程序

CICS® 可以为符合条件的程序链接请求调用动态路由程序。

CICS 在以下情况下调用动态路由程序:
  • 执行链接目标程序之前,需要执行以下操作:
    • 获取应将链接路由至区域的 SYSID。
      注: 将调用者的通信区域 (COMMAREA) 的地址传递到路由程序,因此可以通过 COMMAREA 内容来路由请求 (如果合适)。
    • 向路由程序通知静态路由的请求。 如果程序定义为 DYNAMIC (YES) 或未定义,但调用者在 LINK 命令的 SYSID 选项上指定远程区域的名称,那么会发生此情况。

      在这种情况下,指定目标区域明显优先于由动态路由程序返回的任何 SYSID。

  • 如果路由中出错 — 例如,如果由动态路由程序返回的 SYSID 不可用或未知,或者指定目标区域中的链接失败 — 要提供一个备用 SYSID。 该过程进行迭代,直至程序链接成功或动态路由程序的返回码不等于零。 如果返回码不为零,那么 CICS 会尝试在路由区域中执行程序。
    特殊情况! 注意!
    如果满足以下所有条件,那么路由选择调用将失败, 但不会针对路由选择错误重新调用路由程序:
    1. 未在本地区域上定义程序。
    2. 程序自动安装在本地区域上未处于活动状态。
    3. 在路由选择调用上,路由程序将链路请求路由到本地区域。
    因此,要动态路由 路由程序可能在本地路由的程序链接请求,您应该执行以下任一操作:
    1. 在本地区域上安装程序定义,指定 DYNAMIC (YES)。
    2. 将程序自动安装设置为活动,使用它来安装指定 DYNAMIC (YES) 的定义。
  • 链接请求完成后(如果由路由程序请求重新调用)。
  • 如果将链接请求发送给指定远程系统后检测到异常(如果是由路由程序请求重新调用)。
  • 在工作单元结束时,如果路由程序请求了重新调用,那么要发出工作单元已完成的通知。 CICSPlex ® SM 工作负载管理使用这些通知来管理 UOW 亲缘关系。

图 1 显示了调用动态路由程序的点。