退出 XDTAD

对在初始加载后添加到源数据集的每条记录调用 XDTAD。 您可以选择是否将记录添加到数据表。 该用户出口无法修改记录,因为在应用程序编写记录时,假定它们已采用在数据表中使用的格式。

当向数据表发出写请求时,将调用XDTAD用户退出。 对于用户维护的数据表和耦合设施数据表,将在将记录添加到数据表之前调用用户出口一次。 对于 CICS®维护的数据表,将在将记录添加到源数据集之前调用用户出口两次,然后在将记录添加到数据表之前再次调用用户出口。

注: 对于耦合设施数据表,可以在开放式 TCB 上调用该出口; 因此,请确保该出口是线程安全的,并允许 CICS 作为线程安全的,以避免过多的 TCB 切换。

应用程序写入的记录作为参数传递给用户出口程序-请参阅 UEPDTRA 和 UEPDTRL 字段。 出口程序可以选择 (取决于键值,例如,请参阅 UEPDTKA 和 UEPDTKL 字段) 是否将记录包括在数据表中。 此决策通过设置返回码来指示。 根据返回代码值, CICS 所采取的操作可在XDTAD用户退出的返回代码中找到。

XDTAD 出口不得修改记录中的数据。 如果在装入数据表时使用了 XDTRD 来截断数据记录,那么必须对应用程序进行编码,以便它仅尝试为数据表写入格式正确的记录。

所有XPI调用都可以与XDTRD出口一起使用,但不能使用API或SPI调用。

样本 XDTAD 出口程序列示在 共享数据表概述中。

退出 XDTAD 用户退出时的特定参数

  • UEPDTPL:数据表用户退出参数列表的地址,在DFHXDTDS抄本中由DSECT DT_UE_PLIST映射。
    • UEPDTNAM:8个字符的数据表名称。
    • UEPDTFLG:1字节标志字段。 可能的位设置为:
      • UEPDTSDT (X'80' ): 退出已被 共享数据表支持调用。 CICS
      • UEPDTCMT (X'40' ):这是一个由 维护的共享数据表。 CICS 仅当 UEPDTSDT 处于开启状态时才有意义。
      • UEPDTCFT(X'10'): 通过耦合设施数据表支持调用退出。
      • UEPDTUMT (X'08' ):这是一个由用户维护的共享数据表。
    • UEPDTRA:数据记录的地址。
    • UEPDTRBL:数据表缓冲区的全字长度。
    • UEPDTRL:数据记录的全字长度。 对于用户维护的共享数据表,如果修改记录,退出程序可以在此字段中设置新的长度。
    • UEPDTKA:数据表键的地址。
    • UEPDTKL:数据表键的全字长度。
    • UEPDTDSL:源数据集名称的全字长度。 仅当 UEPDTSDT 或 UEPDTCFT 处于开启状态时才有意义。
    • UEPDTDSN:一个包含源数据集名称的44个字符的字段。 仅当 UEPDTSDT 或 UEPDTCFT 处于开启状态时才有意义。

XDTAD用户退出的返回代码

如果退出程序对发出的呼叫收到 PURGED 响应,则应返回 UERCPURG 值。
  • UERCDTAC:将记录添加到数据表中。 如果退出未激活,则默认使用此选项。
  • UERCDTRJ:请勿将记录添加到数据表中。