退出 XDTRD
在 CICS® 尝试向数据表添加已从源数据集检索到的记录之前,将调用 XDTRD 用户出口。 您可以选择是否将记录加载到数据表中。 对于用户维护的共享数据表和耦合设施数据表,您也可以修改记录。
当装入过程在源数据集的顺序复制期间检索记录时,通常会发生此情况。 然而,当应用程序检索数据表中不存在的记录时,且满足以下条件时,也可以调用它:
- 对于用户维护的数据表,装入仍在进行中,或者
- 对于 CICS维护的数据表,装入在到达源数据集结束之前终止 (例如,因为数据表已满)。
注: 对于耦合设施数据表,仅对从源数据集装入的表调用 XDTRD 出口。
从源数据集检索的记录将作为参数传递给用户出口程序-请参阅字段 UEPDTRA 和 UEPDTRL。 该退出程序可以选择(取决于例如键值——参见UEPDTKA和UEPDTKL字段)是否将记录包含在数据表中。
或者,出口程序可以请求跳过指定键的所有后续记录-请参阅 UEPDTSKA 字段; 这些记录不会传递到出口程序。 此设施仅在装入期间可用。 可以将键指定为完整键,也可以通过使用二进制零填充跳过键区域来仅指定前导字符。 通过设置返回代码来指示所需的操作。 根据返回代码值, CICS 所采取的操作可在XDTRD用户退出的返回代码中找到。
对于用户维护的数据表,程序还可以修改记录中的数据,以减少数据表所需的存储空间。 使用数据表的应用程序必须知道出口程序对记录格式所作的任何更改。 如果更改了记录长度,那么出口程序必须在参数列表中设置新长度-请参阅 UEPDTRL 字段。 新长度不得超过数据缓冲区长度-请参阅 UEPDTRBL 字段。
所有XPI调用都可以与XDTRD出口一起使用,但不能使用API或SPI调用。
退出XDTRD用户退出特定参数
- UEPDTPL:数据表用户退出参数列表的地址,在DFHXDTDS抄本中由DSECT DT_UE_PLIST映射。
- UEPDTNAM:8个字符的数据表名称。
- UEPDTFLG:1字节标志字段。 可能的位设置为:
- UEPDTSDT (X'80' ): 退出已被 共享数据表支持调用。 CICS
- UEPDTCMT (X'40' ):这是一个由 维护的共享数据表。 CICS 仅当 UEPDTSDT 处于开启状态时才有意义。
- UEPDTOPT (X'20'): 已调用表格加载退出。 这意味着可以请求通过跳过进行优化。
- UEPDTCFT(X'10'): 通过耦合设施数据表支持调用退出。
- UEPDTUMT (X'08' ):这是一个由用户维护的共享数据表。
- UEPDTRA:数据记录的地址。
- UEPDTRBL:数据表缓冲区的全字长度。
- UEPDTRL:数据记录的全字长度。 对于用户维护的共享数据表,如果修改记录,退出程序可以在此字段中设置新的长度。
- UEPDTKA:数据表键的地址。
- UEPDTKL:数据表键的全字长度。
- UEPDTDSL:源数据集名称的全称长度。 仅当 UEPDTSDT 或 UEPDTCFT 处于开启状态时才有意义。
- UEPDTDSN:一个包含源数据集名称的44个字符的字段。 仅当 UEPDTSDT 或 UEPDTCFT 处于开启状态时才有意义。
- UEPDTSKA:跳过密钥区域的地址。 当为表装入调用时,出口程序可以在此区域中返回长度为 UEPDTKL 的键,并通过设置返回码 UERCDTOP 来请求装入优化。 仅当 UEPDTSDT 或 UEPDTCFT 处于开启状态时才有意义。
XDTRD用户退出的返回代码
如果退出程序发出的呼叫收到已清除(PURGED)响应,则应返回UERCPURG值。
- UERCDTAC:将记录添加到数据表中。 如果退出未激活,则默认使用此选项。
- UERCDTRJ:请勿将记录列入数据表。
- UERCDTOP:跳过此记录和后续记录,直到找到等于或大于跳过键区域中指定键的键。 仅当 UEPDTSDT 或 UEPDTCFT 处于开启状态时才有意义。