调用顺序

在尝试回退文件更新期间,可以调用文件控制恢复程序中的每个出口。 如果回退失败,那么在重试回退时可能会重新调用每个出口。 如果出口程序需要确定它是在原始回退尝试期间调用,还是在重试期间调用,那么它可以检查 XPI INQUIRE_TRANSACTION 调用返回的 RE_ATTACHED_TRANSACTION 字段的值。

出口的交互方式以及调用这些出口的顺序显示在以下列表中。 假定已启用所有出口,对于每次回退尝试或重试的回退尝试:
  1. 如果回退期间打开失败,那么将调用 XFCBFAIL。 未调用任何其他出口
  2. 如果已对要回退的数据集发出 SHCDS PERMITNONRLSUPDATE 命令,那么将调用 XFCBOVER。 如果它返回 UERCNORM (不执行回退) ,那么不会调用进一步的出口
  3. 除非 1 项适用,或者已调用 XFCBOVER 并返回 UERCNORM ,否则将调用 XFCBOUT。
  4. 回退对要回退的记录发出读更新请求。

    如果读更新失败,那么将调用 XFCBFAIL ,后跟 无其他出口

  5. 如果要回退的更新是写入不支持物理删除的数据集 (即 BDAM 数据集或 VSAM ESDS) ,那么将调用 XFCLDEL。
  6. 如果在此点之后发生故障,那么将调用 XFCBFAIL。