Ims-db-cobol-basics
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 |
実行される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.