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

COBOL(コボル)言語の平成28年度秋期問題の解き方とは

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

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

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

平成28年度秋期に出題された問題は、過去10回分の健康診断の結果が記録されたマスタファイルに今回の結果を反映するプログラムが出題されています。

出題されるプログラムの主な内容としては、結果ファイルの内容をマスタファイルに反映するため、レコードの突き合わせによる並列処理及びマスタファイルの内容を書き換える処理を行います。

そのため、順ファイルの操作や整列併合処理の理解、プログラムの流れを把握しておかなければ、正しい解答を導き出すのは難しいと言えるでしょう。

このような処理は実際の業務プログラムでもよく行われますので、しっかりと理解しておきましょう。

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

ここでは平成28年度秋期に出題された、プログラムに必要な内容を穴埋めしていく問題について解説していきます。

■プログラムの説明

Z社では、毎年実施している従業員の健康診断を今年も実施しました。健康診断の結果は過去10回分のデータがマスタファイルに記録されています。

今年実施した健康診断の結果についても、記録されたマスタファイルを読み込んで結果を記録していきます。

1.健康診断のマスタファイルは、図1に示すレコード様式の順ファイルである。

試験-平成28年度秋期-健康診断マスタファイルのレコード様式

① 全ての従業員に対するレコードが、従業員番号の昇順で格納される

② 結果履歴には、当該従業員の過去10回分の健康診断の結果が、受診日の降順で格納される。
受信回数が10回に満たない場合、残りの結果履歴には全てゼロが設定される。

③ 受診日には、年、月、日が、それぞれ4桁、2桁、2桁の西暦で格納される。

④ 身長(cm)、体重(kg)、最高血圧(mmHg)、最低血圧(mmHg)には、それぞれの数値が格納される。身長と体重は小数点以下1桁までが格納される。胸部X線には、所見がない場合は0が、所見がある場合には1が格納される。

2.結果ファイルは、図2に示すレコード様式の順ファイルである。

試験-平成28年度秋期-結果ファイルのレコード様式

① 結果ファイルの先頭レコードとして、様式1のレコードが1件だけ格納される。
受診日には、年、月、日がそれぞれ4桁、2桁、2桁の西暦で格納される。受診日は、健康診断マスタファイルに記録されているどの受診日よりも新しい。

② 2件目以降のレコードとして、受信した従業員の様式2のレコードが順不同で格納される。受信していない従業員に対するレコードは存在しない。

■プログラム(1 / 2)

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

■プログラム(2 / 2)

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

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

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

a, bに関する解答群

ア MOVE RSLT-DATE TO NEW-DATE

イ MOVE ZERO TO CNT

ウ MOVE ZERO TO NEW-DATE

エ PERFORM RET-PROC

オ RELEASE SORT-REC

カ RELEASE SORT-REC FROM RSLT-REC

cに関する解答群

ア MST-NO = SORT-NO  イ MST-NO < SORT-NO

ウ MST-NO > SORT-NO  エ MST-NO NOT = SORT-NO

dに関する解答群

ア FROM 0 BY 1     イ FROM 9 BY -1

ウ FROM 10 BY -1    エ FROM CNT BY 1

■解答

設問1(a) :ア

設問1(b) :カ

設問1(c) :ア

設問1(d) :イ

【aの解説】

MAIN-PROCでは健康診断マスタファイル(MST-FILE)と結果ファイル(RSLT-FILE)を開きます。ここでは、マスタファイルに受診日を格納するために結果ファイルを読み込んで受診日の項目をデータ項目NEW-DATEに転記しています。そのため、aの解答はアの「MOVE RSLT-DATE TO NEW-DATE」になります。

【bの解説】

REL-PROCの処理は結果ファイルを終端までレコードごとに読込み、PERFORMのループ処理の中で整列併合用ファイルのレコードに結果ファイルのレコードを1行ずつ転記しています。SORT文で整列併合ファイルに書き込むためにはRELEASE文を使用します。

そのため、bの解答はカの「RELEASE SORT-REC FROM RSLT-REC」になります。

【cの解説】

並列処理用ファイルを終端まで読み込む処理を行い、レコードごとにMATCHING-PROCの処理を呼出しています。ここでの処理は健康診断マスタファイルを読み込んで、レコードを並び替えるために従業員番号と整列併合ファイルの従業員番号が等しくなるまで比較しています。

そのため、cの解答はアの「MST-NO = SORT-NO」となります。

【dの解説】

dの処理ではPERFORM文で受診回数の判断を行います。プログラムの説明のとおり受信回数が10回に満たない限り、残りの結果履歴には0が指定されます。

そのため、dの解答はイの「FROM 9 BY -1」となります。

PERFORM文の条件が真の場合は受信履歴が更新され、最後に結果ファイルの受診日の日付と整列処理した受診結果を更新しています。

練習問題

ここでは練習問題にチャレンジしてみましょう。

問)

平成28年度秋期COBOLのプログラムにおいて、手続き部(PROCEDURE DIVISION)から始まる処理内容について簡単に説明してください。

答え)

プログラムの内容としては、実施した健康診断の結果ファイルを過去10回分の履歴が記録されている健康診断マスタファイルに書き込む処理となります。

MAIN-PROCではマスタファイルの結果ファイルを開き、結果ファイルを読み込んで受診日を一番新しい日付としてNEW-DATEに転記しています。

次に整列処理を行うために従業員番号を主キーとして整列併合ファイルを開き、レコードを取得するための処理REL-PROCを呼出し、結果ファイルを読み込んでレコードを並列処理用のレコードに引き渡しています。

次に整列処理を行うためにRET-PROCの処理を呼出し、REL-PROCで取得した結果ファイルのレコードが存在する限り結果ファイルに書き込みを行う処理MATCHING-PROCを呼出しています。

MATCHING-PROCでは結果ファイルのレコードを並び替えるために、マスタファイルの従業員番号と整列併合ファイルの従業員番号を一致させています。

結果ファイルのレコード数が条件に満たない場合は0を設定し、それ以外なら結果履歴を取得しています。

最後に受診日と結果をレコードに格納してマスタファイルの書き換えを行います。

ここでは、平成28年度秋期のCOBOLの出題内容について解説しました。

COBOLの実際の処理でもよく使われるマスタファイルへの書き換えや、並列処理など基本的な内容が出題されています。

しかし、プログラムの説明とプログラムの内容をよく理解していないと解答することが難しく、特にb、cの正答率は低くあまり理解されていないようでした。

整列併合処理の流れについてはある程度共通していますので、実際に自分でプログラムを作成して処理を把握できるようにしておきましょう。

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

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

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

COBOL入門のカテゴリー

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