IMS 数据库 – Cobol 基础知识
IMS 数据库 – Cobol 基础知识
我们在 COBOL 应用程序中包含 DL/I 调用以与 IMS 数据库进行通信。我们在 COBOL 程序中使用以下 DL/I 语句来访问数据库 –
- 入场声明
- 返回声明
- 调用声明
入场声明
它用于将控制权从 DL/I 传递到 COBOL 程序。这是入口语句的语法 –
ENTRY 'DLITCBL' USING pcb-name1 [pcb-name2]
上述语句在COBOL 程序的过程分部中编码。让我们深入了解 COBOL 程序中 entry 语句的详细信息 –
-
批量初始化模块触发应用程序并在其控制下执行。
-
DL/I 加载所需的控制块和模块以及应用程序,并将控制权交给应用程序。
-
DLITCBL 代表DL/I 到 COBOL。entry 语句用于定义程序中的入口点。
-
当我们在 COBOL 中调用子程序时,也提供了它的地址。同样,当 DL/I 将控制权交给应用程序时,它也提供了在程序的 PSB 中定义的每个 PCB 的地址。
-
应用程序中使用的所有 PCB 都必须在 COBOL 程序的Linkage Section内定义,因为 PCB 驻留在应用程序之外。
-
Linkage Section 内的 PCB 定义称为PCB Mask。
-
PCB 掩码和实际存储的 PCB 之间的关系是通过在条目语句中列出 PCB 来创建的。条目语句中的列表顺序应与它们在 PSBGEN 中出现的顺序相同。
返回声明
它用于将控制权传递回 IMS 控制程序。以下是 Goback 语句的语法 –
GOBACK
下面列出的是关于 Goback 语句的基本要点 –
-
GOBACK 编码在应用程序的末尾。它将控制权从程序返回给 DL/I。
-
我们不应该使用 STOP RUN,因为它会将控制权返回给操作系统。如果我们使用 STOP RUN,DL/I 永远不会有机会执行其终止功能。这就是为什么在 DL/I 应用程序中使用 Goback 语句的原因。
-
在发出 Goback 语句之前,必须关闭 COBOL 应用程序中使用的所有非 DL/I 数据集,否则程序将异常终止。
调用声明
Call 语句用于请求DL/I 服务,例如对IMS 数据库执行某些操作。这是调用语句的语法 –
CALL 'CBLTDLI' USING DLI Function Code PCB Mask Segment I/O Area [Segment Search Arguments]
上面的语法显示了可以与调用语句一起使用的参数。我们将在下表中讨论它们中的每一个 –
S.No. | 参数及说明 |
---|---|
1 |
DLI Function Code 标识要执行的 DL/I 功能。此参数是描述 I/O 操作的四个字符字段的名称。 |
2 |
PCB Mask Linkage Section 内的 PCB 定义称为 PCB Mask。它们用于条目语句中。不需要 SELECT、ASSIGN、OPEN 或 CLOSE 语句。 |
3 |
Segment I/O Area 输入/输出工作区的名称。这是应用程序的一个区域,DL/I 将请求的段放入其中。 |
4 |
Segment Search Arguments 这些是可选参数,具体取决于发出的呼叫类型。它们用于搜索 IMS 数据库内的数据段。 |
以下是关于 Call 语句的注意事项 –
-
CBLTDLI 代表 COBOL 到 DL/I。它是与程序的目标模块链接编辑的接口模块的名称。
-
每次 DL/I 调用后,DLI 都会在 PCB 中存储一个状态代码。程序可以使用此代码来确定调用是成功还是失败。
例子
要更多地了解 COBOL,您可以在此处阅读我们的 COBOL 教程 。以下示例显示了使用 IMS 数据库和 DL/I 调用的 COBOL 程序的结构。我们将在接下来的章节中详细讨论示例中使用的每个参数。
IDENTIFICATION DIVISION. PROGRAM-ID. TEST1. DATA DIVISION. WORKING-STORAGE SECTION. 01 DLI-FUNCTIONS. 05 DLI-GU PIC X(4) VALUE 'GU '. 05 DLI-GHU PIC X(4) VALUE 'GHU '. 05 DLI-GN PIC X(4) VALUE 'GN '. 05 DLI-GHN PIC X(4) VALUE 'GHN '. 05 DLI-GNP PIC X(4) VALUE 'GNP '. 05 DLI-GHNP PIC X(4) VALUE 'GHNP'. 05 DLI-ISRT PIC X(4) VALUE 'ISRT'. 05 DLI-DLET PIC X(4) VALUE 'DLET'. 05 DLI-REPL PIC X(4) VALUE 'REPL'. 05 DLI-CHKP PIC X(4) VALUE 'CHKP'. 05 DLI-XRST PIC X(4) VALUE 'XRST'. 05 DLI-PCB PIC X(4) VALUE 'PCB '. 01 SEGMENT-I-O-AREA PIC X(150). LINKAGE SECTION. 01 STUDENT-PCB-MASK. 05 STD-DBD-NAME PIC X(8). 05 STD-SEGMENT-LEVEL PIC XX. 05 STD-STATUS-CODE PIC XX. 05 STD-PROC-OPTIONS PIC X(4). 05 FILLER PIC S9(5) COMP. 05 STD-SEGMENT-NAME PIC X(8). 05 STD-KEY-LENGTH PIC S9(5) COMP. 05 STD-NUMB-SENS-SEGS PIC S9(5) COMP. 05 STD-KEY PIC X(11). PROCEDURE DIVISION. ENTRY 'DLITCBL' USING STUDENT-PCB-MASK. A000-READ-PARA. 110-GET-INVENTORY-SEGMENT. CALL ‘CBLTDLI’ USING DLI-GN STUDENT-PCB-MASK SEGMENT-I-O-AREA. GOBACK.