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

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

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

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

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

基本情報技術者試験のCOBOLの問題は、プログラムの説明とプログラムを読んで、設問1、2の内容に答えていく形となります。

平成22年度秋期で出題されたプログラムは、順ファイルで記録された売上ファイルを集計し、その集計結果を指定された表示順に並び替えて画面出力するという処理になります。

試験問題では、ファイル操作や2次元配列を利用した集計処理、COBOLの予約語を利用した並び替え処理(ソート)、そしてデータ編集の基本知識を問うことで、COBOLプログラムの作成能力が評価されます。

プログラムの処理の流れ自体は、実際の業務プログラムでもよく利用されるものですが、試験問題という事もあって、ちょっとしたテクニック(ポイント)が必ず入れられています。

今回のポイントは、レコードの並べ替え処理(ソート)になりますが、ファイル全件の並び替えと、指定したレコードの並べ替え処理の違いなどが理解できていれば、それほど悩まず問題を解く事ができると思いますので、しっかりとそのポイントについて理解を深めていきましょう。

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

では、平成22年度秋期の午後に出題された、プログラムに必要な内容を穴埋めしていく問題をみていきましょう。最後に解答の解説を付けておりますので、問題の理解に役立ててください。

■プログラムの説明

ある有料自動車道路にはA~Jの順に10か所のインターチェンジ(以下、ICという)があり、すべてのICに自動発券精算システムを導入することにした。すべてのICには一般道路からの出入口があり、利用者は、入ったIC(以下、入車ICという)で発券された通行券を、出たIC(以下、出庫ICという)の精算機に投入し、利用区間に応じた通行料を支払う。システムは計算センタとオンラインで結ばれており、通行料は出庫ICの売上として売上ファイルに記録される。

このプログラムは、売上ファイルを読み込み、各ICの売上、及び利用区間とその利用台数を台数の多い順に10区間まで、図1に示す形式で表示する。

試験-平成22年度秋期-プログラム実行時の表示例

(1)売上ファイルは、図2に示すレコード様式の順ファイルである。

試験-平成22年度秋期-売上ファイルのレコード様式

① 車1台の1回の利用につき1レコードが生成され、一つのファイルには1日分の売上が記録されている。

② 入庫IC及び出庫ICには、各ICに対応する01~10の番号が格納される。Aは01、Bは02、…、Jは10とする。

(2)各ICの1日の売上は999,999円以下とする。

(3)1日の利用台数は99,999台以下とする。

(4)利用台数の多い順に10区間までを表示する際、10区間目と台数が同じ利用区間が複数ある場合は、それらの利用区間もすべて表示する。ただし、利用台数がゼロになった場合、表示が10区間に満たなくても処理を終了する。

(5)Uターン及び同じICからの入出庫はないものとする。

■プログラム(1/3)

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

■プログラム(2/3)

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

■プログラム(3/3)

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

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

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

a~cに関する解答群

ア ADD SECT-NUM(SAL-IN SAL-OUT) TO TOTAL

イ ADD 1 TO IC-TOTAL(CNT1)

ウ ADD 1 TO SECT-NUM(SAL-IN SAL-OUT)

エ ADD IC-TOTAL(CNT1) TO SECT-NUM(SAL-IN SAL-OUT)

オ ADD IC-TOTAL(CNT1) TO TOTAL

カ MOVE IC-TOTAL(CNT1) TO SORT-DATA

キ MOVE SECT-NUM(CNT1 CNT2) TO SORT-DATA

dに関する解答群

ア CNT1 > 10 AND PREV-NUM < =10

イ CNT1 > 10 AND SORT-DATA < PREV-NUM

ウ CNT1 > 10 AND SORT-DATA < = PREV-NUM

エ CNT1 > 10 AND SORT-DATA >= PREV-NUM

オ SORT-IN > 10 AND SORT-OUT > 10

■解答

設問1(a):ウ

設問1(b):オ

設問1(c):キ

設問1(d):イ

【aの解説】

今回のプログラムは、大きく2つの処理で作られています。1つ目は、各ICの売上サマリの表示。2つ目は、利用区間とその区間の車の利用台数の表示になります。プログラムを読み進める際は、この「2つの処理」を意識して読み進めましょう。

次に問題のaですが、aが属する「CNT-PROC SECTION」は、上記「2つの処理」のための集計処理を行っています。各ICの売上サマリはaの前文で行っているため、ここでは利用区間ごとの車の利用台数のサマリ処理を行う必要があります。利用台数は車1台の1回の利用につき、売上ファイルが1レコード作成されますので、単純に1レコードずつカウントすれば求められる事になります。

【bの解説】

設問bが属する「PRINT-PROC SECTION」は、aの問題で解説した「2つの処理」の画面表示にあたる処理を行っています。bは、その内の各ICの売上サマリの表示と並行して繰り返し行われる処理になり、この後に記述されている「DISPLAY PRT-TOTAL」で売上合計を表示している事から、各ICの売上サマリをここで求める必要がある事がわかります。

【cの解説】

設問cが属する「IN-PROC SECTION」は、bの問題で解説した「2つの処理」の画面表示の内、利用区間ごとの車の利用台数の表示に向けた処理を行っています。具体的には、ソート処理のINPUT PROCEDUREにあたる処理のため、ソート対象(SORT-REC)のレコードの指定を行う必要があります。SORT-IN、SORT-OUTのデータ編集は前文で行っているため、利用区間ごとの利用台数をSORT-DATAに設定している解答を選択すればいい事になります。

【dの解説】

設問dは、プログラム説明にある「利用台数の多い順に10区間まで表示する際、10区間目と台数が同じ利用区間が複数ある場合は、それらの利用区間もすべて表示する。ただし、利用台数がゼロになった場合は、表示が10区間に満たなくても処理を終了する」が判断できる条件を選択する必要があります。利用台数ゼロの条件は既に指定されているため、10区間を超え、かつ処理直前の利用台数を超えるかどうかの判断をしている条件を選択すればいい事になります。

練習問題

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

問)

平成22年度秋期COBOLのプログラムにおいて、利用区間ごとの車の利用台数の表示を「少ない順」で表示するためにはどこを修正すれば良いでしょう?(ただし、設問d部分の考慮はしない。)

解答)

64行目のSORT処理の整列指示を「DESCENDING」から「ASCENDING」に修正する。

解説)

レコードの一部をソートするSORT文の記述方法は、「SORT ファイル名 ON 整列指示(ASCENDING or DESCENDING) データ名 INPUT PROCEDURE IS 手続き名1 OUTPUT PROCEDURE IS 手続き名2」となります。「少ない順(昇順)」は、この中の整列指示を指定する事になり、ASCENDINGにあたります。

COBOL言語の並べ替え処理(ソート)は業務プログラムでもよく利用される処理です。実際の処理の記述方法だけでなく、どういった指定をすれば、どういう操作が行えるかまで、しっかりと学習しておきましょう。

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

出題されるプログラムは実際の業務プログラムでもよく利用されるものになりますが、よく利用される分、意外と基本的な知識の押さえが疎かになるものです。試験当日戸惑わないためにも、事前に予約語の記述方法については、しっかりと学習するように心がけましょう。

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

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

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

COBOL入門のカテゴリー

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