使用 DFH0BATx 样本程序为批处理操作准备数据集

CICS® 提供了由八个样本应用程序组成的套件,旨在帮助您针对以 RLS 方式打开的数据集自动执行批处理准备过程。

关于此任务

您可以在未修改的情况下使用这些样本程序,也可以将它们用作编写您自己的程序的基础。 这些程序是 DFH0BAT1 到 DFH0BAT8。

在尝试运行批处理作业之前,应确保:
  • 没有为数据集保留的锁定
  • 未以 RLS 方式针对数据集打开任何文件。

使用 INQUIRE DSNAME , INQUIRE UOWDSNFAIL 和 SET DSNAME SPI 命令的样本程序可帮助您处理任何保留的锁定。 成功处理这些文件后,可以使用 SPI 或 CEMT 命令停顿数据集以关闭 RLS 方式文件。

其中三个程序是协调程序,它们使用 CICS 分布式程序链接 (DPL) 命令在一组指定的 CICS 区域上运行程序。 以下是这些 3 协调程序的摘要:

DFH0BAT1
此样本程序协调禁用一组指定事务。 这将阻止创建新的保留锁定。
DFH0BAT2
此样本程序协调一组指定数据集的保留锁定信息的标识:
  • 对于每个数据集,它会发出 SET DSNAME RETRY 命令,以尝试解决由于瞬态故障或已更正的故障而导致的任何保留锁定。
  • 在允许重试运行的定时延迟后,它发出 INQUIRE UOWDSNFAIL 命令以获取有关对数据集进行了未落实更改的任何剩余搁置的 UOW 的信息。 它显示命令返回的信息以及解决锁定的建议过程。
DFH0BAT3
此样本程序协调对一组指定数据集的强制锁定:
  • 对于每个数据集,将对搁置的不确定 UOW 强制回退
  • 在经过定时延迟以允许强制回退运行后,它会重置任何落实失败或回退失败的 UOW 的锁定。

DFH0BAT3 样本程序对于在未能转发恢复数据集之后解决暂挂回退也很有用。

下表概述了三个协调程序所使用的组件。

表 1. DFH0BATx 样本程序使用的组件摘要
暂存 Tranid 初始程序 DPL 程序 TD 队列 映射集
禁用 BAT1 DFH0BAT1 DFH0BAT4 BATA BATX DFH0BM1
识别 BAT2 DFH0BAT2 DFH0BAT5 DFH0BAT7 BATA BATD DFH0BM2
强制 BAT3 DFH0BAT3 DFH0BAT6 DFH0BAT8 BATA BATD DFH0BM3

这些程序使用 COBOL 编写,并随必需的 BMS 映射和其他副本一起提供。 下表给出了每个程序执行的处理的摘要:

表 2。 DFH0BATx 程序的功能摘要
Program 功能概述
DFH0BAT1 DFH0BAT1 由选择作为协调程序的 CICS 区域中的事务 BAT1 调用,用于控制指定事务的禁用。 读取 2 分区外 TD 队列: (1) BATX (表示要禁用的事务的标识) 和 (2) BATA (表示目标 CICS 区域的应用程序标识)。

向每个目标区域中的 DFH0BAT4 发出 DPL 请求以禁用指定的事务。 使用 BMS 映射 DFH0BM1显示每个 DFH0BAT4 返回的任何错误。

DFH0BAT2 DFH0BAT2 由选择作为协调程序的 CICS 区域中的事务 BAT2 调用,用于控制指定数据集的保留锁定信息收集。 读取 2 分区外 TD 队列: (1) BATD (表示数据集的名称) 和 (2) BATA (表示目标 CICS 区域的应用程序标识)。

对于每个数据集, DFH0BAT2 向每个目标 CICS 区域中的 DFH0BAT7发出 DPL 请求,以重试与数据集关联的回退失败。 当针对数据集的 DFH0BAT7 的 DPL 请求完成时,在定时延迟后,程序会向 DFH0BAT5 发出 DPL 请求,以从同一数据集的每个目标 CICS 区域收集保留的锁定信息。 来自 DFH0BAT5 调用的保留锁定信息在临时存储器队列 (DFH0BQ2) 中接收,并使用 BMS 映射集 DFH0BM2显示。

对于从 BATD 获取的每个数据集名称,将重复向 DFH0BAT7 和 DFH0BAT5 发出 DPL 请求的过程。

DFH0BAT3 DFH0BAT3 由选择作为协调程序区域的 CICS 区域中的事务 BAT3 调用。 它启动强制回退任何不确定工作单元,并强制释放指定数据集的保留锁定。 读取 2 分区外 TD 队列: (1) BATD (表示数据集的名称) 和 (2) BATA (表示目标 CICS 区域的应用程序标识)。

对于每个数据集, DFH0BAT3 向每个目标 CICS 区域中的 DFH0BAT6发出 DPL 请求,以强制回退与数据集关联的不确定工作单元。 当针对数据集的 DFH0BAT6 的 DPL 请求完成时,在定时延迟后,程序会向 DFH0BAT8 发出 DPL 请求,以强制释放相同数据集的每个目标区域中的保留锁定。 来自 DFH0BAT6 和 DFH0BAT8 调用的消息是使用 BMS 映射集 DFH0BM3显示的。

对于从 BATD 获取的每个数据集名称,将重复向 DFH0BAT6 和 DFH0BAT8 发出 DPL 请求的过程。

DFH0BAT4 由来自 DFH0BAT1 的 DPL 请求链接,以禁用指定的事务。
DFH0BAT5 由来自 DFH0BAT2 的 DPL 请求链接,以收集保留的锁定信息并将其返回给其调用者。
DFH0BAT6 由来自 DFH0BAT3 的 DPL 请求链接,以强制回退不确定工作单元。
DFH0BAT7 由来自 DFH0BAT3 的 DPL 请求链接,以重试任何回退失败。
DFH0BAT8 由来自 DFH0BAT3 的 DPL 请求链接,以强制释放保留锁定。

有关样本程序的更多信息,请参阅每个程序的序言中的注释。