我们在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中显示的顺序相同.
用于将控制权传递回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.