📜  IMS DB-Cobol基础知识

📅  最后修改于: 2020-11-27 05:17:23             🧑  作者: Mango


我们将DL / I调用包含在COBOL应用程序内部以与IMS数据库进行通信。我们在COBOL程序中使用以下DL / I语句访问数据库-

  • 入境声明
  • 回溯声明
  • 通话声明

入境声明

它用于将控制从DL / I传递到COBOL程序。这是entry语句的语法-

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。

  • 链接部分中的PCB定义称为PCB掩模

  • 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数据集,否则该程序将异常终止。

通话声明

调用语句用于请求DL / I服务,例如在IMS数据库上执行某些操作。这是call语句的语法-

CALL 'CBLTDLI' USING DLI Function Code
                        PCB Mask
                        Segment I/O Area
                        [Segment Search Arguments]

上面的语法显示了可以与call语句一起使用的参数。我们将在下表中讨论它们中的每个-

S.No. Parameter & Description
1

DLI Function Code

Identifies the DL/I function to be performed. This argument is the name of the four character fields that describe the I/O operation.

2

PCB Mask

The PCB definition inside the Linkage Section is called as PCB Mask. They are used in the entry statement. No SELECT, ASSIGN, OPEN, or CLOSE statements are required.

3

Segment I/O Area

Name of an input/output work area. This is an area of the application program into which the DL/I puts a requested segment.

4

Segment Search Arguments

These are optional parameters depending on the type of the call issued. They are used to search data segments inside the IMS database.

以下是有关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.