【COBOL言語】基本情報技術者試験と過去問題-平成24年度秋期-|合格対策

基本情報技術者試験(平成24年度秋期)午後問題のCOBOL言語での解き方とは

※情報処理推進機構(IPA)は、午後の試験で選択できるプログラミング言語のうち、「COBOL」の出題を令和元年秋期試験で廃止しました。

試験-平成24年度秋期-イメージ

COBOL(コボル)言語の平成24年度秋期の出題内容

基本情報技術者試験(平成24年度秋期)COBOL言語の午後問題は、会員制スポーツクラブの利用料金管理プログラムに関する穴埋め問題と、その応用問題でした。出題形式は、まずプログラムの説明を読み仕様を理解し、その仕様を実現したプログラムを読み込んでから、設問に解答する形式で、複数の解答の中から正しい解答を選択します。

会員の利用時間が格納された索引編成の利用記録ファイルから、会員ごとに利用時間を集計し、請求金額を求めるプログラムを読み解くことにより、ファイルのアクセス方法と集計、配列の利用方法の理解度が試される問題です。一見、難しそうに見えるプログラムですが、プログラムの説明をよく読み、仕様を理解することでプログラムが読み解きやすくなります。

索引編成ファイルのアクセスと集計、配列は、実際の業務プログラムでもよく用いられる基本の技術ですので、しっかりと習得しておきましょう。

COBOL(コボル)言語の平成24年度秋期問題

この章では、基本情報技術者試験(平成24年度秋期)COBOL言語の午後問題の問10の設問1(ファイルアクセスと集計の問題)について解説しますので、ファイルのアクセス方法と、PERFORM文での繰り返しによる集計処理の定石を理解しましょう。

■プログラムの説明

ある会員制スポーツクラブにおける利用料金の計算プログラムである。

このスポーツクラブは、会員が都合の良い時間に施設を利用できるようになっており、会員の利用実績を利用記録ファイルに格納する。利用料金は、1カ月に10時間まで利用できる基本料金と、10時間を超過した時間に応じて課金する超過料金の合計であり、1カ月分をまとめて、翌月、会員に請求する。施設の利用実績がなかった会員にも、基本料金は請求する。

(1) 会員ファイルは、図1に示すレコード様式の索引ファイルであり、会員番号を主レコードキーとする。呼び出し法は順呼出しとする。

試験-平成24年度秋期-会員ファイルのレコード様式

図1.会員ファイルのレコード様式

① 会員番号は、会員ごとに割り当てられる一意の番号であり、000001から始まる6桁の数字である。

② 会員種別には、表1に示す会員種別が格納される。利用料金は、会員種別によって決まる。

表1.料金表

試験-平成24年度秋期-料金表

③ 入会日には、入会した年、月、日が、それぞれ4桁、2桁、2桁で格納される。

(2) 利用記録ファイルは、図2に示すレコード様式の順ファイルであり、1カ月分の会員の利用実績を格納する。1レコードには、1人の会員の1回の利用に関する情報が格納される。

試験-平成24年度秋期-利用記録ファイルのレコード様式

図2.利用記録ファイルのレコード様式

① 利用日には、施設を利用した年、月、日が、それぞれ4桁、2桁、2桁で格納される。

② 開始時刻、および終了時刻には、時、分が、それぞれ2桁の24時間表記で格納される。施設の営業時間は8時から23時までである。

③ 利用時間には、施設の利用時間が分単位で格納される。

(3) 請求ファイルは、図3に示すレコード様式の順ファイルであり、会員ごとの月次請求金額を格納する。超過料金は1カ月の利用時間の合計(分)を時間単位に切り上げて課金する。

試験-平成24年度秋期-請求ファイルのレコード様式

図3.請求ファイルのレコード様式

(4) 作業ファイルは、図4に示すレコード様式の索引ファイルであり、会員番号を主レコードキーとする。利用記録ファイルから会員ごとの利用時間の合計を分単位で求めるために使用する。呼出し法は乱呼び出しとする。

試験-平成24年度秋期-作業ファイルのレコード様式

図4.作業ファイルのレコード様式

■プログラム

試験-平成24年度秋期-プログラム

出典:平成24年度秋期 COBOL 試験区分 午後 問10 設問1

■設問1 プログラムの中の[ ]に入れる正しい答えを、解答群の中から選べ。

aに関する解答群

(ア)”300400400500”

(イ)”400400500500”

(ウ)”500400400300”

(エ)”500500400300”

bに関する解答群

(ア)MAIN-PROC

(イ)MKBILL-PROC

(ウ)MKTIME-PROC

(エ)MKWORK-PROC

(オ)WRBILL-PROC

c、dに関する解答群

(ア)ADD EXT-PRICE(M-CODE) TO B-CHG

(イ)ADD T-MIN TO W-MIN

(ウ)COMPUTE B-CHG = B-CHG + EXT-PRICE(M-CODE) * EXT-H

(エ)COMPUTE W-MIN = (T-MIN + 59) / 60 + 1

(オ)MOVE EXT-PRICE(M-CODE) TO B-CHG

(カ)MOVE T-MIN TO W-MIN

■解答

設問1-a:(ウ)

設問1-b:(イ)

設問1-c:(カ)

設問1-d:(ウ)

【aの解説】

ここで注目すべきは、[a]を含む集団項目「PRICE-VALUE」が、37行目のREDEFINES句によって配列として再定義されている点です。この再定義により、[a]は「EXT-PRICE」という配列の値であることがわかります。では、配列として定義すべきものが仕様上のどこに記述されているでしょうか。プログラムの説明(1)②表1の料金表をよく見ると、料金表が「会員種別」を添え字とした配列になっていること気づくでしょう。「基本料金」はすでに、35行目で”5000500040003000”と定義されていますので、足りないのは「超過料金」の定義です。

従って、解答は「(ウ)”500400400300”」になります。

【bの解説】

この設問では、構造化されたプログラムの骨組みを素早く理解する能力が試されています。MAIN-PROCは、機能分けした処理ブロックを連続して実行し、処理を終えるという構造化プログラムのメイン処理の定石的な作りになっています。46行目のPERFORM文で実行しているMKTIME-PROCでは、会員ごとの利用時間を集計していますので、47行目のPERFORM文で実行すべきなのは、集計した利用時間を使用し、会員ごとの月額利用料金を算出する処理です。

従って、解答は「(イ)MKBILL-PROC」になります。

【cの解説】

[c]があるMKWORK-PROCでは、作業用ファイルに会員ごとの利用時間を集計しています。会員番号をキーに作業ファイルをREADし、該当するレコードがない場合、新たにレコードを作成(WRITE)しなければなりません。レコードを構成する「W-NO(会員番号)」と「W-MIN(合計時間)」を設定する必要があります。

従って、解答は「(カ)MOVE T-MIN TO W-MIN」になります。

【dの解説】

[d]があるWKBILL-PROCでは、会員ごとの月額利用料金を算出しています。1カ月の利用時間が10時間以内の場合、基本料金だけですが、10時間を超えた場合は基本料金に超過料金を加えて、月額利用金額としなければなりません。83行目で超過時間を計算していますので、[d]では基本料金が設定されている「B-CHG(利用料金)」に超過料金を加える必要があります。

従って、解答は「(ウ)COMPUTE B-CHG = B-CHG + EXT-PRICE(M-CODE) * EXT-H」になります。

練習問題

前章の「COBOL(コボル)言語の平成24年度秋期問題」では、基本情報技術者試験(平成24年度秋期)COBOL言語の午後問題の問10の設問1について解説しました。この章では、その解説を踏まえて、さらにプログラム構造の理解を深めるための練習問題に挑戦してみましょう。

問)

本情報技術者試験(平成24年度秋期)午後問題の問10のCOBOL言語プログラムを読み、手続き部(PROCEDURE DIVISION)全体の処理内容と各処理ブロックの処理内容を簡単に説明せよ。

答え)

【全体】

利用記録ファイルから会員ごとの1カ月の利用時間を集計した作業ファイルを作成した後、作業ファイルと会員ファイルから、会員ごとの月額利用料金を計算し請求ファイルを作成する。

【MAIN-PROC】

会員ファイルと利用記録ファイルを読み出しモードで、作業ファイルを読み出し/書き込みモードで、請求ファイルを書き込みモードでオープンし、PERFORM文で利用時間を集計する処理(MKTIME-PROC)と利用金額を計算する処理(MKBILL-PROC)を行う。会員ファイル、利用記録ファイル、作業ファイル、請求ファイルをクローズする。

【MKTIME-PROC】

利用記録ファイルをシーケンシャルに読み込み、EOFになるまで、PERFORM文で作業ファイルに利用時間を集計する処理(MKWORK-PROC)を行う。

【MKWORK-PROC】

会員番号をキーに作業ファイルを読み込み、該当するレコードがなければ、利用記録ファイルの利用時間(分)を合計時間に設定し、作業ファイルに挿入(WRITE)する。該当するレコードがあれば、合計時間に利用記録ファイルの利用時間(分)を加算し、作業ファイルに書き込む(REWITE)する。

【MKBILL-PROC】

会員ファイルをシーケンシャルに読み込み、EOFになるまで、PERFORM文で利用金額を算出する処理(WKBILL-PROC)を行う。

【WKBILL-PROC】

会員番号をキーに作業ファイルを読み込み、利用時間(分)が10時間(600分)以内であれば利用金額に基本料金を、10時間(600分)を超えている場合は、超過料金を算出して基本料金と合計した金額を利用金額に設定し請求ファイルに書き込む(WRITE)。

基本情報技術者試験(平成24年度秋期)では、索引ファイルと順ファイルのアクセス、および集計処理が出題されましたが、COBOL言語のファイルアクセスの基本と、PERFORM文による繰り返し制御が理解できていれば、それほど難しい問題ではありません。落ち着いて問題をよく読めば突破できますので、問題を読むことに慣れておきましょう。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門