【COBOL言語】基本情報技術者試験と過去問題-平成23年度春期-|合格対策
基本情報技術者試験(平成23年度春期)午後問題のCOBOL言語での解き方とは
※情報処理推進機構(IPA)は、午後の試験で選択できるプログラミング言語のうち、「COBOL」の出題を令和元年秋期試験で廃止しました。
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に示すレコード形式の順ファイルである。
図1.株主ファイルのレコード様式
① 株主番号には、株主に対して一意に割り当てた番号が設定されている。
② 保有株数には、保有する株数が設定されている。保有株数の最大は、999,999とする。
③ 登録年には、最初に株主一覧に登録された年が設定されている。ただし、株をすべて売却したのちに再取得した株主の場合は、再取得後、株主一覧に登録された年が設定される。
(2) 保有期間は、登録年から2011年までの年数で決定する。例えば、登録年が2006年の場合は5年である。
(3) この会社が株式公開したのは、1990年4月1日であり、最初に株主一覧へ登録されたのは1991年3月31日である。従って、最長保有期間は20年である。
(4) 商品券ファイルは、図2に示すレコード様式の順ファイルである。
図2.商品券ファイルのレコード様式
発行額には、各株主に対する商品券の発行額を設定する。発行額は表1に示す決定表によって決まる。
表1.決定表
■プログラム
出典:平成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入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典