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

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

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

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

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

基本情報技術者試験(平成23年度秋期)COBOL言語の午後問題は、受験の申し込み登録したファイルから受験区分別の申込者数を集計し、集計表を出力するプログラムに関する穴埋め問題と、そのプログラムを申込者が多い人数順に出力できるように変更する穴埋め問題でした。出題形式は、まずプログラムの説明を読み仕様を理解し、その仕様を実現したプログラムを読み込んでから、設問に解答する形式で、複数の解答の中から正しい解答を選択します。

設問1ではSEARCH文を用いた配列の検索処理と、2次元配列を用いた集計処理の理解度が試され、設問2ではSORT文を用いた並べ替え処理の理解度が試されています。プログラムを見ると難しそうですが、SEARCH文、SORT文、2次元配列の構造と使い方を理解していれば、設問に解答することができる出題内容です。

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

この章では、基本情報技術者試験(平成23年度秋期)COBOL言語の午後問題の問10の設問1(配列の検索と2次元配列への集計問題)について解説しますので、配列の検索方法と、2次元配列への集計処理のパターンを理解しましょう。

■プログラムの説明

受験の申込みを登録した申込ファイルから、受験区分別に申込者の人数を集計し、集計表を印字するプログラムである。

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

試験-平成23年度秋期-申込ファイルのレコード様式

図1.申込ファイルのレコード様式

① 受験の申込み1件に対して、1件のレコードが作成され、5桁の申込番号が付与される。

② 受験区分は、試験区分と開催地区分から構成される。

③ 試験区分は、試験内容に対応付けたA~Hのいずれか1文字である。

④ 開催地区分は、開催地に対応付けた01~20のいずれかの数字である。

⑤ 各受験区分の申込者数は、999人以下である。

⑥ 申込ファイルの内容には、誤りはないものとする。

(2) 集計表の印字例は、図2のとおりである。申込者がいない受験区分は、印字しない。

試験-平成23年度秋期-集計表の印字例

図2.集計表の印字例

■プログラム

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

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

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

aに関する解答群

(ア)MOVE 1 TO TEST-IDX

(イ)MOVE 1 TO TEST-NO

(ウ)MOVE TEST-IDX TO TEST-NO

(エ)SET TEST-IDX TO 1

(オ)SET TEST-IDX TO TEST-CATEG-S

(カ)SET TEST-IDX TO TEST-NO

bに関する解答群

(ア)SUM-WK

(イ)TEST-IDX

(ウ)TEST-NO

(エ)TEST-W1

(オ)TEST-W2

(カ)TEST-W3

cに関する解答群

(ア)SUM-WK(LOOP1 LOOP2)

(イ)SUM-WK(LOOP2 LOOP1)

(ウ)SUM-WK(TEST-CATEG-M TEST-NO)

(エ)SUM-WK(TEST-NO TEST-PLACE-M)

(オ)SUM-WK(TEST-PLACE-M TEST-NO)

(カ)SUM-WK(TEST-PLACE-S TEST-NO)

■解答

設問1-a:(エ)

設問1-b:(カ)

設問1-c:(ア)

【aの解説】

この設問に解答するために理解しておかなければならないのは、WORKING-STORAGE SECTIONで定義されている配列の目的です。

プログラムの説明(1)③で試験区分は、“A”~“H”のいずれか1文字であると説明されています。23行目で定義されている「TEST-W2」の値は”ABCDEFGH“で、試験区分が取り得る値の全てであることに着目してください。さらに「TEST-W2」は、24、25行目で、「TEST-IDX」というインデックス項目が指定された配列「TEST-W3」に再定義されていますので、配列「TEST-W3」は、試験区分が取り得る全ての値を格納した配列であり、SEARCH文による試験区分の検索に使用するために定義されていることになります。

SEARCH文は、検索を実行する前に、検索する配列を定義したときに「INDEXED BY」で指定した検索用のインデックス項目に、検索を開始するインデックス番号をSET文で設定しなければなりません。[a]の直後の行(45行目)から始まるSEARCH文のWHEN句で、検索条件に配列「TEST-W3」が使用されていることから、配列「TEST-W3」を定義したときに指定したインデックス項目である「TEST-IDX」に、検索を開始するインデックス番号を設定する必要があることがわかります。

従って、解答は「(エ)SET TEST-IDX TO 1」になります。

【bの解説】

SEARCH文の書式では、「SEARCH」のあとに検索する配列名を記述します。[b]のSEARCH文では、WHEN句の検索条件に配列「TEST-W3」を使用していることから、検索する配列名が「TEST-W3」であることが導かれます。

従って、解答は「(カ)TEST-W3」になります。

【cの解説】

[c]があるPRINT-PROCでは、1次元目を試験区分、2次元目を開催地区分にした8×20の2次元配列「SUM-WK」に集計した受験区分(試験区分+開催地区分)別の申込者数を印字しています。

プログラムの説明(2)に、申込者がいない受験区分は印字しないと明記されていますので、[c]を含むIF文では、集計した受験区分(試験区分+開催地区分)別の申込者数が0人であるかを判定しなければなりません。

従って、解答は「(ア)SUM-WK(LOOP1 LOOP2)」になります。

練習問題

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

問)

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

答え)

【全体】

受験の申込みを登録した申込みファイルから、受験区分ごとの受験者数を集計用の2次元配列に集計したのち、集計結果を印字する。

【MAIN-PROC】

申込ファイルを読み出しモードで、印刷ファイルを書き込みモードでオープンし、PERFORM文で受験区分ごとの受験者数を集計する処理(SUM-PROC)を行ったのち、PERFORM文で集計結果を印字する処理(PRINT-PROC)を行う。申込ファイル、印刷ファイルをクローズする。

【SUM-PROC】

申込ファイルをシーケンシャルに読み込み、EOFになるまで、1次元目を試験区分に、2次元目を開催地区分にした8×20の集計用の2次元配列に申込者数を集計する。

【PRINT-PROC】

1次元目を試験区分に、2次元目を開催地区分にした8×20の集計用の2次元配列から印字申込者数を取得し、受験者がいる受験区分について、受験区分と受験者数を印刷する。

基本情報技術者試験(平成23年度秋期)では、SEARCH文を用いた配列の検索、2次元配列への集計、SORT文を用いた配列のソートが出題されました。SEARCH文、SORT文、多次元配列は、実務でも使われるCOBOL言語の基本的な技術ですから、しっかりと覚えて試験にのぞみましょう。

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

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

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

COBOL入門のカテゴリー

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