実 習 3
ページコントロール
1
ページコントロール
実習3
第5図のような書籍データを読み、処理条件にしたがい第6図のように
印字するプログラムを完成させなさい。
出力形式
入力形式
出力ファイル名: L-FILE
出力レコード名: L-REC
入力ファイル名: B-FILE
入力レコード名: B-REC
書籍コード
(SCODE)
X(4)
書 名
著 者
(SYOMEI) (TYOSYA)
X(10)
X(10)
(第5図)
処理条件
(1)各ページの先頭にはページ数、見
出しを印字する。
(2)明細行は1ページに10行まで印
字し、改ページする。
ページ Z9
コード
ショメイ
チョシャ
XXXX XXXXXXXXXX
XXXXXXXXXX
~
~
~
XXXX XXXXXXXXXX
XXXXXXXXXX
----------------------------------------------------------------------------ページ Z9
コード
ショメイ
チョシャ
XXXX XXXXXXXXXXX XXXXXXXXXX
~
~
~
XXXX XXXXXXXXXXX XXXXXXXXXX
(第6図)
2
入力データ
ファイル名
実習3data.txt
SCODE
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
SYOMEI
TYOSYA
ペンシュウジ 1
ペンシュウジ 2
ペンシュウジ 3
タノシイ ダンス1
BASICモンダイ
コンピュータ キソ
ワープロニュウモン
マクロ ニュウモン
COBOLモンダイ
ハードウェア
ソフトウェア
ヤサシイ OS
2シュシケンタイサク
WINDOWS
タノシイCD-ROM
ボキ 3キュウ
ボキ 2キュウ
ボキ 1キュウ
マーケティング
シュザン 3キュウ
シュザン 2キュウ
シュザン 1キュウ
シュショク タイサク
ペンシュウジ 4
ペンシュウジ 5
ペンシュウジ 6
タノシイ ダンス2
シスアドモンダイ
サトウ
マサキ
タケカワ ヒデキ
フルカワ トシアキ
コバヤシ カツヤ
ヤマダ
タロウ
ヤマダ イチロウ
ヤマダ ジロウ
ヤマダ サブロウ
ヤマダ
シロウ
ヤマダ ゴロウ
スズキ イチロウ
ズズキ ジロウ
ズズキサブロウ
スズキ
シロウ
スズキ ゴロウ
タナカ イチロウ
タナカ ジロウ
タナカ サブロウ
タナカ
シロウ
タナカ ゴロウ
ワタナベ イチロウ
ワタナベ ジロウ
ワタナベサブロウ
サトウ
マサキ
タケカワ ヒデキ
フルカワ トシアキ
コバヤシ カツヤ
ヤマダ
タロウ
3
入力形式・出力形式・処理条件
から記憶領域を定義する
4
記憶領域の定義
記憶装置
入
力
領
域
FD:B-FILE 01:B-REC
SCODE
SYOMEI
XXXX
XXXXXXXXXX
01:MEISAI
M-SCODE
XXXX
01:MIDASI
作
業
領
域
出
力
領
域
コード
TYOSYA
XXXXXXXXXX
M-SYOMEI
XXXXXXXXXX
ショメイ
TU
XX
M-TYOSYA
XXXXXXXXXX
01:PAGESU
99
01:GYOSU
99
チョシャ
01:E-FLG
01:PAGE-R
ページ
P-PAGE
Z9
XXX
FD:L-FILE 01:L-REC
X(72)
5
記憶領域の定義から
データ部の記述をする
6
データ部の記述①
DATA
DIVISION.
FILE
SECTION.
FD B-FILE.
01 B-REC.
02 SCODE PIC X(4).
02 SYOMEI PIC X(10).
02 TYOSYA PIC X(10).
02
PIC X(2).
FD L-FILE.
01 L-REC
PIC X(72).
入
力
領
域
出力
領域
7
データ部の記述②
WORKING-STORAGE SECTION.
01 E-FLG
PIC X(3).
01 PAGESU
PIC 9(2).
01 GYOSU
PIC 9(2).
01 PAGE-R.
02
PIC X(29) VALUE
02
PIC X(7) VALUE
02 P-PAGE PIC Z9.
01 MIDASI.
02
PIC X(5) VALUE
02
PIC X(4) VALUE
02
PIC X(7) VALUE
02
PIC X(4) VALUE
02
PIC X(10) VALUE
02
PIC X(4) VALUE
の独
記立
述項
目
SPACE.
"ページ
SPACE.
"コード".
SPACE.
"ショメイ".
SPACE.
"チョシャ".
".
のペ
記ー
述ジ
行
作
業
領
域
見
出
行
の
記
述
8
データ部の記述③
01
MEISAI.
02
02 M-SCODE
02
02 M-SYOMEI
02
02 M-TYOSYA
PIC
PIC
PIC
PIC
PIC
PIC
X(5) VALUE SPACE.
X(4).
X(5) VALUE SPACE.
X(10).
X(5) VALUE SPACE.
X(10).
明
細
行
の
記
述
作
業
領
域
9
処理手順を考える
10
入力ファイル・出力ファイルを開く
• COBOLのプログラムでは、最初の処理は
入力用、出力用のファイルを開くことである。
• ファイルを開くとは、ファイルを使用できる状
態にすることである。
11
① 初期値を設定
入力装置
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
M-SYOMEI
TU
M-TYOSYA
01:MIDASI
コード
ショメイ
チョシャ
初期値 1
01:GYOSU
10
初期値 10
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:PAGESU
01
P-PAGE
OFF
初期値 OFF
FD:L-FILE 01:L-REC
X(72)
12
繰り返し処理
入力データを読み終えるまで(E-FLG = “ON”となるま
で)以下の手続きを繰り返す。
② 入力データを読む。
③ 行数が10に等しくなってるか判断する。
YESの場合は、以下の改ページ処理を行う。
④ ページ数をページ行に転記する。
⑤ 改ページ後ページ行を印字する。
⑥ 見出行を印字する。
⑦ ページ数に1を加算する。
⑧ 行数に0(ゼロ)を設定する。
NOの場合は、何もせず次の処理を行う。
⑨ 各項目を明細行に転記する。
⑩ 明細行を印字する。
⑪ 行数をカウントする。
13
入力装置
② 入力データを読む
入力データ
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ1
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:GYOSU
10
01:MIDASI
コード
01:PAGESU
01
P-PAGE
OFF
FD:L-FILE 01:L-REC
X(72)
14
入力装置
入力データ
記憶装置
入
力
領
域
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ1
01:MEISAI
M-SCODE
作
業
領
域
③ 行数が10に等しくなっているか判断する
YESの場合、ページ処理を実施
NOの場合、何もしない
演算装置
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
GYOSU = 10 ?
10
YES
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:GYOSU
10
01:MIDASI
コード
01:PAGESU
01
P-PAGE
OFF
改ページ処理には、
以下の処理がある。
FD:L-FILE 01:L-REC
X(72)
●ページ数をページ
行に転記
●改ページ後にペー
ジ行を印字
●見出行を印字
●ページ数に1加算
●行数に0を設定
15
入力装置
入力データ
④ ページ数をページ行に転記
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:GYOSU
10
01:MIDASI
コード
01:PAGESU
01
P-PAGE
OFF
1
改ページ処理には、
以下の処理がある。
FD:L-FILE 01:L-REC
X(72)
●ページ数をページ
行に転記
●改ページ後にペー
ジ行を印字
●見出行を印字
●ページ数に1加算
●行数に0を設定
16
入力装置
入力データ
⑤ 改ページ後にページ行を印字する
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:GYOSU
10
01:MIDASI
コード
01:PAGESU
01
P-PAGE
OFF
1
改ページ処理には、
以下の処理がある。
FD:L-FILE 01:L-REC
X(72)
ページ
1
●ページ数をページ
行に転記
●改ページ後にペー
ジ行を印字
●見出行を印字
●ページ数に1加算
●行数に0を設定
17
入力装置
入力データ
⑥ 見出行を印字する
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:GYOSU
10
01:MIDASI
コード
01:PAGESU
01
P-PAGE
1
改ページ処理には、
以下の処理がある。
FD:L-FILE 01:L-REC
X(72)
コード
OFF
ショメイ
ページ
チョシャ
1
●ページ数をページ
行に転記
●改ページ後にペー
ジ行を印字
●見出行を印字
●ページ数に1加算
●行数に0を設定
18
入力装置
入力データ
⑦ ページ数に1を加算する
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
PAGESU + 1 → PAGESU
01
02
01:GYOSU
10
01:MIDASI
コード
01:PAGESU
02
01
P-PAGE
1
改ページ処理には、
以下の処理がある。
FD:L-FILE 01:L-REC
X(72)
コード
OFF
ショメイ
ページ
チョシャ
1
●ページ数をページ
行に転記
●改ページ後にペー
ジ行を印字
●見出行を印字
●ページ数に1加算
●行数に0を設定
19
入力装置
入力データ
⑧ 行数に0(ゼロ)を設定する
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
TU
M-TYOSYA
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
PAGESU + 1 → PAGESU
01
02
01:GYOSU
10
00
01:MIDASI
コード
01:PAGESU
02
01
P-PAGE
1
改ページ処理には、
以下の処理がある。
FD:L-FILE 01:L-REC
X(72)
コード
OFF
ショメイ
ページ
チョシャ
1
●ページ数をページ
行に転記
●改ページ後にペー
ジ行を印字
●見出行を印字
●ページ数に1加算
●行数に0を設定
20
入力装置
入力データ
⑨ 各項目を明細行に転記する
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
0001
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
ペンシュウジ 1
TU
M-TYOSYA
サトウ マサキ
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
PAGESU + 1 → PAGESU
01
02
01:GYOSU
00
01:MIDASI
コード
01:PAGESU
02
P-PAGE
OFF
1
FD:L-FILE 01:L-REC
X(72)
コード
ショメイ
ページ
チョシャ
1
21
入力装置
入力データ
⑩ 明細行を印字する
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
0001
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
ペンシュウジ 1
TU
M-TYOSYA
サトウ マサキ
ショメイ
チョシャ
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
PAGESU + 1 → PAGESU
01
02
01:GYOSU
00
01:MIDASI
コード
01:PAGESU
02
P-PAGE
OFF
1
FD:L-FILE 01:L-REC
X(72)
コード
0001
ショメイ
ペンシュウジ 1
ページ
1
チョシャ
サトウ マサキ
22
入力装置
入力データ
⑪ 行数をカウントする
記憶装置
入
力
領
域
演算装置
FD:B-FILE 01:B-REC
SCODE
SYOMEI
0001
ペンシュウジ 1
01:MEISAI
M-SCODE
0001
作
業
領
域
TYOSYA
サトウ マサキ
M-SYOMEI
ペンシュウジ 1
TU
M-TYOSYA
サトウ マサキ
01:MIDASI
コード
ショメイ
チョシャ
PAGESU + 1 → PAGESU
01
02
01:GYOSU
00
01
GYOSU + 1 → GYOSU
01
00
01:E-FLG
01:PAGE-R
ページ
出
力
領
域
01:PAGESU
02
P-PAGE
OFF
1
FD:L-FILE 01:L-REC
X(72)
コード
0001
ショメイ
ペンシュウジ 1
ページ
1
チョシャ
サトウ マサキ
23
入力ファイル・出力ファイルを閉じる
• COBOLのプログラムでは、最後の処理は入
力用、出力用のファイルを閉じることである。
24
ダウンロード

実習3