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

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

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

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

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

平成26年度秋期に出題された問題は、月ごとの売上金額が記録されている売上ファイルを読み込んで、売上データをグラフに出力するプログラムが出題されています。

COBOLで表を印字する処理は、現在においては実際に使用する機会は少なく、グラフにデータを出力する処理を理解していなければ、正しい解答を導き出すことは難しいと言えるでしょう。

また、今回のプログラムは扱う項目も多く、計算処理や印字処理などプログラムの説明と各データ項目の役割を理解しておかなければ問題を解くことは難しく、難易度は高いと言えるでしょう。

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

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

■プログラムの説明

X社では、特定の商品の売上傾向を分析するために、2年分の売上についてグラフ化することにしました。 このプログラムは、分析する商品の商品コードをパラメタで受け取り、 全ての商品の売上データが記録されている売上ファイルから当該商品の売上を 月ごとに集計して、結果を図1に示すように印字しています。

試験-平成26年度秋期-売上グラフの例

(1) 売上グラフは、2012年4月~2014年3月の各月の売上を表す。

① 縦軸の数値は売上金額(単位は万円)で、下段から、1~ 100,000 円、100,001 ~ 200,000 円 、 …、900,001 ~ 1,000,000円を表す。

② 横軸の数値は月で、左端から、2012年4月、2012年5月,…、2014年3月を表す。

③ 縦軸と横軸の数値は、用紙にあらかじめ印字されている。

(2) 売上ファイルは、図2に示すレコード様式の順ファイルで、X社が扱う全ての商品の 2012年4月~ 2014年3月の各営業日の売上データが格納されている。 レコードは売上日の昇順に整列されている。

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

① 売上日には、年、月、日が、それぞれ4桁、2桁、2桁の西暦で格納されている。

② 商品コードには、販売した商品のコードが格納されている。商品コードは、商品ごとに一意に割り当てられている。

③ 取引先コードには、商品を販売した取引先のコードが格納されている。 取引先コードは、取引先ごとに一意に割り当てられている。

④ 各商品の月ごとの売上金額は、1~ 999,999 円とする。

■プログラム(1 / 2)

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

■プログラム(2 / 2)

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

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

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

a, bに関する解答群

ア ADD 1 TO CR-MONTH

イ ADD S-AMOUNT TO AMOUNT-MONTH(IX-COL)

ウ MOVE 1 TO CR-MONTH

エ MOVE S-AMOUNT TO AMOUNT-MONTH(CR-MONTH)

オ MOVE S-MM TO CR-MONTH

カ MOVE S-MM TO IX-LINE IX-COL

c に関する解答群

ア PRINT-ELM(IX-COL, IX-LINE)

イ PRINT-ELM(IX-LINE, IX-COL)

ウ PRINT-MK(IX-COL,IX-LINE)

エ PRINT-MK(IX-LINE, IX-COL)

■解答

設問1(a) :オ

設問1(b) :イ

設問1(c) :エ

【aの解説】

ADD-PROCの処理では、MAIN-PROCの処理で売上ファイルより取得したレコードから売上月を1つずつ設定していきます。

IF文の判定では売上月を格納するCR-MONTHと売上ファイルのレコードに記述されている売上月S-MMが一致するかの判定を行います。一致しなかった場合は判定文の処理に進み、読み込んだレコードの売上月S-MMをCR-MONTHに転記します。また、横軸のカラムを表すIX-COLをインクリメントすることで書き込むデータを4月,5月,6月…の順に処理することができます。そのため、aの解答はオの「MOVE S-MM TO CR-MONTH」になります。

【bの解説】

bの処理ではADD-PROCの処理で設定した該当月のデータを元に、売上金額の合計を求める処理となります。

月ごとの売上金額は売上ファイルから読み込んだ売上金額S-AMOUNTに、金額が記載されています。合計金額を求めるには、合計金額を格納する配列AMOUNT-MONTHにカラムの情報を格納しているIX-COLの要素を指定して、月ごとに売上金額を転記します。そのため、bの解答はイの「ADD S-AMOUNT TO AMOUNT-MONTH(IX-COL)」になります。

【cの解説】

cの処理では実際にグラフに金額を示すアスタリスクを出力していくことになります。PRINT-PROCの処理で最初のPERFORM文では24ヶ月分繰り返し処理を行います。

COMPUTE文では売上金額を表に出力できる値に計算し、表に出力するためのPRINT-MKを使用して縦軸の上段、横軸の左から指定していきます。COBOLで表を出力する場合は縦軸、横軸の順に指定します。

つまり、縦軸であるIX-LINEを初めに指定し、次に横軸である IX-COLを指定します。そのため、cの解答はエの「PRINT-MK(IX-LINE, IX-COL)」となります。

練習問題

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

問)

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

答え)

MAIN-PROCでは主にファイルの読込み処理を行います。初期の読込みフラグS-INITにTRUEをセットし、INITIALIZEで売上データAMOUNT-DATAを初期化しています。

月を設定するCR-MONTHでは4月から始めるため、4を設定しています。横軸のカラムを設定するIX-COLでは最初に1を設定します。

続いて売上ファイルS-FILEと書き込み用ファイルP-FILEをそれぞれOPEN文で開きます。

PERFORM UNTIL S-EOFの処理ではレコードが続く限り売上ファイルを1レコードずつ読込み、NOT AT END IFの処理で取得した商品名が検索対象の商品名と一致した場合はADD-PROCの処理に移動します。

ADD-PROCの処理では主に月ごとの売上(2012/04, 05, 06 ~)を計算しています。

IF文では月が一致しているか判定を行います。CR-MONTHはMAIN-PROCの処理で初期値に4が指定されており、S-MMは売上ファイルのレコードに記述されている売上月となります。

一致しなかった場合は売上月S-MMのデータをCR-MONTHに転記し、横軸を示すIX-COLを4月,5月と順番に処理するために1ずつインクリメントしています。

売上の合計を求めるには、その月の売上データであるS-AMOUNTに格納されていますので、月ごとの売上データを格納するAMOUNT-MONTHの配列の要素にIX-COLを指定します。

MAIN-PROCで売上ファイルのレコードを全て読み込んで集計処理が完了したあとは、実際にグラフへ出力する処理であるPRINT-PROCが呼び出されます。

PRINT-PROCでは、グラフを出力するためのデータPRINT-TABLEにまずスペースを転記しておきます。

PERFORMの条件は横軸のカラム数IX-COLに1を設定して1つずつ加算していき、24になるまで繰り返し処理を行います。

繰り返し処理の中ではグラフのラインを示すIX-LINEにアスタリスク*を印字していく処理になります。

COMPUTE文の処理では月ごとの売上金額AMOUNT-MONTH(IX-COL) に99999を加算し、100000で割った値を取得しています。そうすることでグラフに出力する際の縦軸の10~100の値に当てはめることができます。

MOVE文ではグラフに該当月の売上金を示すアスタリスク*を月ごとに書き込んでいきます。

次のPERFORM文では横軸のIX-LINEに0を設定して1ずつ減算していき、0になるまで繰り返し処理を行います。

繰り返し処理では、グラフの縦軸の上段100(1,000,000円)から順番に書き込み処理を行います。

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

今回は珍しくグラフにデータを出力する内容で、グラフを扱った処理や売上データを出力するにはどうすれば良いか?プログラムの説明をよく理解していなければ解答は難しいと言えます。

しかし、落ち着いてプログラムの処理を確認していけば、解ける内容になっていますので実際に自分でプログラムを作成して処理を把握できるようにしておきましょう。

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

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

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

COBOL入門のカテゴリー

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