出口 XFCLDEL(文件控制逻辑删除出口)
无论何时回退对 VSAM ESDS 或 BDAM 数据集的写操作,都会调用出口 XFCLDEL。 由于这些类型的数据集不支持删除操作,所以您可以通过以将其标记为已删除的方式修订记录,使用 XFCLDEL 来执行逻辑删除。
- 特定于出口的参数
- UEPBLOGR
- 表示要由逻辑删除回退的更新的日志记录的文件控制部分的地址。 可以使用 DSECT DFHFCLGD 映射日志记录。
- UEPTRANS
- 正在回退的更新所使用的 4 字节事务标识的地址。
- UEPTRMNL
- 从中进行回退的更新的终端或主体设施的 4 字节终端标识的地址。
- UEPTASK
- 正在进行回退的更新的任务的 4 字节 (压缩十进制) 任务号的地址。
- UEPFDATA
- 包含文件控制请求中的数据的可变长度字段的地址。 出口程序可以修改此字段寻址的记录数据,以某种方式将其标记为应用程序可以识别为表示逻辑上已删除的记录。
- UEPFLEN
- 包含文件控制请求中数据长度的全字的地址。
- 返回码
- UERCFAIL
- 请勿执行逻辑删除,并将其视为回退失败。 这是未启用出口时执行的缺省操作。
- UERCLDEL
- 通过重新应用更新后的记录来执行逻辑删除。
不允许返回码 UERCPURG。 不需要设置 UERCPURG 返回码,因为调用此出口的条件应该意味着任何 XPI 或 API 调用都不能返回 "已清除"。
- XPI 调用
- 所有这些都可以使用,但需遵守与 API 和 SPI 调用相同的注意事项。
- API 和 SPI 调用
- 虽然允许此出口发出 API 和 SPI 调用,但您应该非常小心使用哪些命令,因为该出口是在文件回退期间调用的,这是同步点阶段 2 的一部分。建议将 EXEC CICS® 命令限制为查询,并避免使用更新 CICS 资源的命令,因为这些资源本身可能处于恢复状态。 具体来说,以下限制适用:
- 请勿发出任何可恢复操作。
- 请勿使用访问此 CICS外部的系统或资源所有者的操作,即使目标资源不可恢复也是如此。
- 请勿禁用或关闭文件,因为这可能会导致进一步的错误情况。
- 可以在与最初执行回退的更新的事务环境不同的事务环境下调用此出口。 如果出口程序想要执行任何要求它在原始事务环境下运行的操作 (例如,向终端写入消息) ,那么它必须首先检查事务管理器 INQUIRE_TRANSACTION XPI 调用的 RE_ATTACHED_TRANSACTION 参数中返回的值。
CICS 文件定义 不必指定 UPDATE=YES ,以便 CICS 使用由 XFCLDEL 用户出口 (如 DFH$FCLD) 设置的逻辑删除标志来更新记录。 执行回退时,将绕过类似 UPDATE 的 SERVREQS 检查。
XFCLDEL 的样本全局用户出口程序
DFH$FCLD 为文件控制逻辑删除全局用户出口 XFCLDEL 提供样本处理。 有关更多信息,请参阅 文件控制恢复样本出口程序 :DFH$FCLD。