COBOL2002 言語 拡張仕様編


13.4.16 REPEAT COLUMN句(WINDOW SECTION)

形式

[図データ]

機能

REPEAT COLUMN(繰り返し列)句は,同じデータ構造を横方向に繰り返す。

一般規則

  1. REPEAT COLUMN句は,01レベルを除く集団項目に指定できる。

  2. REPEAT COLUMN句を指定した記述項に従属する項目にはREPEAT COLUMN句を指定してはならない。

  3. Windows COBOL2002では整数1および整数2は符号のない1〜3けたの数字で,整数1は1〜160,整数2は0〜158でなければならない。

    UNIX COBOL2002では整数1および整数2は符号のない1〜2けたの数字で,整数1は1〜80,整数2は0〜78でなければならない。

  4. REPEAT COLUMN句を書いた記述項のデータ名を参照するときには,添字を付ける。さらに,これに従属するデータ項目の名前を参照するときにも,添字を付ける。ただし,添字の付け方はマニュアル「COBOL2002 言語 標準仕様編」 「(2) 添字(Subscript)」を参照のこと。

  5. REPEAT COLUMN句の上位または下位項目にREPEAT LINE句が指定できる。このとき,表は2次元になる。

  6. REPEAT COLUMN句の下位項目にはSOURCE句を書いてはならない。

  7. REPEAT COLUMN句を指定したデータ項目には,LINE NUMBER句を書いてはならない。

  8. REPEAT COLUMN句を指定したデータ項目の下位には,LINE NUMBER句およびCOLUMN NUMBER句を指定しなければならない。このCOLUMN NUMBER句で指定したカラム番号が,その項目の最初のカラム番号となり,整数1の回数だけ繰り返して配置される。

  9. 整数2はREPEAT COLUMN句で繰り返すデータ構造の間隔を指定する。整数1および整数2に従って配置した結果は,画面に収まる範囲内でなければならない。

  10. WITH指定を省略すると,整数2は0を仮定する。

  11. 2回目以降の繰り返しでのカラム番号は次の手順で決定する。

    • REPEAT COLUMN句の下位構造の中の最小カラム番号を求める。

    • REPEAT COLUMN句の下位構造の中の最大カラム番号を求める。

    (各COLUMN句の値+フィールド長)

    • 繰り返し相対値を求める。

      (b)-(a)+整数2

    • 各COLUMN句の値に前項を加えた値が,2回目の繰り返しのカラム番号となる。

    (例)フィールドの配列

           02 REPEAT COLUMN 2 TIMES WITH 3.
             03 LINE 5.
               04 A PIC X(5) COLUMN 10 〜.
               04 B PIC X(3) COLUMN 17 〜.
             03 LINE 6.
               04 C PIC X(5) COLUMN 13 〜.

    [図データ]

    • 構造内での最小のカラム番号:10

    • 構造内での最大のカラム番号:20

    • 繰り返し相対位置((b)-(a)+WITH値):13

    • 2回目の繰り返しによるカラム番号:

      A(2)=10+13=23

      B(2)=17+13=30

      C(2)=13+13=26

  12. REPEAT COLUMN句の下位項目のフィールド位置は,左から右へ,上から下になるように定義することが望ましい。

  13. REPEAT COLUMN句の上位項目には,RULE TABLE句を指定してはならない。

  14. REPEAT COLUMN句の下位に指定された最初のLINE NUMBER句およびCOLUMN NUMBER句は絶対指定でなければならない。

    (例)フィールドの配置

           02 REPEAT COLUMN 2 TIMES.
             03 LINE 5.
               04 A PIC X(5) COLUMN 10 〜.

    [図データ]

    (例)フィールドの配置(REPEAT LINEとの組み合わせ)

           02 REPEAT LINE 2 TIMES.
             03 REPEAT COLUMN 2 TIMES WITH 3.
               04 LINE 5.
                 05 A PIC X(5) COLUMN 10 〜.
                 05 B PIC X(3) COLUMN 18 〜.
               04 LINE 6.
                 05 C PIC X(7) COLUMN 10 〜.

    [図データ]

    • A(1,1)B(1,1)C(1,1)の右側に3だけ空け,同じものを繰り返す。

    • 上記右への繰り返しの後,行間を空けないで次の行に繰り返す。