📅  最后修改于: 2020-11-27 05:18:56             🧑  作者: Mango
PCB代表程序通信块。 PCB屏蔽是DL / I调用中使用的第二个参数。它在链接部分中声明。下面给出的是PCB Mask的语法-
01 PCB-NAME.
05 DBD-NAME PIC X(8).
05 SEG-LEVEL PIC XX.
05 STATUS-CODE PIC XX.
05 PROC-OPTIONS PIC X(4).
05 RESERVED-DLI PIC S9(5).
05 SEG-NAME PIC X(8).
05 LENGTH-FB-KEY PIC S9(5).
05 NUMB-SENS-SEGS PIC S9(5).
05 KEY-FB-AREA PIC X(n).
这是要注意的关键点-
对于每个数据库,DL / I维护一个存储区域,称为程序通信块。它存储有关在应用程序内部访问的数据库的信息。
ENTRY语句在“链接”部分中的PCB掩模与程序的PSB中的PCB之间创建连接。 DL / I呼叫中使用的PCB掩模告知要使用哪个数据库进行操作。
您可以假定这类似于在COBOL READ语句中指定文件名或在COBOL write语句中指定记录名。不需要SELECT,ASSIGN,OPEN或CLOSE语句。
每次DL / I调用之后,DL / I将状态代码存储在PCB中,程序可以使用该代码来确定调用是成功还是失败。
注意事项-
PCB名称是指PCB字段的整个结构的区域名称。
程序语句中使用了PCB名称。
PCB名称不是PCB中的字段。
注意事项-
DBD名称包含字符数据。它是八个字节长。
PCB中的第一个字段是正在处理的数据库的名称,它提供来自与特定数据库相关联的数据库描述库中的DBD名称。
注意事项-
段级别称为段层次级别指示器。它包含字符数据,长度为两个字节。
段级别字段存储已处理的段的级别。成功检索段后,将在此处存储所检索段的级别号。
段级别字段的值永远不会大于15,因为这是DL / I数据库中允许的最大级别数。
注意事项-
状态码字段包含两个字节的字符数据。
状态代码包含DL / I状态代码。
DL / I成功完成呼叫处理后,会将空格移到状态代码字段。
非空格值表示呼叫未成功。
状态代码GB表示文件结尾,状态代码GE表示找不到请求的段。
注意事项-
Proc选项称为处理选项,其中包含四个字符的数据字段。
处理选项字段指示授权程序对数据库执行哪种处理。
注意事项-
保留的DL / I被称为IMS的保留区域。它存储四个字节的二进制数据。
IMS将该区域用于其自己与应用程序相关的内部链接。
注意事项-
SEG名称称为段名称反馈区域。它包含8个字节的字符数据。
每次DL / I调用之后,段的名称都存储在此字段中。
注意事项-
长度FB键称为键反馈区域的长度。它存储四个字节的二进制数据。
此字段用于报告在上一次呼叫期间处理的最低级别段的级联键的长度。
与按键反馈区域一起使用。
注意事项-
敏感段数存储四个字节的二进制数据。
它定义了应用程序对敏感的级别。它表示逻辑数据结构中段数的计数。
注意事项-
按键反馈区域的长度从一块PCB到另一块PCB不等。
它包含可以与程序的数据库视图一起使用的最长的串联关键字。
在执行数据库操作之后,DL / I返回在此字段中处理的最低级别段的级联密钥,并返回密钥长度反馈区域中密钥的长度。