IMS DB - Cobol 基礎



我們在 COBOL 應用程式程式中包含 DL/I 呼叫以與 IMS 資料庫通訊。我們在 COBOL 程式中使用以下 DL/I 語句來訪問資料庫:

  • 入口語句
  • Goback 語句
  • 呼叫語句

入口語句

它用於將控制權從 DL/I 傳遞到 COBOL 程式。以下是入口語句的語法:

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

以上語句在 COBOL 程式的過程部分中編碼。讓我們深入瞭解 COBOL 程式中入口語句的詳細資訊:

  • 批處理初始化模組觸發應用程式程式,並在其控制下執行。

  • DL/I 載入所需的控制塊和模組以及應用程式程式,並將控制權交給應用程式程式。

  • DLITCBL 代表DL/I 到 COBOL。入口語句用於定義程式中的入口點。

  • 當我們在 COBOL 中呼叫子程式時,也會提供其地址。同樣,當 DL/I 將控制權交給應用程式程式時,它還會提供程式 PSB 中定義的每個 PCB 的地址。

  • 應用程式程式中使用的所有 PCB 必須在 COBOL 程式的連線段內定義,因為 PCB 駐留在應用程式程式之外。

  • 連線段內 PCB 的定義稱為PCB 掩碼

  • 透過在入口語句中列出 PCB 來建立儲存器中 PCB 掩碼和實際 PCB 之間的關係。入口語句中的列出順序應與其在 PSBGEN 中出現的順序相同。

Goback 語句

它用於將控制權傳回 IMS 控制程式。以下是 Goback 語句的語法:

GOBACK

下面列出了關於 Goback 語句需要注意的基本要點:

  • GOBACK 在應用程式程式的末尾編碼。它將控制權從程式返回到 DL/I。

  • 我們不應使用 STOP RUN,因為它將控制權返回到作業系統。如果我們使用 STOP RUN,DL/I 將永遠沒有機會執行其終止功能。這就是為什麼在 DL/I 應用程式程式中使用 Goback 語句的原因。

  • 在發出 Goback 語句之前,必須關閉 COBOL 應用程式程式中使用的所有非 DL/I 資料集,否則程式將異常終止。

呼叫語句

呼叫語句用於請求 DL/I 服務,例如對 IMS 資料庫執行某些操作。以下是呼叫語句的語法:

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

以上語法顯示了您可以與呼叫語句一起使用的引數。我們將在下表中討論每個引數:

序號 引數和描述
1

DLI 函式程式碼

標識要執行的 DL/I 函式。此引數是描述 I/O 操作的四個字元欄位的名稱。

2

PCB 掩碼

連線段內 PCB 的定義稱為 PCB 掩碼。它們用於入口語句中。不需要 SELECT、ASSIGN、OPEN 或 CLOSE 語句。

3

段 I/O 區域

輸入/輸出工作區的名稱。這是一個應用程式程式區域,DL/I 將請求的段放入其中。

4

段搜尋引數

這些是根據發出的呼叫的型別而定的可選引數。它們用於搜尋 IMS 資料庫內的段資料。

以下是關於呼叫語句需要注意的事項:

  • 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.
廣告

© . All rights reserved.