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宏语句中使用的参数 :

S.No参数&描述
1

Name

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

2

Bytes

字段长度

3

Start

段内字段的位置

4

Type

字段的数据类型

5

Type C

字符数据类型

6

Type P

打包的十进制数据类型

7

Type Z

分区十进制数据类型

8

Type X

十六进制数据类型

9

Type H

半字二进制数据类型

10

Type 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.