Transcript 実習1

実 習 1
データの集計・件数のカウント
1
データの集計・件数のカウント
実習1
第1図のようなある遊園地の1ヶ月の入場者データを記録した入場者ファイルを
読み、処理条件にしたがい第2図のように印字するプログラムを完成させなさい。
入力形式
処理条件
入力ファイル名:NYU-F
入力レコード名:NYU-R
日 付
(HIZUKE)
9(8)
Aゲートの入場者数
(AGATE)
9(6)
Bゲートの入場者数
(BGATE)
9(6)
(第1図)
出力形式
Aゲート
ZZZ,ZZ9
~
ZZZ,ZZ9
(2)AゲートとBゲートの入場者数を
加え、入場者合計を求める。
(3)データが終わりになったら、入場
数の総合計と1日当たりの入場者数
の平均を求める。
出力ファイル名:LIST-F
出力レコード名:LIST-R
ヒヅケ
99999999
~
99999999
(1)遊園地にはAゲートとBゲートの
2つの入り口がある。
Bゲート
ZZZ,ZZ9
~
ZZZ,ZZ9
ゴウケイ
ヘイキン
ゴウケイ
Z,ZZZ,ZZ9
~
Z,ZZZ,ZZ9
ZZ,ZZZ,ZZ9
Z,ZZZ,ZZ9
(第2図)
2
入力データの形式
HIZUKE
AGATE
BGATE
20040725
20040726
20040727
20040728
20040729
20040730
20040731
20040725
20040726
20040727
20040728
20040729
20040730
20040731
20040725
20040726
20040727
20040728
20040729
20040730
20040731
100000
012333
082353
182356
282236
188756
300756
100000
012333
082353
182356
282236
188756
300756
100000
012333
082353
182356
282236
188756
300756
120000
034555
074543
176543
276343
178575
370075
120000
034555
074543
176543
276343
178575
370075
120000
034555
074543
176543
276343
178575
370075
ファイル名:
実習1data.txt
3
入力形式・出力形式・処理条件
から記憶領域を定義する
4
記憶領域の定義
記憶装置
入
力
領
域
FD:NYU-F
01:NYU-R
HIZUKE
AGATE
BGATE
99999999 999999 999999 XX
01:MEISAI-R
M-HIZUKE
99999999
01:MIDASI
作
業
領
域
ヒヅケ
01:NYU
M-AGATE
ZZZ,ZZ9
M-BGATE
ZZZ,ZZ9
M-NYU
Z,ZZZ,ZZ9
01:GOKEI
99999999
Aゲート
Bゲート
ゴウケイ
01:GOKEI-R
ゴウケイ
G-GOKEI
ZZ,ZZZ,ZZ9
ヘイキン
H-HEIKIN
Z,ZZZ,ZZ9
01:HEIKIN-R
出
力
領
域
FD:LIST-F
999999
01:KENSU
99
01:HEIKIN
9999999
01:E-FLG
XXX
01:LIST-R
X(72)
5
記憶領域の定義から
データ部の記述をする
6
データ部の記述①
DATA
DIVISION.
FILE
SECTION.
FD NYU-F.
01 NYU-R.
02 HIZUKE PIC 9(8).
02 AGATE
PIC 9(6).
02 BGATE
PIC 9(6).
02
PIC X(2).
FD LIST-F.
01 LIST-R
PIC X(72).
入
力
領
域
出力
領域
7
データ部の記述②
WORKING-STORAGE
01 E-FLG
01 NYU
01 GOKEI
01 HEIKIN
01 KENSU
SECTION.
PIC X(3).
PIC 9(7).
PIC 9(8).
PIC 9(7).
PIC 9(2).
独
立
項
目
の
記
述
作
業
領
域
8
データ部の記述③
01 MIDASI.
02 PIC X(9)
02 PIC X(4)
02 PIC X(6)
02 PIC X(5)
02 PIC X(7)
02 PIC X(5)
02 PIC X(7)
02 PIC X(5)
01 MEISAI-R.
02
02 M-HIZUKE
02
02 M-AGATE
02
02 M-BGATE
02
02 M-NYU
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
SPACE.
"ヒヅケ".
SPACE.
"Aゲート".
SPACE.
"Bゲート".
SPACE.
"ゴウケイ".
X(5) VALUE
9(8).
X(5) VALUE
ZZZ,ZZ9.
X(5) VALUE
ZZZ,ZZ9.
X(5) VALUE
Z,ZZZ,ZZ9.
見
出
行
の
記
述
作
業
領
SPACE.
SPACE.
SPACE.
明
細
行
の
記
述
域
SPACE.
9
データ部の記述④
01
01
GOKEI-R.
02
02
02 G-GOKEI
HEIKIN-R.
02
02
02 H-HEIKIN
PIC X(35) VALUE SPACE.
PIC X(6) VALUE "ゴウケイ ".
PIC ZZ,ZZZ,ZZ9.
PIC X(35) VALUE
PIC X(7) VALUE
PIC Z,ZZZ,ZZ9.
SPACE.
"ヘイキン
".
合
計
行
の
記
述
平
均
行
の
記
述
作
業
領
域
10
処理手順を考える
11
入力ファイル・出力ファイルを開く
• COBOLのプログラムでは、最初の処理は
入力用、出力用のファイルを開くことである。
• ファイルを開くとは、ファイルを使用できる状
態にすることである。
12
① 初期値を設定する
入力装置
記憶装置
演算装置
NYU-R
HIZUKE
入
力
領
域
MEISAI-R
M-HIZUKE
AGATE
BGATE
NYU
M-AGATE
M-BGATE
M-NYU
GOKEI
MIDASI
作
業
領
域
ヒヅケ
Aゲート
Bゲート
ゴウケイ
0
初期値 0
0
初期値 0
KENSU
GOKEI-R
G-GOKEI
ゴウケイ
HEIKIN
HEIKIN-R
H-HEIKIN
ヘイキン
出
力
領
域
E-FLG
OFF
初期値”OFF”
LIST-R
出力装置
13
② 見出行を印字する
入力装置
記憶装置
演算装置
NYU-R
HIZUKE
入
力
領
域
MEISAI-R
M-HIZUKE
AGATE
BGATE
NYU
M-AGATE
M-BGATE
M-NYU
GOKEI
MIDASI
作
業
領
域
ヒヅケ
Aゲート
Bゲート
0
ゴウケイ
KENSU
GOKEI-R
0
G-GOKEI
ゴウケイ
HEIKIN
HEIKIN-R
H-HEIKIN
ヘイキン
出
力
領
域
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
Aゲート
Bゲート
ゴウケイ
14
繰り返し処理
入力データを読み終えるまで(E-FLG = “ON”となるま
で)以下の手続きを繰り返す。
③入力データを読む。
④入場者数の合計を求める。
⑤各項目を明細行に転記する。
⑥明細行を印字する。
⑦入場者数の合計を総合計に加える。
⑧データの件数をカウントする。
15
入力装置
③ 入力データを読む
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
MEISAI-R
M-HIZUKE
AGATE
BGATE
100000
120000
NYU
M-AGATE
M-BGATE
M-NYU
GOKEI
MIDASI
0
作
業
領
域
ヒヅケ
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
0
HEIKIN
HEIKIN-R
ヘイキン
出
力
領
域
H-HEIKIN
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
Aゲート
Bゲート
ゴウケイ
16
入力装置
④ 入場者数の合計を求める
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
AGATE + BGATE
100000
MEISAI-R
M-HIZUKE
120000
NYU
M-AGATE
M-BGATE
M-NYU
220000
GOKEI
MIDASI
0
作
業
領
域
ヒヅケ
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
0
HEIKIN
HEIKIN-R
ヘイキン
出
力
領
域
H-HEIKIN
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
Aゲート
Bゲート
ゴウケイ
17
入力装置
⑤ 各項目を明細行に転記する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
AGATE + BGATE
100000
MEISAI-R
M-HIZUKE
20040725
MIDASI
120000
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
220000
GOKEI
0
作
業
領
域
ヒヅケ
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
0
HEIKIN
HEIKIN-R
ヘイキン
出
力
領
域
H-HEIKIN
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
Aゲート
Bゲート
ゴウケイ
18
入力装置
⑥ 明細行を印字する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
AGATE + BGATE
100000
MEISAI-R
M-HIZUKE
20040725
MIDASI
120000
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
220000
GOKEI
0
作
業
領
域
ヒヅケ
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
0
HEIKIN
HEIKIN-R
ヘイキン
出
力
領
域
H-HEIKIN
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
220,000
19
入力装置
⑦ 入場者数の合計を総合計に加える
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
100000
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
120000
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
220000
GOKEI
2200000
Aゲート
Bゲート
ゴウケイ
GOKEI + NYU
0
220000
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
0
HEIKIN
HEIKIN-R
ヘイキン
出
力
領
域
H-HEIKIN
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
220,000
20
入力装置
⑧ データの件数をカウントする
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
100000
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
120000
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
220000
GOKEI
220000
Aゲート
Bゲート
0
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
GOKEI + NYU
G-GOKEI
1
0
220000
KENSU + 1
0
HEIKIN
HEIKIN-R
ヘイキン
出
力
領
域
H-HEIKIN
E-FLG
OFF
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
220,000
21
入力データ終了後の処理
以下の手続きがある。
⑨入場者数の総合計を合計行に転記する。
⑩合計行を印字する。
⑪入場者数の総平均を計算する。
⑫入場者数の総平均を平均行に転記する。
⑬平均行を印字する。
22
入力装置
⑨ 入場者数の総合計を合計行に転記する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
300756
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
370075
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
670831
GOKEI
7138272
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
7,138,272
21
GOKEI + NYU
6467441
670831
KENSU + 1
20
HEIKIN
HEIKIN-R
H-HEIKIN
ヘイキン
出
力
領
域
E-FLG
ON
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
220,000
23
入力装置
⑩ 合計行を印字する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
300756
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
370075
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
670831
GOKEI
7138272
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
7,138,272
21
GOKEI + NYU
6467441
670831
KENSU + 1
20
HEIKIN
HEIKIN-R
H-HEIKIN
ヘイキン
出
力
領
域
E-FLG
ON
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
ゴウケイ
220,000
7,138,272
24
入力装置
⑪ 入場者数の総平均を計算する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
300756
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
670831
GOKEI
7138272
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
7,138,272
HEIKIN-R
H-HEIKIN
ヘイキン
出
力
領
域
370075
21
HEIKIN
339917
GOKEI + NYU
6467441
670831
KENSU + 1
20
GOKEI / KENSU
21
7138272
E-FLG
ON
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
ゴウケイ
220,000
7,138,272
25
入力装置
⑫ 入場者数の総平均を平均行に転記する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
300756
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
670831
GOKEI
7138272
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
7,138,272
ヘイキン
H-HEIKIN
339,917
HEIKIN-R
出
力
領
域
370075
21
HEIKIN
339917
GOKEI + NYU
6467441
670831
KENSU + 1
20
GOKEI / KENSU
21
7138272
E-FLG
ON
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
ゴウケイ
220,000
7,138,272
26
入力装置
⑬ 平均行を印字する
入力データ
記憶装置
入
力
領
域
演算装置
NYU-R
HIZUKE
20040725
AGATE
BGATE
100000
120000
300756
MEISAI-R
M-HIZUKE
20040725
MIDASI
作
業
領
域
AGATE + BGATE
ヒヅケ
NYU
M-AGATE
100,000
M-BGATE
120,000
M-NYU
220,000
670831
GOKEI
7138272
Aゲート
Bゲート
ゴウケイ
KENSU
GOKEI-R
ゴウケイ
G-GOKEI
7,138,272
ヘイキン
H-HEIKIN
339,917
HEIKIN-R
出
力
領
域
370075
21
HEIKIN
339917
GOKEI + NYU
6467441
670831
KENSU + 1
20
GOKEI / KENSU
21
7138272
E-FLG
ON
LIST-R
出力装置
ヒヅケ
20040725
Aゲート
100,000
Bゲート
120,000
ゴウケイ
ヘイキン
ゴウケイ
220,000
7,138,272
339,917
27
入力ファイル・出力ファイルを閉じる
• COBOLのプログラムでは、最後の処理は入
力用、出力用のファイルを閉じることである。
28