获取有关数据库可用性的信息

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 进行 更新 的数据库不可用于更新。