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

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

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

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

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

基本情報技術者試験(平成23年度春期)COBOL言語の午後問題は、株主ファイルを読み込み、株主が保有する株数と保有期間を条件に、発行する商品券の発行額を決め、商品券ァイルに出力するプログラムに関する穴埋め問題と、そのプログラムに株の保有期間別に株主数の比率を表示する機能を追加する穴埋め問題でした。出題形式は、まずプログラムの説明を読み仕様を理解し、その仕様を実現したプログラムを読み込んでから、設問に解答する形式で、複数の解答の中から正しい解答を選択します。

設問1ではEVALUATE文を用いた多岐選択処理の理解度が試され、設問2では配列を用いた集計処理の理解度が試されています。COBOL言語の基本であるEVALUATE文による条件の多岐選択と集計処理に慣れていれば、十分に解答することができる出題内容です。

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

この章では、基本情報技術者試験(平成23年度春期)COBOL言語の午後問題の問10の設問1(多岐選択問題)について解説しますので、EVALUATE文による多岐選択処理を理解しましょう。

■プログラムの説明

小売業のC社では、自社株主へ株主優待として、自社店舗で利用できる商品券を発行することにした。株主の保有株数と保有期間によって、発行額を決定する。この会社では、毎年3月31日の株取引終了時点で自社株を保有している株主を対象として株主一覧を作成しており、商品券は2011年3月31日に作成した株主一覧に登録されている個人株主に対して発行する。

このプログラムは、株主ファイルを読み込み、発行する商品券の発行額を商品券ファイルに出力する。

(1) 株主ファイルは、2011年3月31日に作成した株主一覧に登録されている個人株主を対象に作成した、図1に示すレコード形式の順ファイルである。

試験-平成23年度春期-株主ファイルのレコード様式

図1.株主ファイルのレコード様式

① 株主番号には、株主に対して一意に割り当てた番号が設定されている。

② 保有株数には、保有する株数が設定されている。保有株数の最大は、999,999とする。

③ 登録年には、最初に株主一覧に登録された年が設定されている。ただし、株をすべて売却したのちに再取得した株主の場合は、再取得後、株主一覧に登録された年が設定される。

(2) 保有期間は、登録年から2011年までの年数で決定する。例えば、登録年が2006年の場合は5年である。

(3) この会社が株式公開したのは、1990年4月1日であり、最初に株主一覧へ登録されたのは1991年3月31日である。従って、最長保有期間は20年である。

(4) 商品券ファイルは、図2に示すレコード様式の順ファイルである。

試験-平成23年度春期-商品券ファイルのレコード様式

図2.商品券ファイルのレコード様式

発行額には、各株主に対する商品券の発行額を設定する。発行額は表1に示す決定表によって決まる。

表1.決定表

試験-平成23年度春期-決定表

■プログラム

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

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

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

a、bに関する解答群

(ア)1

(イ)9

(ウ)10

(エ)99

(オ)999

(カ)1000

(キ)ANY

(ク)OTHER

c~eに関する解答群

(ア)0

(イ)1

(ウ)4

(エ)5

(オ)9

(カ)10

(キ)ANY

(ク)OTHER

f、gに関する解答群

(ア)1000

(イ)3000

(ウ)5000

(エ)9999

(オ)10000

(カ)20000

(キ)ANY

(ク)OTHER

■解答

設問1-a:(ア)

設問1-b:(オ)

設問1-c:(ア)

設問1-d:(ウ)

設問1-e:(キ)

設問1-f:(ア)

設問1-g:(エ)

【a、bの解説】

設問1では、2つの項目に対する条件を、EVALUATE文による多岐選択により実現するテクニックが問われています。

[a][b]は、34行目のEVALUATE文に記述されている1個目の評価対象である保有株数「HLD-STOCK」に対する値を記述する問題です。

35行目のWHEN句による条件(評価)が満たされたときに実行されている36行目の命令に着目してください。商品券ファイルの発行額「GFT-SUM」に「1000」を設定しています。34行目から始まるEVALUATE文は、プログラムの説明(4)表1.決定表に従って記述されていますので、商品券の発行額が1,000円になる条件は、保有株数が999株以下、かつ保有期間が5年未満です。保有株数999株以下は「1 THRU 999」と記述します。

従って、解答は[a]が「(ア)1」、[b]が「(オ)999」になります。

【c、dの解説】

[c][d]は、34行目のEVALUATE文に記述されている2個目の評価対象である保有期間「TERM」に対する値を記述する問題です。

34行目から始まるEVALUATE文の35行目のWHEN句で、商品券の発行額が1,000円になる条件は、保有株数が999株以下、かつ保有期間が5年未満です。保有期間5年「未満」は「0 THRU 4」と記述します。「1 THRU 5」と間違えやすいので注意してください。

従って、解答は[c]が「(ア)0」、[d]が「(ウ)4」になります。

【eの解説】

[e]は、34行目のEVALUATE文に記述されている1個目の評価対象である保有株数「HLD-STOCK」と、2個目の評価対象「TERM」の両方に記述できる予約語の問題です。

43行目のWHEN句で、1個目の評価対象と2個目の評価対象がともに[e]になっていることに着目してください。解答群の中で、予約語は「ANY」と「OTHER」です。WHEN句に「ANY」を記述すると評価対象を評価しないという意味になり、「OTHER」を記述すると、評価対象がどの条件にも当てはまらないという意味になります。

従って、解答は「(キ)ANY」になります。

【f、gの解説】

[f][g]は、34行目のEVALUATE文に記述されている1個目の評価対象である保有株数「HLD-STOCK」に対する値を記述する問題です。

商品券の発行額が3,000円になるのは、保有株数が999株以下、かつ保有期間が5年以上の場合と、保有株数が1,000~9,999株、かつ保有期間が5年未満の場合の2つです。「保有株数が999株以下、かつ保有期間が5年以上」という条件は37行目に記述されていますので、38行目には「保有株数が1,000~9,999株、かつ保有期間が5年未満」という条件を記述しなければなりません。

従って、解答は[f]が「(ア)1000」、[g]が「(エ)9999」になります。

練習問題

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

問)

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

答え)

株主ファイルを入力モード、商品券ファイルを出力モードでオープンする。

株主ファイルをシーケンシャルに読み込み、株主ファイルがEOFになるまで、保有期間を算出し、保有株数と保有期間から株主に対する商品券の発行額を決定し、商品券ファイルに書き込む処理を繰り返す。

株主ファイルと商品券ファイルをクローズし、プログラムを終了する。

基本情報技術者試験(平成23年度春期)では、EVALUATE文を用いた多岐選択と配列への集計処理が出題されました。どちらもCOBOL言語でプログラムを作成する上での基本的なテクニックですから、試験に臨む前にぜひ習得しておきましょう。

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

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

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

COBOL入門のカテゴリー

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