开发手册 欢迎您!
软件开发者资料库

IMS DB - Cobol Basics

IMS DB Cobol基础知识 - 从基本概念到高级概念,简单易学地学习IMS DB,其中包括概述,结构,DL / I术语,DL / I处理,控制块,编程,COBOL基础,DL / I功能,PCB MASK,SSA,数据检索,数据操作,二次索引,逻辑数据库,恢复,访谈问题。

我们在COBOL应用程序中包含DL/I调用以与IMS数据库通信.我们在COBOL程序中使用以下DL/I语句来访问数据库 :

  • 条目语句

  • Goback声明

  • 致电声明

参赛声明

它用于将控制从DL/I传递到COBOL程序.以下是条目语句的语法 :

ENTRY 'DLITCBL' USING pcb-name1                     [pcb-name2]

上述语句在COBOL程序的 Procedure Division 中编码.让我们详细介绍COBOL程序中的entry语句 :

  • 批处理初始化模块触发应用程序和在其控制下执行.

  • DL/I加载所需的控制块和模块以及应用程序,并对应用程序进行控制./p>

  • DLITCBL代表 DL/I到COBOL . entry语句用于定义程序中的入口点.

  • 当我们在COBOL中调用子程序时,也会提供其地址.同样,当DL/I将控制权交给应用程序时,它还提供程序PSB中定义的每个PCB的地址.

  • 所有PCB应用程序中使用的必须在COBOL程序的链接部分中定义,因为PCB位于应用程序之外.

  • 连接部分内的PCB定义称为 PCB掩模.

  • PCB掩模与存储中的实际PCB之间的关系由在条目声明中列出PCB. entry语句中的列表顺序应与它们在PSBGEN中显示的顺序相同.

Goback语句

用于将控制权传递回IMS控制程序.以下是Goback语句的语法 :

GOBACK

下面列出了关于Goback语句的基本要点 :

  • GOBACK在应用程序结束时编码.它将控件从程序返回到DL/I.

  • 我们不应该使用STOP RUN,因为它将控件返回给操作系统.如果我们使用STOP RUN,DL/I永远不会有机会执行其终止功能.这就是为什么在DL/I应用程序中使用Goback语句.

  • 在发出Goback语句之前,所有非DL/I数据集都在必须关闭COBOL应用程序,否则程序将异常终止.

致电声明

Call语句用于请求DL/I服务,例如在IMS数据库上执行某些操作.以下是调用语句的语法 :

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

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

S.No.参数&描述
1

DLI Function Code

标识要执行的DL/I功能.此参数是描述I/O操作的四个字符字段的名称.

2

PCB Mask

连接部分内的PCB定义称为PCB掩模.它们用在条目语句中.不需要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.