"终端未知" 条件退出 XALTENF 和 XICTENF
当相互通信的 CICS® 区域同时使用 SHIPPABLE 终端定义和自动事务启动 (ATI) 时,可能会发生 "终端未知" 情况。 如果使用自动安装,那么极有可能出现此情况。
在终端拥有区域 (TOR) 中使用 SHIPPABLE 属性定义的终端不需要已连接的应用程序拥有区域 (AOR) 中的定义。 如果需要支持事务路由, CICS 会将定义的副本从 TOR 交付到 AOR。 有关更多信息,请参阅 送货终端和连接定义。
自动事务启动 (ATI)
ATI 发生在内部生成的请求导致事务启动时 (例如,应用程序发出 EXEC CICS START 命令时或达到瞬时数据触发级别时)。
- 时间间隔控制程序 处理 START 命令,检查终端是否在本地系统中已知,以及 (当任何 START 时间间隔过后) 调用终端分配程序。
- 终端分配程序 由时间间隔控制程序或瞬时数据触发机制调用,并检查终端在本地系统中是否已知。 如果请求的终端是远程的,则终端分配程序向远程系统发送 ATI 请求,该请求向远程系统发起事务路由回本地系统。
有关 ATI 的指导信息,请参阅 由 ATI 启动的事务的传统路由。
"终端未知" 条件
当针对区域中未知的终端发出 ATI 请求时,会出现 "终端未知" 情况。 在对 SHIPPABLE 终端进行任何事务路由之前,以及在将终端的定义从 TOR 交付到 AOR 之前,可以在 AOR 中针对该终端发生 ATI 请求。
如果发生 "终端未知" 情况,那么时间间隔控制程序和终端分配程序都将拒绝事务启动请求作为 "TERMIDERR"。
退出 XALTENF 和 XICTENF
为了处理 "终端未知" 情况, CICS 在时间间隔控制程序中提供全局用户出口 XICTENF ,在终端分配程序中提供出口 XALTENF。
当 EXEC CICS START 命令调用时间间隔控制程序后出现 "终端未知" 情况时, CICS 驱动器退出 XICTENF。 当瞬时数据触发器级别或时间间隔控制程序调用终端分配程序后发生 "终端未知" 情况时, CICS 会驱动 XALTENF 出口。 请注意, EXEC CICS START 命令可能会导致调用这两个出口。
出口程序必须指示终端是否存在于另一个系统上,如果存在,那么该终端存在于哪个系统上。 CICS 将数据传递到出口程序以帮助建立此信息。 可以在两个出口点使用相同的出口程序。 CICS 提供了一个样本出口程序 DFHXTENF,可用于这两个出口,并且可以在处理某些典型情况时保持不变。
这些出口旨在处理除 TOR 以外的 CICS 区域中发生的 "终端未知" 情况。 对于 TOR/AOR 对,请在 AOR 中启用出口程序。 出口无法处理 TOR 中的 "终端未知" 条件,出口程序通常不应在那里启用。 但是,如果存在多个 TOR ,那么可能需要在每个 TOR 中启用出口程序以处理对其他 TOR 拥有的终端的请求。 在这种情况下,出口程序必须识别应由该系统拥有的终端并拒绝请求 ("UERCTEUN")。 尽管出口提供了尽可能多的数据,但程序的逻辑完全取决于您的系统设计。 对于最复杂的情况,一个简单的解决方案是使每个终端的名称反映其拥有区域的网络名或 sysid。
出口返回的数据
- UERCTEUN
- 终端不存在
- UERCNETN
- 已返回 TOR 的网络名
- UERCSYSI
- 返回了 TOR 的 Sysid。
- UERCTEUN
- 终端不存在
- UERCNETN
- 已返回 TOR 的网络名
- UERCSYSI
- 返回了 TOR 的 Sysid。
对于返回码 UERCNETN 和 UERCSYSI ,出口程序必须将终端拥有区域的网络名或 sysid 放在字段 UEPxxNTO 或 UEPxxSYO 中 (其中 xx 是 AL 或 IC)。
如果终端拥有区域是 z/OS® Communications Server 通用资源的成员,那么出口程序应将终端的网络名放在 UEPxxNNO字段中。 有关将 ATI 与 z/OS Communications Server 通用资源配合使用的信息,请参阅 将 ATI 与通用资源配合使用。