データベース記述 (DBD) 生成ユーティリティー

DBD ライブラリーを使用する IMS システムでは、データベース記述生成 (DBDGEN) ユーティリティーを使用してデータベースを定義し、アプリケーション・プログラムでデータベースを使用できるようにします。

このユーティリティーは、カタログを使用してランタイム・アプリケーション制御ブロックを管理する IMS システムでは使用できません。

データベース記述 (DBD) は、アプリケーション・プログラムが必要とする データベース情報のすべてを含んでいる DL/I 制御ブロックです。

データベース記述 (DBD) は、特殊マクロ命令をコーディングすることにより 作成します。 これらのマクロは、DBDGEN ユーティリティーへの入力になります。

各物理データベースの記述に使用できる物理 DBD は 1 つのみです。それ以上使用すると、 0850、0852、または 0853 などのユーザー異常終了が起こります。 実行時に、DL/I は DBD を使用して、内部制御ブロックの集合を作成します。

DBDGEN ユーティリティーは、各 DBD を次のデータベース情報を使って定義します。

  • セグメント・タイプ
  • セグメント・タイプ間の物理関係と論理関係
  • データベース編成とアクセス方式
  • データベースの物理的特性
  • 選択された出口ルーチンの名前およびデータ・オプションを定義する
  • データベースおよびそのデータベースに保管されているデータを記述するメタデータ

サブセクション。

制約事項

現在、DBDGEN ユーティリティーについて文書化されている制約事項はありません。

前提条件

現在、DBDGEN ユーティリティーについて文書化されている前提条件はありません。

要件

DBDGEN 入力の構造化には厳密な規則があります。 データベースごとに別々の入力セットが必要です。

推奨事項

現在、DBD 生成ユーティリティーについて文書化されている推奨事項はありません。

入出力

DBDGEN プログラムは、いくつかのタイプの制御ステートメントを受け入れます。

  • DBD ステートメントは、記述するデータベースの名前を指定し、 データベース編成に関する情報を DL/I に与えます。
  • DATASET ステートメントは、非 DEDB DBDGEN 入力レコード構造の中でのみ使用します。 DATASET ステートメントは、データベース内のデータ・セット・グループを 定義します。 1 つ以上の DATASET ステートメントが DBD ステートメントの後に続きます。
  • AREA ステートメントは、DEDB DBDGEN 入力レコード構造の中でのみ使用します。 AREA ステートメントは、データベース内の区域を定義します。 1 つ以上の AREA ステートメントが DBD ステートメントの後に続きます。
  • SEGM ステートメントは、指定されたデータベースのセグメントを定義します。 SEGM ステートメントは、次のステートメントと一緒に使用されます。
    • フィールド
    • XDFLD
    • LCHILD
    • DFSMARSH
    • DFSMAP
    • DFSCASE
    各ステートメントで、セグメントまたはセグメント内のフィールドのさまざまな側面を定義します。
  • DBDGEN ステートメントは、DBDGEN 制御ステートメントの終わりを表します。
  • FINISH は、互換性を保つために入力ストリーム内に残されているオプションの ステートメントです。
  • END ステートメントは、入力ステートメントの終わりに達したことを z/OS® アセンブラーに示します。

3 つのタイプの印刷出力と 1 つのロード・モジュール。これは、 IMS.DBDLIBは、DBD 生成によって作成されます。 これらの出力のそれぞれについては、以下のセクションで説明します。

制御ステートメントのリスト

これは、このジョブ・ステップへの入力ステートメント・イメージを リストしたものです。

診断

各ステートメントの処理中にエラーが検出されると、診断メッセージが出されます。 これらのメッセージは、読み取られた最後のステートメントのイメージの直後に印刷されます。 このメッセージは、直前のステートメント、または前のステートメントのグループのいずれかを指し示します。 各ステートメントごとに複数のメッセージを印刷することも可能です。

この場合には、それらのメッセージは互いに出力リスト上に続きます。 すべてのステートメントが読み取られた後に、デック全体の妥当性についてさらに検査が行われます。 これによって、1 つ以上の診断メッセージがさらに出される場合があります。

エラーが検出されると、診断メッセージが印刷され、ステートメントがリストされ、残りの出力が抑制されます。 しかし、DBD 生成の実行が終了する前に、すべての制御ステートメントが読み取られて、検査されます。 ステートメント・エラーが検出された場合、DBD 生成のバインド・ステップは処理されません。

アセンブラー・リスト

DBD 生成の実行で作成される DBD マクロ展開のアセンブラー言語リストが提供されます。 アセンブラー言語の PRINT NOGEN ステートメントを含めれば、このリストの 印刷出力をなくすことができます。

オペレーティング・システムのアクセス方式として VSAM を使用する データベースについての DBD 生成では、アセンブラー・リストのページに 、データベースのデータ・セットを VSAM に定義するときに必要な一部の パラメーターの推奨値が記載されます。 これらの推 奨値以外に、CONTROLINTERVALSIZE と RECORDSIZE の値を、パフォーマンスの向 上などの特別の理由で指定することができます。 すべての ESDS 定義に合わせて RECORDSIZE を変更する必要があります。

制御インターバル・サイズが指定されていない場合 ( 表 2の GSAM 行の SIZE パラメーターを参照)、このアセンブラー・リストで推奨されるサイズがデフォルトになります。 以下に、HISAM データベースの場合に作成される出力の例を示します。 示されているパラメーターは、アクセス方式サービス・プログラムの制御ステートメントで必要な形式です。 最初の DEFINE は、キー順データ・セット (KSDS) 用のパラメーターを示し、2 番目の DEFINE は、入力順データ・セット (ESDS) 用のパラメーターを示しています。

VSAM データ・セットを完全に定義するときは、DBD 生成で提供され るものに、データ・セット名のパラメーター (NAME)、スペース割り振りの パラメーター (CYL)、およびボリューム割り当てのパラメーター (VOLUMES) を 追加する必要があります。 FREESPACE および WRITECHECK などのオプション・パラメーターは、必要であれば 含めることができます。

DBD 生成からのアクセス方式サービス・プログラムのパラメーターの例

/DBD コマンドを使用して、VSAM データベースのオフライン・ダンプを使用可能にするため には、そのデータベースのデータ・セットに対して VSAM DEFINE 操作で SHARE OPTIONS(3) を 使用する必要があります。 DBD 生成からのアクセス方式サービス・プログラムのパラメーターの例を次に示します。

+*,* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*,*
+*,     RECOMMENDED VSAM DEFINE CLUSTER PARAMETERS
+*,*
+*,* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*,* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*,*                   *NOTE 1
+*,     DEFINE CLUSTER (NAME(DDI3I1) -
+*,*           INDEXED KEYS (6, 10) -
+*,*           RECORDSIZE (680,680) -
+*,*           DATA (CONTROLINTERVALSIZE (4096))
+*,*  *NOTE 1: SHOULD SPECIFY DSNAME FOR DDI3I1
+*,* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*,* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*,*                   *NOTE 2
+*,*    DEFINE CLUSTER (NAME(DDI3O1) NONINDEXED -
+*,*           RECORDSIZE (680,680) -
+*,*           CONTROLINTERVALSIZE (4096))
+*,*  *NOTE 2: SHOULD SPECIFY DSNAME FOR DDI301
+*,* * * * * * * * * * * * * * * * * * * * * * * * * * * * *

セグメント・フラグのコード

DBD 生成で生成されたものの確認のために、セグメント・フラグ がその特定の DBD 生成出力の中に印刷されます。 フラグを解釈すれば、どのポインター・オプションが生成されたか、 指定されたセグメントの挿入、削除、および置換の規則、物理子ポインターが このセグメントの接頭部に確保されているかどうか、そしてセグメントに 関連付けられた物理子の数がわかります。 セグメント・フラグは、アセンブラー言語の定数定義 (DC) ステートメント として、出力の中に示されます。 この定数は、8 桁の 16 進数とそれに続く SEGMENT FLAGS という記述で 定義されます。 定数の各対の数字は、16 進バイトです。 定数を解釈するときは、次の図に示されているように、最初の 6 桁を 2 進数に変換し、最後の 2 桁を 10 進数に変換してください。

         CONVERTED
BYTE     VALUE         DESCRIPTION
 
 0                     POINTER POSITIONS GENERATED:
 
         1.......      CTR (Counter)
         .1......      Physical twin forward
         .11.....      Physical twin forward and backward
         ...1....      Physical parent
         ....1...      Logical twin forward
         ....11..      Logical twin forward and backward
         ......1.      Logical parent
         .1.....1      Hierarchic forward
         .11....1      Hierarchic forward and backward
 
 1                     SEGMENT PROCESSING RULES:
 
         10......      Insert physical
         01......      Insert virtual
         11......      Insert logical
         ..10....      Insert nonsequential last
         ..01....      Insert nonsequential first
         ..11....      Insert nonsequential here at current position
         ....10..      Replace physical
         ....01..      Replace virtual
         ....11..      Replace logical
         ......10      Delete physical
         ......01      Delete virtual
         ......11      Delete logical
         ......00      Bivirtual delete
 
2        ..XX.XXX      Reserved
      1.......      Segment is paired
         .1......      Segment is a direct dependent in a FP DEDB
         ....1...      Segment's parent has two physical child
                       pointers; hierarchic pointers were not specified
 
3        0-254         Number of physical children of this segment
                       pointed to by physical child pointers

セグメント接頭部の形式の説明

これらの値を 2 進数と 10 進数に変換して表示すると、次のようになります。

  Byte 0   Byte 1    Byte 2    Byte 3
   FE       FD        08       0A
11111110  11111101  00001000   10
バイト 0
セグメントには、カウンター、物理兄弟順方向および逆方向、 論理兄弟順方向および逆方向、物理親、および論理親のポインターがあります。
バイト 1
指定された挿入規則および置き換え規則は論理であり、指定された削除規則は 仮想です。 非順次は現在位置に挿入されます。
バイト 2
このセグメントの親の中に、物理子ポインター用の 4 バイトの フィールドが 2 つ確保されています。
バイト 3
このセグメントは、10 個の物理子の親です。

DBD 生成の出力には、次のステートメントが入っています。

DC  X'FEFD080A'  SEGMENT FLAGS

ロード・モジュール

DBD 生成は、2 ステップからなるオペレーティング・システム・ジョブです。 ステップ 1 は、ステップ 2 への入力となるオブジェクト・モジュールを生成するマクロ・アセンブリー実行です。 ステップ 2 は、オブジェクト・モジュールのバインドです。これにより、 IMS.DBDLIB ライブラリー。

DBD 生成エラー条件

データベースのタイプごとに示されているオペランドまたはパラメーター以外のものを指定するか、必要なオペランドまたはパラメーターを省略すると、以下の 1 つ以上の条件が起こります。

  • DBD 生成で以下の診断メッセージが出されます。
    • 定義中のデータベース・タイプのものではないオペランドまたは パラメーターにフラグを付けるメッセージ
    • 定義中のデータベース・タイプに必須のオペランドまたは パラメーターが省略されていることを指摘するメッセージ
  • DBD 生成は完了しますが、DL/I は、定義されたデータベース・タイプにとって該当しないオペランドまたはパラメーターが指定されたため、生成された 制御情報を無視します。
  • DBD 生成は完了しますが、DL/I は、定義されたデータベースを作成し アクセスすることができません。その理由は、(a) データベースを相互に関連付けようとしたときに、 矛盾する制御情報が指定されていた、または (b) アプリケーション・プログラムから 見たときのデータベースのセグメント関係の記述が DBD 生成で正しく定義されて いないためです。
  • DBD 生成は完了し、DL/I はデータベースを作成しアクセスします。 しかし、提供される結果が、望んでいたものとは異なっています。 欠落制御情報または矛盾する制御情報を見つけた場合に DL/I が実行した デフォルトのアクションが、DBD 生成時に考慮されていなかったアクションである 場合に、この条件が起こる可能性があります。