IPIC 连接的会话队列管理样本出口程序:DFH$XISQ

DFH$XISQ 是样本 XISQUE 出口程序,可供您用作设计自己的全局用户出口程序的基础。 它所实施的基本功能与 IPCONN 资源定义的 QUEUELIMIT 和 MAXQTIME 参数所提供的基本功能相同。

关于 DFH$XISQ

如果未启用 XISQUE 出口,那么 CICS® 使用 QUEUELIMIT 和 MAXQTIME 参数来控制分配请求队列的存在和长度。 如果启用出口,那么 IPCONN 定义中的参数将传递到 XISQUE 出口程序,这可以更改使用这些参数的方式。

程序使用 CICS 传递的特定于出口的参数来确定 IPCONN 的状态并请求相应的操作,如下所示:

  1. IPCONN 正常运行; 队列可能存在,但长度短。

    在这种情况下,出口程序返回 UERCAQUE 以指示 CICS 将请求排队。

  2. 来自伙伴系统的响应比请求速率慢,并且队列长度已增长到 QUEUELIMIT 参数上指定的限制。 伙伴系统仍在正常运行,但超负荷。

    在这种情况下,出口程序返回 UERCAPUR 以指示 CICS 要清除请求。

  3. 队列已达到 QUEUELIMIT 参数指定的限制,期望加入队列的请求需要比 MAXQTIME 参数定义的时间更长的时间才能满足。 (请求完成的估计时间是通过将自队列首次形成以来经过的成功请求数除以该队列形成以来经过的时间来计算的。 这些统计信息将传递到参数列表中的出口。)
    这些条件用于确定连接未正确运行,并且继续对任务进行排队无济于事。 在这种情况下:
    • 该出口返回 UERCAKLL ,请求 CICS 从连接中清除所有排队的用户请求。 将 SYSIDERR 条件返回到应用程序。
    • CICS 发出消息 DFHZCaaaa 以警告连接未按预期执行。
  4. 由于先前调用了全局用户出口程序,该队列已被清除,仍然没有可用会话,并且该请求即将排队。

    在这种情况下,出口程序返回 UERCAPUR 以指示 CICS 要清除请求。 这也会保留 UEPRC8 标志集。

  5. 由于先前调用了全局用户出口程序,因此已清除该队列。 已接收到新的分配请求,即将分配该请求,因为会话已变为空闲。

    在这种情况下,出口程序将返回 UERCNORM 以指示 CICS 将继续正常处理。 这还会导致取消设置 UEPRC8 标志,并导致 CICS 发出消息 DFHZCbbbb。

DFH$XISQ 的先决条件

样本程序使用 DSECT 对象 DFHXIQDS 来映射 UEPISDATA 寻址的区域。 DFHXIQDS 由库提供 CICSTSnn.CICS.SDFHMAC,其中 nn 代表 CICS 的版本号:例如, CICSTS64.CICS.SDFHMAC 表示 CICS TS beta 版本。

扩展 DFH$XISQ

样本出口程序不控制队列长度。 这种增强功能是您可能想要添加到自己的出口程序中的内容。

您还可以使用更复杂的决策 (例如,添加时间延迟以降低错误诊断的风险) 来决定何时发出用于清除队列的返回码,并允许排队重新启动。