IMS教程

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 程序的链接部分内定义,因为 PCB 位于应用程序之外。 Linkage Section 内的 PCB 定义称为 PCB Mask PCB 掩码与存储中的实际 PCB 之间的关系是通过在条目语句中列出 PCB 来创建的。 entry 语句中的列表顺序应与它们在 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 功能代码
标识要执行的 DL/I 功能。此参数是描述 I/O 操作的四个字符字段的名称。
2
PCB Mask
Linkage Section内的PCB定义称为PCB Mask。它们用于条目语句中。不需要 SELECT、ASSIGN、OPEN 或 CLOSE 语句。
3
Segment I/O Area
输入/输出工作区的名称。这是应用程序的一个区域,DL/I 将请求的段放入其中。
4
段搜索参数
这些是可选参数,取决于发出的调用的类型。它们用于在 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.
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4