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


レコード配列

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

例えば、従業員に対してレコードを定義し、従業員の従属情報 (配偶者および子) をそのレコードに含めることができます。1 人の従業員には複数の従属を含められるため、COBOL OCCURS 文節を指定することによって、実際の従業員のレコード内で従属情報の配列を宣言することができます。 以下の例では、20 の従属の配列がレコード内で宣言されています。
01  EMPLOYEE-RECORD.
05 EMP-LAST-NAME PIC X(20).
05 EMP-FIRST-NAME PIC X(20).
05 EMPSSN                                      PIC 9(9).
......
05 DEPENDENTS-ARRAY OCCURS 20 TIMES 
10 DEP-SSN PIC 9(9).
            10 DEP-NAME PIC X(20).
            10 DEP-DOB  PIC  9(6).
10 DEP-RELATIONSHIP-TO-EMPL  PIC X.
別の一般的なレコード配列の構造では、可変的に循環するデータを定義します。 この例では、レコードには配列データの最大 20 個のオカレンスが入っています。 実際のオカレンスの数は、他の幾つかのデータ項目の値によって異なります。 以下の例では、SSN とは、アメリカ合衆国で使用される国際 ID である Social Security Number のことです。
01 EMPLOYEE-RECORD.
05 EMP-LAST-NAME PIC X(20).
05 EMP-FIRST-NAME PIC X(20).
05 EMP-SSN PIC 9(9).
.......
05 NUMBER-OF-DEPENDENTS PIC 9(4) COMP.
05 DEPENDENTS-ARRAY OCCURS 1 TO 20 TIMES
   DEPENDING ON NUMBER-OF-DEPENDENTS.
10 DEP-SSN PIC 9(9).
            10 DEP-NAME PIC X(20).
            10 DEP-DOB  PIC  9(6).
10 DEP-GENDER PIC X.
.......
以下の例のメタデータは、先ほどの COBOL サンプル集にあるデータ項目のサブセットをマップします。
CREATE TABLE CAC.EMPL .....
(
  EMP_SSN SOURCE DEFINITION
   DATAMAP OFFSET 40 LENGTH 9 DATATYPE C 
   USE AS CHAR(9),
  NUMBER_OF_DEPENDENTS SOURCE DEFINITION
   DATAMAP OFFSET 49 LENGTH 2 DATATYPE H 
   USE AS SMALLINT,  
 BEGINLEVEL 1 OFFSET 51 LENGTH 36 OCCURS 20
   DEPENDING ON COLUMN NUMBER_OF_DEPENDENTS,
  DEP_SSN SOURCE DEFINITION
   DATAMAP OFFSET 0 LENGTH 9 DATATYPE C
   USE AS CHAR(9),
  DEP_NAME SOURCE DEFINITION
   DATAMAP OFFSET 9 LENGTH 20 DATATYPE C
   USE AS CHAR(20),
         ENDLEVEL 1
)

この例では、従業員の社会保障番号フィールド、COBOL DEPENDING ON 変数、従属する社会保障番号フィールド、および従属する名前フィールドにのみマップします。 OCCURS 文節 DEPENDENTS-ARRAY の項目は、ステートメントの BEGINLEVEL、ENDLEVEL ブロック内に入っています。 ステートメントのブロックは、繰り返すデータ項目のグループを示しています。 このマッピングを COBOL レコードから SQL 列に変換する場合、クラシック・フェデレーションは DEPENDENT-ARRAY の各オカレンスを非配列データ項目と結合し、SQL 行を作成します。 この場合、配列のデータ項目 DEP-SSN および DEP-NAME の各オカレンスは、非配列データ項目 EMP-SSN および NUMBER-OF-DEPENDENTS と結合されます。

例えば、データベースにある従業員の社会保障番号 123456789 のレコードに 3 つの従属が含まれる場合、その特定のレコードに対して 3 つの個別の行が戻されます。

以下の照会は、以下の結果セットを戻します。

照会:

SELECT EMP_SSN, NUMBER_OF_DEPENDENTS, DEP_SSN, DEP_NAME FROM 
CAC.EMPL WHERE EMP_SSN = '123456789';

結果セット:

EMP_SSN   NUMBER_OF_DEPENDENTS  DEP_SSN   DEP_NAME
123456789        3              111223333 Depen1
123456789        3              222334444 Depen2
123456789        3              333445555 Depen3

制約事項

クラシック・フェデレーションは、ネストされた OCCURS DEPENDING ON 定義をサポートしていません。 OCCURS DEPENDING ON 構造の後に固定列が含まれる表を定義することはできません。

含まれる出現回数が固定しているレコード配列には NULL IS 定義を含めることができます。 これらの配列のオカレンスは、実行時に SQL ROW 候補としてスキップされます。 NULL IS 定義は、配列自体の比較値または配列のインスタンスを表す配列の列を NULL で示します。レコード配列の NULL インスタンスは、配列の ALL インスタンスが NULL である場合を除き、行として結果セットに戻されません。 配列のすべてのインスタンスが NULL である場合、クラシック・フェデレーションは、非配列の情報に対して単一行をレコードに戻し、配列のデータ項目を NULL に設定します。

関連概念
OCCURS 処理
単一の COBOL サンプル集での複数のレコード配列


フィードバック

更新アイコン 最終更新日: 2006 年 12 月 15 日