获取有关数据库可用性的信息
PSB 调度请求将数据可用性状态码放置在每个数据库 PCB 中。 您可以使用 DL/I 请求来获取和刷新此信息。
QUERY 和 REFRESH DBQUERY 命令
在命令级别环境中,在针对每个 PCB 的 PSB 调度请求后发出以下命令:
EXEC DLI QUERY PCB(n)
其中 n 是 PCB 的编号。
这将获取 DL/I 接口块 (DIB) 中的状态码和其他信息。 您应该会在 DIB 中获取下列其中一个值:
- TH ,这意味着尚未调度 PSB ,并导致 DHTH 异常终止。
- NA ,这意味着至少一个可以使用此 PCB 访问的数据库不可用,但不会导致异常终止。
- NU ,这意味着至少一个可以使用此 PCB 更新的数据库不可用,并且不会导致异常终止。
- (空白) ,表示使用此 PCB 可访问的数据可用于 PCB 灵敏度允许的所有功能。
DIBDBORG ,当 DIBSTAT 已设置为 NA , NU 或引用 (空白) 时返回。 DIBDBORG 包含下列其中一个用于描述数据库组织的值:
- DEDB
- GSAM
- HDAM
- HIDAM
- HISAM
- INDEX
- HSAM
- SHISAM
- SHSAM
DIBDBDNM ,当 DIBSTAT 设置为 NA , NU 或空白时返回,并包含 DBDNAME。 您可以使用以下命令来刷新这些状态码:
EXEC DLI REFRESH DBQUERY
INIT 调用: 用于刷新状态码信息的格式
使用 DL/I CALL 接口的应用程序可以直接访问 PCB 状态码。 您可以使用 INIT 调用来刷新这些状态码,如下所示:
CALL 'CBLTDLI' USING INIT,i/o pcb,i/o_area
其中
i/o_area 包含格式为 LLZZcharacter_string的字符串。LL是包含character_string(包括LLZZ) 的长度的半字。ZZ包含二进制零。character_string包含 DBQUERY。
此上下文中使用的数据可用性状态码为:
- (空白) ,这表示所有数据库都可用。
- NA ,这意味着至少一个可使用此 PCB 访问 的数据库不可用。
- NU ,这意味着至少一个可使用此 PCB 进行 更新 的数据库不可用于更新。