2.3.1 添字

添字付けでは、表要素を参照するために、その要素が表の中で何番目のものなのかを添字によって指定します。添字はデータ名の後にカッコで囲み、整数または整数値を内容とするデータ名で指定します。

データ名で指定された場合には、その内容が出現番号とみなされます。

たとえば、1次元の表の定義例で特定の要素を参照したい場合には、次のように記述します。

DOG(3)………………………
表中の“d3”を示します。
TABLE-ELEMENTS(16) …
表中の“t16”を示します。
TABLE-ELEMENTS(N) …
Nの内容が16のとき上の例と同じ要素を示します。
・このカッコで囲まれた整数やデータ名を添字といいます。

●添字は、1次元の表では1個指定します。そして、2次元の表では2個、3次元の表では3個の添字をコンマで区切って指定します。

2次元の表の定義例では、

EASY(2,1) ………………
表中の“e2、1”を示します。
DOG(20,2) ………………
表中の“d20、2”を示します。
3次元の表の定義例では、

EASY(1,2,2) ……………
表中の“e1、2、2”を示します。
FOX(2,2,2) ………………
表中の“f2、2、2”を示します。
このように、添字は外側の大きな表から内側の表(大、中、小)の順番で、記述していきます。

なお、添字の書き方には、次のような記述方法もあります。

EASY(X,Y,Z) ……………
“X、Y、Z”はデータ名です。
EASY(X,1,Z) ……………
データ名と整数を混在させて指定することもできます。
EASY(1,2,Z)

●1次元の表の定義例

このプログラムでは、1次元の表を定義しています。

1次元の表の定義例

  1. TABLE1.

    1. TABLE-ELEMENTS OCCURS 20 TIMES.

      1. DOG PIC X(2).

      03 FOX PIC 9.

これによって、次のような表が作成されます。

1次元の表

00000000.gif

図中で“TABLE−ELEMENTS”を意味している“t”が20回反復されています。何番目の“t”かを示すには、添字を用います。

●2次元の表の定義例

OCCURS句に従属する項目に、さらにOCCURS句を指定すると、2次元の表を定義することができます。このプログラムでは、2次元の表を定義しています。

2次元の表の定義例

  1. TABLE1.

    1. TABLE-ELEMENTS OCCURS 20 TIMES.

      1. DOG OCCURS 2 TIMES.

        1. EASY PIC X(2).

        04 FOX PIC 9(2).

これによって、次のような表が作成されます。

2次元の表

00000001.gif

1つ目の添字は“t”の何番目かを示し、2つ目の添字は“d”、“e”および“f”の何番目かを示します。

●3次元の定義例

このプログラムでは、3次元の表を定義しています。本COBOLでは、このように7次元の表まで簡単に指定できます。

3次元の表の定義例

  1. TAB.

    1. TABLE1 OCCURS 2 TIMES.

      1. TABLE-ELEMENTS OCCURS 3 TIMES.

        1. DOG OCCURS 2 TIMES.

          1. EASY PIC X(2).

          05 FOX PIC 9.

これによって、次のような表が作成されます。

3次元の表

00000002.gif

●可変繰り返し項目の定義例

このプログラムのように、DEPENDING ON句をもつOCCURS句を記述すると、表内の項目やレコードの大きさを実行時に決めることができます。

表可変繰り返し項目定義例

  1. TAB-SIZE PIC 9(2).

  1. TAB.

    1. TABLE-ELEMENTS OCCURS 2 TO 10 TIMES DEPENDING ON TAB-SIZE.

      1. DOG PIC X(2).

      03 EASY PIC 9(2).

これによって、次のような表が定義され、すべて大きさが可変となります。

TAB−SIZEの値が3のとき

可変繰り返し項目の表

00000003.gif

TAB−SIZEの値は、2以上10以下の範囲内で自由に変えることができます。