COBOL1級

2次元テーブルの考え方


1級になってくると2次元テーブルというテーブルを更に発展させたものが、でてきます。
 
下の図が、わかりやすく表現したものです。
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)という具合に増えていきます。


1級に出る文


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).


COBOLのメニュー画面へ