Ims-db-cobol-basics

提供:Dev Guides
移動先:案内検索

IMS DB-Cobolの基本

COBOLアプリケーションプログラム内にDL/I呼び出しを含めて、IMSデータベースと通信します。 データベースにアクセスするには、COBOLプログラムで次のDL/Iステートメントを使用します-

  • エントリーステートメント
  • ゴーバックステートメント
  • 声明文

エントリーステートメント

DL/IからCOBOLプログラムに制御を渡すために使用されます。 ここにエントリステートメントの構文があります-

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

上記のステートメントは、COBOLプログラムの*手続き部*でコーディングされています。 COBOLプログラムのエントリステートメントの詳細に行きましょう-

  • バッチ初期化モジュールは、アプリケーションプログラムをトリガーし、その制御下で実行されます。
  • DL/Iは必要な制御ブロックとモジュール、およびアプリケーションプログラムをロードし、制御はアプリケーションプログラムに与えられます。
  • DLITCBLは、 DL/I to COBOL を表します。 エントリステートメントは、プログラムのエントリポイントを定義するために使用されます。
  • COBOLでサブプログラムを呼び出すと、そのアドレスも提供されます。 同様に、DL/Iがアプリケーションプログラムに制御を渡すと、プログラムのPSBで定義された各PCBのアドレスも提供します。
  • PCBはアプリケーションプログラムの外部にあるため、アプリケーションプログラムで使用されるすべてのPCBは、COBOLプログラムの Linkage Section 内で定義する必要があります。
  • リンケージセクション内のPCB定義は、 PCB Mask と呼ばれます。
  • ストレージ内のPCBマスクと実際のPCB間の関係は、entryステートメントにPCBをリストすることによって作成されます。 入力ステートメントのリストの順序は、PSBGENに表示される順序と同じでなければなりません。

ゴーバックステートメント

これは、制御をIMS制御プログラムに戻すために使用されます。 以下は、Gobackステートメントの構文です-

GOBACK

以下にリストされているのは、Gobackステートメントについて注意すべき基本的なポイントです-

  • GOBACKは、アプリケーションプログラムの最後にコーディングされます。 プログラムから制御をDL/Iに戻します。
  • オペレーティングシステムに制御を戻すため、STOP RUNを使用しないでください。 STOP RUNを使用すると、DL/Iは終了機能を実行する機会を得られません。 そのため、DL/Iアプリケーションプログラムでは、Gobackステートメントが使用されます。 *Gobackステートメントを発行する前に、COBOLアプリケーションプログラムで使用されているすべての非DL/Iデータセットを閉じる必要があります。閉じないと、プログラムが異常終了します。

声明文

呼び出しステートメントは、IMSデータベースで特定の操作を実行するなどのDL/Iサービスを要求するために使用されます。 ここに呼び出し文の構文があります-

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

上記の構文は、callステートメントで使用できるパラメーターを示しています。 次の表でそれらのそれぞれについて説明します-

S.No. Parameter & Description
1
  • DLI Function Code*

実行されるDL/I機能を識別します。 この引数は、I/O操作を記述する4つの文字フィールドの名前です。

2

PCB Mask

リンケージセクション内のPCB定義は、PCBマスクと呼ばれます。 これらは、エントリステートメントで使用されます。 SELECT、ASSIGN、OPEN、またはCLOSEステートメントは不要です。

3

Segment I/O Area

入力/出力作業領域の名前。 これは、DL/Iが要求されたセグメントを入れるアプリケーションプログラムの領域です。

4

Segment Search Arguments

これらは、発行されたコールのタイプに応じたオプションのパラメーターです。 IMSデータベース内のデータセグメントを検索するために使用されます。

以下は、Callステートメントに関する注意点です-

  • CBLTDLIは、 COBOL to DL/I の略です。 プログラムのオブジェクトモジュールとリンク編集されるインターフェイスモジュールの名前です。
  • 各DL/I呼び出しの後、DLIはPCBにステータスコードを保存します。 プログラムはこのコードを使用して、呼び出しが成功したか失敗したかを判断できます。

COBOLの詳細については、COBOLチュートリアルhttp://www.finddevguides.com/cobol/index [こちら]をご覧ください。 次の例は、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.