文件控制文件状态程序退出 XFCSREQ 和 XFCSREQC
在文件控制状态程序中提供了两个用户出口,您可以在文件请求之前和之后调用这些用户出口。
- XFCSREQ
- 在对文件 ENABLE , DISABLE , OPEN , CLOSE 或 CANCEL CLOSE 请求执行操作之前,将调用此出口。 您可以使用 XFCSREQ 来收集有关文件状态的信息; 例如,哪些文件请求 (SERVREQ) 有效以及设置了哪些日志记录选项。 根据此信息,您可以禁止请求 (如果适用)。 请参阅 返回码 UERCBYP 以获取详细信息。
- XFCSREQC
- 在对文件请求执行操作之后,将调用此出口。 您可以使用 XFCSREQC 来收集有关与该文件关联的数据集的信息; 例如,设置了哪些恢复选项。 即使您已使用 XFCSREQ 来禁止文件请求,也会调用 XFCSREQC。
对于 ENABLE , DISABLE , OPEN 和 CANCEL CLOSE 请求,每个出口仅调用一次。 但是,对于 CLOSE 请求,由于可以在实际关闭之前停顿文件,因此可以多次调用出口。 在关闭请求期间,有两种情况不会调用用户出口 XFCSREQ 和 XFCSREQC:
- 在 CICS®的受控非立即关闭时,当 CICS 关闭所有文件时。
- 在装入用户维护的数据表之后。 当数据表装入完成时,不再需要源数据集。 CICS 随后关闭并取消分配该文件,使数据表保持打开状态。
单个 CLOSE 请求
对于单个 CLOSE 请求,如果在其他任务访问文件时尝试关闭,那么将多次调用 XFCSREQ 和 XFCSREQC。 例如,在这些情况下, CLOSE NOWAIT 命令的结果是在尝试关闭之前调用 XFCSREQ。 因为仍有文件的用户,所以会延迟关闭。 但是,由于它指定了 NOWAIT ,因此 CLOSE 请求完成,并在 UEPFSRSP 设置为 "UEFSPEND" 的情况下调用 XFCSREQC ,这意味着关闭处于暂挂状态。 当针对该文件的所有活动完成时,将关闭该文件,并且将在关闭该文件的任务下调用 XFCSREQ 和 XFCSREQC。
CLOSE WAIT 请求
对于 CLOSE WAIT 请求,将按如下所示调用出口。 调用 XFCSREQ ,任务会请求关闭文件并等待关闭发生。 当针对该文件的所有活动完成时,将关闭该文件,并且将在关闭该文件的任务下调用 XFCSREQ 和 XFCSREQC。 最后,由于现在已完成关闭,因此将恢复发出 CLOSE WAIT 的任务,完成其 CLOSE 请求并调用 XFCSREQC。
CANCEL CLOSE 请求
CICS 发出 CANCEL CLOSE 请求以响应取消暂挂 QUIESCE 命令的 UNQUIESCE 命令。 QUIESCE 数据集命令会立即将针对指定数据集打开的所有文件设置为未启用,以防止允许新任务访问该数据集。 但是,操作的关闭部分将等待最后一个用户任务完成,然后再关闭文件。 (这与对文件执行的任何关闭操作相同。) 当关闭仍在等待时发出的 UNQUIESCE 会导致 CANCEL CLOSE 请求和 XFCSREQ 和 XFCSREQC 出口的调用。 请注意,仅对由 QUIESCE 命令启动的关闭请求发出 CANCEL CLOSE ,而不对任何其他关闭请求发出 CANCEL CLOSE。