実 習 2

29
1 実実実 実実実

description

実 習 2. 最大値・最小値. 実習2. 最大値と最小値.  第3図のようなクラブコード、予算額、支出額を記録したファイルを読み、 処理条件にしたがい第4図のように印字するプログラムを完成させなさい。. 入力形式. 処理条件. 入力ファイル名: YOSAN - F 入力レコード名: YOSAN - R. (1)執行率は次の計算式で求める。     執行額 = 支出額 × 100 ÷ 予算 (2)データが終わりになったら、執行率が   最大のクラブコードとその執行率、執行   率が最小のクラブコードとその執行率を   印字する。 - PowerPoint PPT Presentation

Transcript of 実 習 2

Page 1: 実 習 2

1

実 習 2実 習 2

最大値・最小値

Page 2: 実 習 2

2

最大値と最小値最大値と最小値 第3図のようなクラブコード、予算額、支出額を記録したファイルを読み、処理条件にしたがい第4図のように印字するプログラムを完成させなさい。

入力形式

出力形式

クラブコード( CCODE)

X(4)

予算額( YOSAN)

9(6)

入力ファイル名: YOSAN - F   入力レコード名: YOSAN - R

 クラブ   予算額    支出額   執行率   XXXX    ZZZ , ZZ9     ZZZ , ZZ9 ZZ9

XXXX    ZZZ , ZZ9     ZZZ , ZZ9 ZZ9

 最大クラブコード  XXXX  最大執行率  ZZ9 最小クラブコード  XXXX  最小執行率  ZZ9

 クラブ   予算額    支出額   執行率   XXXX    ZZZ , ZZ9     ZZZ , ZZ9 ZZ9

XXXX    ZZZ , ZZ9     ZZZ , ZZ9 ZZ9

 最大クラブコード  XXXX  最大執行率  ZZ9 最小クラブコード  XXXX  最小執行率  ZZ9

(第3図)

出力ファイル名: LIST - F   出力レコード名: LIST - R

~~~ ~

(第4図)

処理条件

(1)執行率は次の計算式で求める。    執行額 = 支出額 × 100 ÷ 予算

(2)データが終わりになったら、執行率が  最大のクラブコードとその執行率、執行  率が最小のクラブコードとその執行率を  印字する。

(3)最大・最小の執行率のクラブが複数あ  る時は、後に入力されたクラブコードを  印字する。

実習2実習2

支出額( SYUTU)

9(6)

Page 3: 実 習 2

3

入力データ

CCODE YOSAN SYUTU

01010102010301040105010601070108010901100111011201130114011501160117011801190120

100000120000109000150000101000130000165000085000063000115000064000055000142000045000076000160000032000065000165000085000

080500093000083010128900068200104400131200053810046100087260040570033400093700038900055420094250018260044820126100061230

ファイル名: 実習2 data.txtファイル名: 実習2 data.txt

Page 4: 実 習 2

4

入力形式・出力形式・処理条件から記憶領域を定義する

Page 5: 実 習 2

5

記憶領域の定義入力領域

作業領域

出力領域

記憶装置記憶装置

CCODEXXXX

YOSAN999999

SYUTU999999

999

999

999

FD:YOSAN- F  01:YOSAN-R

01:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

FD:LIST-F  01:LIST-R

M-YOSANZZZ,ZZ9

M-SYUTUZZZ,ZZ9

M-RITUZZ9

M-CCODEXXXX

   クラブ     予算額      支出額      執行率

X(72)

XXXX

XXX

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG

          最大クラブコードM- MAXCODE

XXXX 最大執行率M- MAXZZ9

          最小クラブコードM- MINCODE

XXXX 最小執行率M- MINZZ9

XXXX01:MAXCCODE

TUXX

Page 6: 実 習 2

6

記憶領域の定義からデータ部の記述をする

Page 7: 実 習 2

7

データ部の記述①

DATA DIVISION.FILE SECTION.FD YOSAN-F.01 YOSAN-R. 02 CCODE PIC X(4). 02 YOSAN PIC 9(6). 02 SYUTU PIC 9(6). 02 PIC X(2).FD LIST-F.01 LIST-R PIC X(72).

出力領域出力領域

Page 8: 実 習 2

8

データ部の記述②

WORKING-STORAGE SECTION.01 E-FLG PIC X(3).01 MAX PIC 9(3).01 MIN PIC 9(3).01 RITU PIC 9(3).01 MAXCCODE PIC X(4).01 MINCCODE PIC X(4).01 GOKEI PIC 9(8).01 HEIKIN PIC 9(7).01 KENSU PIC 9(2).

独立項目の記述

Page 9: 実 習 2

9

データ部の記述③01 MIDASI. 02 PIC X(4) VALUE SPACE. 02 PIC X(6) VALUE "クラブ ". 02 PIC X(6) VALUE SPACE. 02 PIC X(6) VALUE "予算額 ". 02 PIC X(7) VALUE SPACE. 02 PIC X(6) VALUE "支出額 ". 02 PIC X(6) VALUE SPACE. 02 PIC X(6) VALUE "執行率 ".01 MEISAI-R. 02 PIC X(5) VALUE SPACE. 02 M-CCODE PIC X(4). 02 PIC X(7) VALUE SPACE. 02 M-YOSAN PIC ZZZ,ZZ9. 02 PIC X(5) VALUE SPACE. 02 M-SYUTU PIC ZZZ,ZZ9. 02 PIC X(7) VALUE SPACE. 02 M-RITU PIC ZZ9.

見出行の記

明細行の記

Page 10: 実 習 2

10

データ部の記述④

01 MAX-R. 02 PIC X(20) VALUE " 最大クラブコード ". 02 M-MAXCCODE PIC X(4). 02 PIC X(5) VALUE SPACE. 02 PIC X(13) VALUE "最大執行率 ". 02 M-MAX PIC ZZ9.01 MIN-R. 02 PIC X(20) VALUE " 最小クラブコード ". 02 M-MINCCODE PIC X(4). 02 PIC X(5) VALUE SPACE. 02 PIC X(13) VALUE "最小執行率 ". 02 M-MIN PIC ZZ9.

最大値行の記

最小値行の記

Page 11: 実 習 2

11

処理手順を考える

Page 12: 実 習 2

12

入力ファイル・出力ファイルを開く

• COBOL のプログラムでは、最初の処理は入力用、出力用のファイルを開くことである。

• ファイルを開くとは、ファイルを使用できる状態にすることである。

Page 13: 実 習 2

13

①  初期値を設定する

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE YOSAN SYUTU

000

999

FD:YOSAN- F  01:YOSAN-R

01:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

FD:LIST-F  01:LIST-R

M-YOSAN M-SYUTU M-RITUM-CCODE

   クラブ     予算額      支出額      執行率

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG

          最大クラブコードM- MAXCODE

最大執行率M- MAX

          最小クラブコードM- MINCODE

最小執行率M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

初期値” OFF”初期値” OFF”

初期値 999初期値 999

初期値 0初期値 0

Page 14: 実 習 2

14

②  見出行を印字する

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

FD:YOSAN- F  01:YOSAN-R

01:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

Page 15: 実 習 2

15

繰り返し処理

③ 入力データを読む。④ 執行率を求める。⑤ 執行率は最大値以上か比較する。 YES の場合は、執行率とクラブコードを保存する。⑥ 執行率は最小値以下か比較する。  YES の場合は、執行率とクラブコードを保存す

る。⑦ 各項目を明細行に転記する。⑧ 明細行を印字する。

入力データを読み終えるまで( E-FLG = “ ON” となるまで ) 以下の手続きを繰り返す。

Page 16: 実 習 2

16

③  入力データを読む

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

FD:YOSAN- F  01:YOSAN-R

01:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

Page 17: 実 習 2

17

④  執行率を求める

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

Page 18: 実 習 2

18

⑤  執行率と最大値を比較する

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?080 000

YES

Page 19: 実 習 2

19

⑤ YES なら執行率とクラブコードを保存する  NO なら何もしない

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?080 000

YES

080

0101

Page 20: 実 習 2

20

⑥  執行率と最小値を比較する

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?080 000

YES

080

0101

RITU <= MIN ?080 999

NO

Page 21: 実 習 2

21

⑥   YES なら執行率とクラブコードを保存する   NO なら何もない

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?080 000

YES

080

0101

RITU <= MIN ?080 999

NO

Page 22: 実 習 2

22

⑦  各項目を明細行に転記する

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          M- MINCODE最小執行率

M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?080 000

YES

080

0101

RITU <= MIN ?080 999

NO

0101 100,000 80,500 80

Page 23: 実 習 2

23

⑧  明細行を印字する

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

999

08001:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

OFF

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          最小執行率M- MIN

01:MAXXCODE

TU

演算装置演算装置

入力装置入力装置

   クラブ     予算額      支出額      執行率

入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?080 000

YES

080

0101

RITU <= MIN ?080 999

NO

0101 100,000 80,500 80

0101 100,000 80,500 80

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

M- MINCODE最小クラブコード

FD:LIST-F  01:LIST-R

Page 24: 実 習 2

24

入力データ終了後の処理

⑨ 最大値と最大となったクラブコードを 最大値行に転記する。⑩ 最大値行を印字する。⑪ 最小値と最小となったクラブコードを  最小値行に転記する。⑫ 最小値行を印字する。

以下の手続きがある。

Page 25: 実 習 2

25

⑨  最大値と保存されていたクラブコードを 最大値行に転記する。

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

057

07201:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

0117

ON

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          最小執行率M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置 入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?072 086

NO

086

0114

RITU <= MIN ?072 057

NO

0101 100,000 80,500 80

0101 100,000 80,500 80

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

M- MINCODE最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

0114 86

Page 26: 実 習 2

26

⑩  最大値行を印字する。

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

057

07201:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

0117

ON

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          最小執行率M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置 入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?072 086

NO

086

0114

RITU <= MIN ?072 057

NO

0101 100,000 80,500 80

0101 100,000 80,500 80

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

   クラブ     予算額      支出額      執行率

86

M- MINCODE

最大クラブコード 0114 86最大執行率

0114

Page 27: 実 習 2

27

⑪  最小値と保存されていたクラブコードを 最小値行に転記する。

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

057

07201:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

0117

ON

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          最小執行率M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置 入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?072 086

NO

086

0114

RITU <= MIN ?072 057

NO

0101 100,000 80,500 80

0101 80,500 80

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

0114 86

M- MINCODE

最大クラブコード 0114 86最大執行率100,000

   クラブ     予算額      支出額      執行率

570117

Page 28: 実 習 2

28

⑫  最小値行を印字する。

入力領域

作業領域

出力領域

記憶装置記憶装置

CCODE0101

YOSAN100000

SYUTU080500

000

057

07201:MEISAI-R

01:MIDASI

01:MAX-R

01:MIN-R

M-YOSAN M-SYUTU M-RITUM-CCODE

0117

ON

01:MAX

01:MIN

01:RITU

01:MINCCODE

01:E-FLG          最小執行率M- MIN

01:MAXCCODE

TU

演算装置演算装置

入力装置入力装置 入力データ入力データ

FD:YOSAN- F  01:YOSAN-R

SYUTU * 100 / YOSAN080500 100000

RITU >= MAX ?072 086

NO

086

0114

RITU <= MIN ?072 057

NO

0101 100,000 80,500 80

0101 80,500 80

   クラブ     予算額      支出額      執行率

          最大クラブコードM- MAXCODE

最大執行率M- MAX

最小クラブコード

FD:LIST-F  01:LIST-R

0114 86

M- MINCODE

最大クラブコード 0114 86最大執行率100,000

   クラブ     予算額      支出額      執行率

570117

最小クラブコード 0117 57最小執行率

Page 29: 実 習 2

29

入力ファイル・出力ファイルを閉じる

• COBOL のプログラムでは、最後の処理は入力用、出力用のファイルを閉じることである。