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