実 習 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
© Copyright 2024 ExpyDoc