Ims Db 简明教程

IMS DB - Control Blocks

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

control block

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

  1. Database Descriptor (DBD)

  2. Program Specification Block (PSB)

  3. Access Control Block (ACB)

Database Descriptor (DBD)

重点注意事项:

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

  2. 在安装 DL/I 数据库时,必须创建 DBD,因为需要访问 IMS 数据库。

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

  4. 数据库管理员通过编码 DBDGEN 控制语句来创建 DBD。

DBDGEN

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 中使用的术语 −

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

  2. 第一个 DBD 宏语句标识数据库。在此,我们需要提及 DL/I 用于访问此数据库的 NAME 和 ACCESS。

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

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

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

S.No

Parameter & Description

1

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

2

Bytes Length of the field

3

Start 段内字段的位置

4

Type 字段的数据类型

5

Type C Character data type

6

Type P 打包十进制数据类型

7

Type Z 带区十进制数据类型

8

Type X Hexadecimal data type

9

Type H 半字二进制数据类型

10

Type F 整字二进制数据类型

Program Specification Block (PSB)

PSB 的基础知识如下所述 −

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

  2. 没有哪个程序可以在单次执行中使用多个 PSB。

  3. 应用程序有自己的 PSB,对于具有相似数据库处理要求的应用程序共享 PSB 来说是常见的。

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

  5. 必须执行 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 中使用的术语 −

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

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

  3. SENSEG 称为区段级敏感性。它定义了程序对数据库部分的访问,且在区段级别识别。程序有权访问其对之开放的所有字段内的所有区段。程序还可以具有字段级敏感性。在此,我们定义一个区段名称和区段的父名称。

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

Access Control Block (ACB)

以下是关于访问控制块需要注意的要点 −

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

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

  3. 对于联机程序,我们需要预构建 ACB。因此,在执行应用程序之前执行 ACBGEN 实用程序。

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