TBL(1,1) | TBL(1,2) | TBL(1,3) | TBL(1,4) |
TBL(2,1) | TBL(2,2) | TBL(2,3) | TBL(2,4) |
TBL(3,1) | TBL(3,2) | TBL(3,3) | TBL(3,4) |
データ(行,列)
このように、一級では2次元テーブルと呼ばれる方法が使われるようになります。
下に例題を書きます。
1月、2月、3月の商品売上高を商店ごとに集計します。
商店コード (CODE) |
月 (TUKI) |
売上 (URI) |
1月 | 2月 | 3月 | |
A商店 | 1223450 | 1547850 | 1651200 |
B商店 | 1432870 | 1268570 | 1578340 |
C商店 | 1103900 | 1364510 | 1309800 |
D商店 | 1957490 | 1822000 | 1937560 |
このようなデータを集計をするのに使う計算方法は次のようになります。
COMPUTE SYU(CO,TUKI) = SYU(CO,TUKI) + URI
次は印刷の方法です。そのために、もう一つテーブルを用意します。
TL
Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 |
Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 |
Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 |
Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 | Z,ZZZ,ZZ9 |
PERFORM VARYING M FROM 1 BY 1 UNTIL M > 4
PERFORM VARYING L FROM 1 BY 1 UNTIL L > 3
MOVE SYU(M,L) TO TL(M,L)
END-PERFORM
テーブルTLの印字
END-PERFORM
PERFORM文のMに1が入りLにも1を入れてその後はLの数を増やしていく処理になるため
(1,1)−>(1,2)−>(1,3)という具合に増えていきます。
COBOL一級にもさまざまな文が出てきます。そのさまざまな分を下に上げてみました。
READ 入力ファイル名 INTO レコード名
入力ファイルから読んだレコードを、そのまま他のレコード領域に転記する
READ IN-FL INTO S-REC
AT END MOVE "ON" TO E-FLG
END-READ
EVALUATE TENSU
WHEN " 100" MOVE ”A” TO RANK
WHEN " 90" MOVE ”B” TO RANK
WHEN " 80" MOVE ”C” TO RANK
WHEN " 70" MOVE ”D” TO RANK
END-EVALUATE
TENSUに入っている数字で計算し100が入っているならばRANKにAを入れる
IF文を発展させた形。
SEARCH データ名 (VARYING 指標名) VARYING句は省略可能
AT END 文1 <−−条件を満足しなかった時
WHEN 条件
−−−> 文2 条件を満足した時
END-SEARCH
SET 指標名 TO {整数、指標名2、データ名}
(1) SET K TO 1 <−−指標名Kの値を1とする。
(2) SET N TO L <−−指標名Nの値をLとする。
SET K UP BY 2 <−指標名 Kの値を2増加させる。
SET N DOWN BY 1 <−指標名Nの値を1減少させる。
レベル番号 データ名1 REDEFINES データ名2.
すでに定義されている領域(データ名)をもう一度データ名1として定義し直したいときに用いる。
01 ALPH PIC X(6) VALUE ”930501”.
01 NUME REDEFINES ALPH PIC 9(6).