WebSphere ロゴ Classic Federation Server for z/OS バージョン 9.1
WebSphere ロゴ Classic Replication Server for z/OS バージョン 9.1
WebSphere ロゴ Classic Data Event Publisher for z/OS バージョン 9.1
WebSphere ロゴ Data Integration Classic Connector for z/OS バージョン 9.1


レコード配列

データベースの単一レコード内に複数のオカレンスを持つ、データベースのデータ項目のグループを、レコード配列 といいます。

通常、表およびビューは、COBOL サンプル集または PL/I インクルード・ファイルのデータ定義をインポートすることによりマップします。サンプル集またはインクルード・ファイルには、配列定義を含めることができます。Classic Data Architect は、BEGINLEVEL および ENDLEVEL ブロック内で定義をステートメントに変換して、平らにして列にしていない配列定義をマップします。次にアプリケーションは、BEGINLEVEL ステートメントを含むデータ定義言語 (DDL) を生成します。データ・サーバーで DDL を実行すると、ユーザー表が作成されます。

配列データを照会するときのパフォーマンスを最適化できます。配列データの挿入、更新、削除、または変更キャプチャーを実行する場合、構造を平らにする必要があります。配列データの処理については、関連する配列のトピックを参照してください。

COBOL の処理については、「Enterprise COBOL for z/OS 言語解説書」および「Enterprise COBOL for z/OS プログラミング・ガイド」を参照してください。PL/I の処理については、「WebSphere Developer for System z PL/I for Windows 言語解説書」および「Enterprise PL/I for z/OS プログラミング・ガイド」を参照してください。

固定長配列

固定長配列構造は、インスタンスの数が変更されない配列を定義します。例えば、従業員のレコードには、従業員の従属情報 (配偶者および子) を含めることができます。1 人の従業員には複数の従属を含めることができるため、COBOL の OCCURS 文節または PL/I の DIMENSION (DIM) 属性を指定することによって、従業員のレコード内で従属情報の配列を宣言することができます。 以下の COBOL の OCCURS 文節の例は、固定長配列を定義しています。
    05 DEPENDENTS-ARRAY OCCURS 20 TIMES

従業員がいくつの従属を持っているかにかかわりなく、配列はソース・データベースのレコードに 20 回出現します。

NULL IS 処理

データ・サーバーの照会プロセッサーは、実行時に NULL の配列インスタンスを SQL ROW 候補としてスキップします。従属配列の例で、従業員が 3 つの従属を持っており、その配列が 20 回出現する場合、配列の 17 の NULL インスタンスは結果セットに行として出現しません。

DDL に NULL IS 値を組み込んで、比較値に基づいて、指定された配列インスタンスを NULL として識別することができます。比較値は、以下の方法で NULL の配列インスタンスを識別することができます。

  • 配列インスタンスの最初の列の始まりが、比較値と一致する (NULL IS null-value)。
  • 配列インスタンスの各文字が、1 文字の比較値と一致する (NULL IS ALL null-value)。
  • 配列の指定された列の始まりが、比較値と一致する (NULL IS column-name EQUAL null-value)。

以下の NULL IS ALL DDL の例では、1 文字 X が比較値です。配列インスタンスの各文字が X である場合、その配列のインスタンスは NULL です。

    MAXOCCURS 20 NULL IS ALL X

レコード配列の NULL インスタンスは、配列の ALL インスタンスが NULL である場合を除き、行として結果セットに戻されません。 配列のすべてのインスタンスが NULL である場合、クラシック・フェデレーションは、非配列の情報に対して単一行をレコードに戻し、配列のデータ項目を NULL に設定します。 従属配列の例では、従業員には従属がありません。

可変長配列

別の一般的なレコード配列の構造では、可変長データを定義します。 配列インスタンスの数は、構造の配列の前に置かれるデータ項目の値 (NUMBER-OF-DEPENDENTS など) に依存しています。COBOL では、配列宣言は以下のとおりです。
    05 NUMBER-OF-DEPENDENTS PIC 9(4) COMP.
    05 DEPENDENTS-ARRAY OCCURS 1 TO 20 TIMES
       DEPENDING ON NUMBER-OF-DEPENDENTS.
次の例は、従属の数の値を含む変数を指す REFER 属性を使用する PL/I での類似の配列宣言を示しています。
     5 NUMBER_OF_DEPENDENTS BIN FIXED(15),
     5 DEPENDENTS_ARRAY DIM(N1 REFER(NUMBER_OF_DEPENDENTS)),

PL/I には COBOL の DEPENDING ON 文節に相当する構文がないため、データ・サーバーは、配列オフセット、配列サイズ、およびレコードまたはセグメントの長さに基づいて、自動的に配列インスタンスの数を計算します。公式は以下のとおりです。

<Number-of-array-instances> = (<record-length> - 1 - <array-offset>)/<array-size>

インスタンスの数は、ウィザードによって生成された DDL には出現しません。カタログで表定義を作成する前に、データ・サーバーが DDL を処理し、表情報の妥当性検査をするときに、その数が計算されます。

制約事項

ネストされた可変長配列に基づく表、または可変長配列の後に固定列を含む表はマップすることができません。この理由は、可変長配列構造に続く列は予測可能なオフセットに出現しないからです。

「新しい表 (New Table)」ウィザードは、以下の制限付きで、PL/I REFER 構造をサポートします。

  • REFER 文節は、マルチディメンション配列の最初のディメンションに現れなければなりません。
  • 配列には、後で作成された兄弟や、兄弟を持つ親があってはなりません。
  • REFER 文節は、上限になければならず、下限は 1 でなければなりません。

    上限は実際の数を反映する必要があり、下限が 1 の場合のみ実際の数が入ります。

PL/I の構文解析プログラムが、複雑すぎて処理できない REFER 文節を検出した場合、構文解析プログラムはその構造全体を無視し、妥当性検査のプロセスでその配列定義に関連したエラーが表示されます。

関連概念
複数のレコード配列でのパフォーマンスの考慮
フェデレーションおよび変更キャプチャーのレコード配列定義
関連資料
配列定義の例
関連情報
クラシック・フェデレーションのデータ・マッピング
変更キャプチャー用のデータ・マッピング


フィードバック

更新アイコン 最終更新日: 2007 年 7 月 11 日