使用 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 样本程序对于在未能转发恢复数据集之后解决暂挂回退也很有用。
下表概述了三个协调程序所使用的组件。
| 暂存 | 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 映射和其他副本一起提供。 下表给出了每个程序执行的处理的摘要:
| 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 请求链接,以强制释放保留锁定。 |
有关样本程序的更多信息,请参阅每个程序的序言中的注释。