データベースの単一レコード内に複数のオカレンスを持つ、データベースのデータ項目のグループを、レコード配列 といいます。
通常、表およびビューは、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 プログラミング・ガイド」を参照してください。
05 DEPENDENTS-ARRAY OCCURS 20 TIMES
従業員がいくつの従属を持っているかにかかわりなく、配列はソース・データベースのレコードに 20 回出現します。
NULL IS 処理
データ・サーバーの照会プロセッサーは、実行時に NULL の配列インスタンスを SQL ROW 候補としてスキップします。従属配列の例で、従業員が 3 つの従属を持っており、その配列が 20 回出現する場合、配列の 17 の NULL インスタンスは結果セットに行として出現しません。
DDL に NULL IS 値を組み込んで、比較値に基づいて、指定された配列インスタンスを NULL として識別することができます。比較値は、以下の方法で NULL の配列インスタンスを識別することができます。
以下の NULL IS ALL DDL の例では、1 文字 X が比較値です。配列インスタンスの各文字が X である場合、その配列のインスタンスは NULL です。
MAXOCCURS 20 NULL IS ALL X
レコード配列の NULL インスタンスは、配列の ALL インスタンスが NULL である場合を除き、行として結果セットに戻されません。 配列のすべてのインスタンスが NULL である場合、クラシック・フェデレーションは、非配列の情報に対して単一行をレコードに戻し、配列のデータ項目を NULL に設定します。 従属配列の例では、従業員には従属がありません。
05 NUMBER-OF-DEPENDENTS PIC 9(4) COMP. 05 DEPENDENTS-ARRAY OCCURS 1 TO 20 TIMES DEPENDING ON NUMBER-OF-DEPENDENTS.
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 構造をサポートします。
上限は実際の数を反映する必要があり、下限が 1 の場合のみ実際の数が入ります。
PL/I の構文解析プログラムが、複雑すぎて処理できない REFER 文節を検出した場合、構文解析プログラムはその構造全体を無視し、妥当性検査のプロセスでその配列定義に関連したエラーが表示されます。