Ims-db-dli-functions

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

IMS DB-DL/I関数

DL/I関数は、DL/I呼び出しで使用される最初のパラメーターです。 この関数は、IMS DL/I呼び出しによってIMSデータベースで実行される操作を通知します。 DL/I機能の構文は次のとおりです-

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 '.

この構文は、次のキーポイントを表します-

  • このパラメーターには、機能コードを保管する保管フィールドとして4文字の名前を指定できます。
  • DL/I関数パラメーターは、COBOLプログラムの作業用ストレージセクションにコーディングされています。
  • COBOLではCALLステートメントでリテラルをコーディングできないため、DL/I関数を指定するには、DL/I呼び出しでDLI-GUなどの05レベルのデータ名の1つをコーディングする必要があります。
  • DL/I機能は、Get、Update、およびその他の機能の3つのカテゴリーに分類されます。 それぞれについて詳しく説明します。

関数を取得する

Get関数は、プログラミング言語でサポートされている読み取り操作に似ています。 Get関数は、IMS DL/Iデータベースからセグメントをフェッチするために使用されます。 次のGet関数は、IMS DBで使用されます-

  • ユニークになる
  • 次を取得
  • 親内で次を取得
  • ユニークなホールド
  • 次にホールド
  • 親内で次に保留

DL/I関数呼び出しを理解するために、次のIMSデータベース構造を考えてみましょう-

IMS Database1

ユニークになる

「GU」コードは、Get Unique関数に使用されます。 COBOLのランダム読み取りステートメントと同様に機能します。 フィールド値に基づいて特定のセグメントオカレンスをフェッチするために使用されます。 フィールド値は、セグメント検索引数を使用して提供できます。 GU呼び出しの構文は次のとおりです-

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

COBOLプログラムのすべてのパラメーターに適切な値を指定して上記の呼び出しステートメントを実行すると、データベースからセグメントI/O領域のセグメントを取得できます。 上記の例では、Library、Magazines、Healthのフィールド値を指定すると、Healthセグメントの目的の出現を取得します。

次を取得

「GN」コードは、Get Next関数に使用されます。 COBOLのread nextステートメントと同様に機能します。 シーケンス内のセグメントオカレンスをフェッチするために使用されます。 データセグメントオカレンスにアクセスするための定義済みパターンは、階層を下に、次に左から右に向かっています。 GNコールの構文は次のとおりです-

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

COBOLプログラムのすべてのパラメーターに適切な値を指定して上記の呼び出しステートメントを実行すると、データベースからセグメントI/O領域のセグメントオカレンスを順番に取得できます。 上記の例では、ライブラリセグメントへのアクセスから始まり、次にブックスセグメントなどにアクセスします。 必要なセグメントオカレンスに到達するまで、GNコールを繰り返し実行します。

親内で次を取得

「GNP」コードは、親内の次の取得に使用されます。 この関数は、確立された親セグメントに従属するシーケンスでセグメントの出現を取得するために使用されます。 GNPコールの構文は次のとおりです-

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

ユニークなホールド

「GHU」コードは、Get Hold Uniqueに使用されます。 ホールド機能は、取得後にセグメントを更新することを指定します。 Get Hold Unique関数は、Get Uniqueコールに対応しています。 GHU呼び出しの構文は次のとおりです-

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

次にホールド

「GHN」コードは、Get Hold Nextに使用されます。 ホールド機能は、取得後にセグメントを更新することを指定します。 Get Hold Next関数は、Get Next呼び出しに対応しています。 以下は、GHN呼び出しの構文です-

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

親内で次に保留

「GHNP」コードは、親内の「次を保持」に使用されます。 ホールド機能は、取得後にセグメントを更新することを指定します。 親内の次のホールドを取得関数は、親内の次の呼び出しに対応します。 以下は、GHNP呼び出しの構文です-

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

更新機能

更新関数は、他のプログラミング言語での書き換えまたは挿入操作に似ています。 更新機能は、IMS DL/Iデータベースのセグメントを更新するために使用されます。 更新機能を使用する前に、セグメントオカレンスのHold句を使用した呼び出しが成功する必要があります。 次の更新機能は、IMS DBで使用されます-

  • インサート
  • 削除する
  • 交換する

インサート

「ISRT」コードは挿入機能に使用されます。 ISRT機能は、データベースに新しいセグメントを追加するために使用されます。 既存のデータベースの変更または新しいデータベースのロードに使用されます。 以下は、ISRT呼び出しの構文です-

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

削除する

「DLET」コードは、削除機能に使用されます。 IMS DL/Iデータベースからセグメントを削除するために使用されます。 以下に示すのは、DLET呼び出しの構文です-

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

交換する

「REPL」コードは、親内で次を取得するために使用されます。 置換機能は、IMS DL/Iデータベース内のセグメントを置換するために使用されます。 以下は、REPL呼び出しの構文です-

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

その他の機能

以下のその他の機能は、IMS DL/I呼び出しで使用されます-

  • チェックポイント
  • 再起動
  • PCB

チェックポイント

「CHKP」コードは、チェックポイント機能に使用されます。 IMSのリカバリー機能で使用されます。 以下に示すのは、CHKP呼び出しの構文です-

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

再起動

「XRST」コードは、再起動機能に使用されます。 IMSの再始動機能で使用されます。 XRST呼び出しの構文は次のとおりです-

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

PCB

PCB機能は、IMS DL/IデータベースのCICSプログラムで使用されます。 以下は、PCB呼び出しの構文です-

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

これらの機能の詳細については、リカバリの章をご覧ください。