Ims-db-control-blocks
提供:Dev Guides
IMS DB-制御ブロック
IMS制御ブロックは、IMSデータベースの構造とそれらへのプログラムのアクセスを定義します。 次の図は、IMS制御ブロックの構造を示しています。
DL/Iは、次の3種類の制御ブロックを使用します-
- データベース記述子(DBD)
- プログラム仕様ブロック(PSB)
- アクセス制御ブロック(ACB)
データベース記述子(DBD)
注意点-
- DBDは、すべてのセグメントが定義されると、データベースの完全な物理構造を記述します。
- DL/Iデータベースのインストール中に、IMSデータベースにアクセスするために必要なDBDを1つ作成する必要があります。
- アプリケーションは、DBDのさまざまなビューを使用できます。 これらはアプリケーションデータ構造と呼ばれ、プログラム仕様ブロックで指定されます。
- データベース管理者は、 DBDGEN 制御ステートメントをコーディングしてDBDを作成します。
DBDGEN
DBDGENは、データベース記述子ジェネレーターです。 制御ブロックの作成は、データベース管理者の責任です。 すべてのロードモジュールはIMSライブラリに保存されます。 アセンブリ言語マクロステートメントは、制御ブロックの作成に使用されます。 以下に示すのは、DBDGEN制御ステートメントを使用してDBDを作成する方法を示すサンプルコードです-
PRINT NOGEN
DBD NAME=LIBRARY,ACCESS=HIDAM
DATASET DD1=LIB,DEVICE=3380
SEGM NAME=LIBSEG,PARENT=0,BYTES=10
FIELD NAME=(LIBRARY,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM NAME=BOOKSEG,PARENT=LIBSEG,BYTES=5
FIELD NAME=(BOOKS,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM NAME=MAGSEG,PARENT=LIBSEG,BYTES=9
FIELD NAME=(MAGZINES,SEQ),BYTES=8,START=1,TYPE=C
DBDGEN
FINISH
END
上記のDBDGENで使用されている用語を理解しましょう-
- JCL で上記の制御ステートメントを実行すると、LIBRARYがルートセグメントであり、BOOKSおよびMAGZINESがその子セグメントである物理構造が作成されます。
- 最初のDBDマクロステートメントは、データベースを識別します。 ここで、このデータベースにアクセスするためにDL/Iによって使用されるNAMEおよびACCESSに言及する必要があります。
- 2番目のDATASETマクロステートメントは、データベースを含むファイルを識別します。 *セグメントタイプは、SEGMマクロステートメントを使用して定義されます。 そのセグメントの親を指定する必要があります。 ルートセグメントの場合、PARENT = 0を指定します。
次の表は、FIELDマクロステートメントで使用されるパラメータを示しています-
S.No | Parameter & Description |
---|---|
1 |
フィールドの名前、通常は1〜8文字の長さ |
2 |
Bytes フィールドの長さ |
3 |
Start セグメント内のフィールドの位置 |
4 |
Type フィールドのデータ型 |
5 |
Type C 文字データ型 |
6 |
Type P パック10進数データ型 |
7 |
Type Z ゾーン10進数データ型 |
8 |
Type X 16進データ型 |
9 |
Type H ハーフワードバイナリデータタイプ |
10 |
Type F フルワードのバイナリデータタイプ |
プログラム仕様ブロック(PSB)
PSBの基本は以下のとおりです-
- データベースにはDBDによって定義された単一の物理構造がありますが、それを処理するアプリケーションプログラムはデータベースの異なるビューを持つことができます。 これらのビューはアプリケーションデータ構造と呼ばれ、PSBで定義されます。
- 1回の実行で複数のPSBを使用できるプログラムはありません。
- アプリケーションプログラムには独自のPSBがあり、同様のデータベース処理要件を持つアプリケーションプログラムがPSBを共有することは一般的です。
- PSBは、プログラム通信ブロック(PCB)と呼ばれる1つ以上の制御ブロックで構成されます。 PSBには、アプリケーションプログラムがアクセスするDL/Iデータベースごとに1つのPCBが含まれています。 今後のモジュールでPCBについて詳しく説明します。
- プログラムのPSBを作成するには、PSBGENを実行する必要があります。
PSBGEN
PSBGENは、プログラム仕様ブロックジェネレーターとして知られています。 次の例では、PSBGENを使用してPSBを作成します-
PRINT NOGEN
PCB TYPE=DB,DBDNAME=LIBRARY,KEYLEN=10,PROCOPT=LS
SENSEG NAME=LIBSEG
SENSEG NAME=BOOKSEG,PARENT=LIBSEG
SENSEG NAME=MAGSEG,PARENT=LIBSEG
PSBGEN PSBNAME=LIBPSB,LANG=COBOL
END
上記のDBDGENで使用されている用語を理解しましょう-
- 最初のマクロステートメントは、データベースタイプ、名前、キー長、および処理オプションを記述するプログラム通信ブロック(PCB)です。
- PCBマクロのDBDNAMEパラメーターは、DBDの名前を指定します。 KEYLENは、最長の連結キーの長さを指定します。 プログラムはデータベースで処理できます。 PROCOPTパラメーターは、プログラムの処理オプションを指定します。 たとえば、LSはLOAD操作のみを意味します。
- SENSEGは、セグメントレベル感度として知られています。 データベースの一部へのプログラムのアクセスを定義し、セグメントレベルで識別されます。 プログラムは、機密性の高いセグメント内のすべてのフィールドにアクセスできます。 プログラムは、フィールドレベルの感度を持つこともできます。 これで、セグメント名とセグメントの親名を定義します。
- 最後のマクロステートメントはPCBGENです。 PSBGENは、処理するステートメントがこれ以上ないことを伝える最後のステートメントです。 PSBNAMEは、出力PSBモジュールに与えられる名前を定義します。 LANGパラメーターは、アプリケーションプログラムが記述されている言語(COBOLなど)を指定します。
アクセス制御ブロック(ACB)
以下にリストされているのは、アクセス制御ブロックに関する注意点です-
- アプリケーションプログラムのアクセス制御ブロックは、データベース記述子とプログラム仕様ブロックを実行可能な形式に結合します。
- ACBGENは、アクセス制御ブロックジェネレーターとして知られています。 ACBの生成に使用されます。
- オンラインプログラムの場合、ACBを事前に作成する必要があります。 したがって、ACBGENユーティリティは、アプリケーションプログラムを実行する前に実行されます。
- バッチプログラムの場合、実行時にACBも生成できます。