Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


例: 複合 ODO

次の例は、複合 ODO が現れる場合の可能なタイプを示しています。

01  FIELD-A.
    02 COUNTER-1                             PIC S99.
    02 COUNTER-2                             PIC S99.
    02 TABLE-1.
       03 RECORD-1 OCCURS 1 TO 5 TIMES
                   DEPENDING ON COUNTER-1    PIC X(3).
    02 EMPLOYEE-NUMBER                       PIC X(5). (1)
    02 TABLE-2 OCCURS 5 TIMES                          (2)(3)
               INDEXED BY INDX.                        (4)
       03 TABLE-ITEM                         PIC 99.   (5)
       03 RECORD-2 OCCURS 1 TO 3 TIMES
                   DEPENDING ON COUNTER-2.
          04 DATA-NUM                        PIC S99.

定義: この例では、COUNTER-1ODO オブジェクト です。つまり、RECORD-1DEPENDING ON 文節のオブジェクトです。RECORD-1ODO サブジェクト であると言われます。同様に、COUNTER-2 は、対応する ODO サブジェクトである RECORD-2 の ODO オブジェクトです。

上の例に示されている複合 ODO オカレンスのタイプは、次のとおりです。

(1)
可変位置項目: EMPLOYEE-NUMBER は、同じレベル 01 レコード内の可変長テーブルに続いている (ただし、従属してはいない) データ項目です。
(2)
可変位置テーブル: TABLE-2 は、同じレベル 01 レコード内の可変長テーブルに続いている (ただし、従属してはいない) テーブルです。
(3)
可変長エレメントを持つテーブル: TABLE-2 は、従属データ項目 RECORD-2 を含んでいるテーブルであり、この従属データ項目の出現回数は ODO オブジェクトの内容によって異なります。
(4)
可変長エレメントを持つテーブルの指標名 INDX
(5)
可変長エレメントを持つテーブルの エレメント TABLE-ITEM

長さの計算方法

各レコードの可変部分の長さは、その ODO オブジェクトとその ODO サブジェクトの長さとの積です。例えば、上記に示された複合 ODO 項目の 1 つに参照が行われるたびに、使用される際の実際の長さは、次のように計算されます。

ODO オブジェクトの値の設定

グループ内の複合 ODO 項目を参照するには、グループ項目内のすべての ODO オブジェクトを設定しておく必要があります。例えば、上記のコードの EMPLOYEE-NUMBER を参照するには、その前に、COUNTER-1COUNTER-2 を設定しておかなければなりません。ただし、EMPLOYEE-NUMBER は ODO オブジェクトに直接依存して値を得るわけではありません。

制約事項: ODO オブジェクトは可変的に配置することはできません。


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)