
- IMS DB 基础教程
- IMS DB - 首页
- IMS DB - 概述
- IMS DB - 结构
- IMS DB - DL/I 术语
- IMS DB - DL/I 处理
- IMS DB - 控制块
- IMS DB - 编程
- IMS DB - Cobol 基础
- IMS DB - DL/I 函数
- IMS DB - PCB 掩码
- IMS DB - SSA
- IMS DB - 数据检索
- IMS DB - 数据操作
- IMS DB - 二级索引
- IMS DB - 逻辑数据库
- IMS DB - 恢复
- IMS DB 有用资源
- IMS DB - 问答
- IMS DB - 快速指南
- IMS DB - 有用资源
IMS DB - 控制块
IMS 控制块定义了 IMS 数据库的结构以及程序对其的访问方式。下图显示了 IMS 控制块的结构。

DL/I 使用以下三种类型的控制块:
- 数据库描述符 (DBD)
- 程序规范块 (PSB)
- 访问控制块 (ACB)
数据库描述符 (DBD)
需要注意的几点:
DBD 描述了所有段定义后数据库的完整物理结构。
在安装 DL/I 数据库时,必须创建一个 DBD,因为它需要访问 IMS 数据库。
应用程序可以使用 DBD 的不同视图。它们被称为应用程序数据结构,并在程序规范块中指定。
数据库管理员通过编码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 中使用的术语:
当您在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 表示仅加载操作。
SENSEG 称为段级敏感性。它定义了程序对数据库部分的访问权限,并在段级进行识别。程序可以访问其敏感的所有段内的所有字段。程序也可以具有字段级敏感性。在这里,我们定义一个段名称和该段的父名称。
最后一个宏语句是 PCBGEN。PSBGEN 是最后一个语句,表示没有更多语句需要处理。PSBNAME 定义赋予输出 PSB 模块的名称。LANG 参数指定编写应用程序程序的语言,例如 COBOL。
访问控制块 (ACB)
以下是关于访问控制块需要注意的几点:
应用程序程序的访问控制块将数据库描述符和程序规范块组合成可执行形式。
ACBGEN 称为访问控制块生成器。它用于生成 ACB。
对于联机程序,我们需要预先构建 ACB。因此,在执行应用程序程序之前执行 ACBGEN 实用程序。
对于批处理程序,也可以在执行时生成 ACB。