IMS DB - 控制块


IMS 控制块定义 IMS 数据库的结构以及程序对它们的访问。下图显示了 IMS 控制块的结构。

控制块

DL/I 使用以下三种类型的控制块 -

  • 数据库描述符(DBD)
  • 程序规范块 (PSB)
  • 访问控制块 (ACB)

数据库描述符(DBD)

注意事项 -

  • 一旦定义了所有段,DBD 就会描述数据库的完整物理结构。

  • 安装 DL/I 数据库时,必须创建一个 DBD,因为需要访问 IMS 数据库。

  • 应用程序可以使用 DBD 的不同视图。它们称为应用程序数据结构,并在程序规范块中指定。

  • 数据库管理员通过编写DBDGEN控制语句来创建 DBD 。

数据库DGEN

DBDGEN 是一个数据库描述符生成器。创建控制块是数据库管理员的职责。所有加载模块都存储在IMS库中。汇编语言宏语句用于创建控制块。下面给出的示例代码显示了如何使用 DBDGEN 控制语句创建 DBD -

PRINT	NOGEN
DBD	NAME=LIBRARY,ACCESS=HIDAM
DATASET	DD1=LIB,DEVICE=3380
SEGM	NAME=LIBSEG,PARENT=0,BYTES=10
FIELD	NAME=(LIBRARY,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM	NAME=BOOKSEG,PARENT=LIBSEG,BYTES=5
FIELD	NAME=(BOOKS,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM	NAME=MAGSEG,PARENT=LIBSEG,BYTES=9
FIELD	NAME=(MAGZINES,SEQ),BYTES=8,START=1,TYPE=C
DBDGEN
FINISH
END

让我们了解上面 DBDGEN 中使用的术语 -

  • 当您在JCL中执行上述控制语句时,它会创建一个物理结构,其中 LIBRARY 是根段,BOOKS 和 MAGZINES 是其子段。

  • 第一个 DBD 宏语句标识数据库。这里,我们需要提到 DL/I 用来访问该数据库的 NAME 和 ACCESS。

  • 第二个 DATASET 宏语句标识包含数据库的文件。

  • 段类型是使用 SEGM 宏语句定义的。我们需要指定该段的 PARENT。如果是根段,则提及 PARENT=0。

下表显示了 FIELD 宏语句中使用的参数 -

序列号 参数及说明
1

姓名

字段名称,通常长度为 1 到 8 个字符

2

字节

字段长度

3

开始

段内字段的位置

4

类型

字段的数据类型

5

C型

字符数据类型

6

P型

压缩十进制数据类型

7

Z型

分区十进制数据类型

8

X型

十六进制数据类型

9

H型

半字二进制数据类型

10

F型

全字二进制数据类型

程序规范块 (PSB)

PSB 的基本原理如下 -

  • 数据库具有由 DBD 定义的单一物理结构,但处理它的应用程序可以具有不同的数据库视图。这些视图称为应用程序数据结构并在 PSB 中定义。

  • 任何程序在一次执行中都不能使用多个 PSB。

  • 应用程序有自己的 PSB,并且具有类似数据库处理要求的应用程序共享 PSB 是很常见的。

  • PSB 由一个或多个称为程序通信块 (PCB) 的控制块组成。PSB 为应用程序将访问的每个 DL/I 数据库包含一个 PCB。我们将在接下来的模块中详细讨论 PCB。

  • 必须执行 PSBGEN 来为程序创建 PSB。

PSBGEN

PSBGEN 被称为程序规范块生成器。以下示例使用 PSBGEN 创建 PSB -

PRINT   NOGEN
PCB     TYPE=DB,DBDNAME=LIBRARY,KEYLEN=10,PROCOPT=LS
SENSEG  NAME=LIBSEG
SENSEG  NAME=BOOKSEG,PARENT=LIBSEG
SENSEG  NAME=MAGSEG,PARENT=LIBSEG
PSBGEN  PSBNAME=LIBPSB,LANG=COBOL
END

让我们了解上面 DBDGEN 中使用的术语 -

  • 第一个宏语句是程序通信块 (PCB),它描述数据库类型、名称、密钥长度和处理选项。

  • PCB 宏上的 DBDNAME 参数指定 DBD 的名称。KEYLEN 指定最长连接密钥的长度。该程序可以在数据库中进行处理。PROCOPT 参数指定程序的处理选项。例如,LS 表示仅 LOAD 操作。

  • SENSEG 被称为段级灵敏度。它定义了程序对数据库部分的访问,并在段级别进行标识。该程序可以访问其敏感的段内的所有字段。程序还可以具有字段级敏感性。在此,我们定义了段名称和段的父名称。

  • 最后一个宏语句是PCBGEN。PSBGEN 是最后一条语句,表明没有更多语句需要处理。PSBNAME 定义输出 PSB 模块的名称。LANG参数指定编写应用程序所用的语言,例如COBOL。

访问控制块 (ACB)

下面列出了有关访问控制块的注意事项 -

  • 应用程序的访问控制块将数据库描述符和程序规范块组合成可执行形式。

  • ACBGEN 被称为访问控制块生成器。它用于生成 ACB。

  • 对于在线程序,我们需要预先构建ACB。因此,ACBGEN 实用程序在执行应用程序之前执行。

  • 对于批处理程序,ACB 也可以在执行时生成。