平成24年 春期 基本情報技術者 午後 問10
問10 COBOL問10 次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 ある遊園地では,IC カードを利用した精算システムを導入した。入園時に, 入園者から入園料を受け取ると,入園者番号を記録した IC カードを渡し,入園者番号と 年齢層の情報を入園者ファイルに格納する。各施設では,提示された IC カードから 入園者番号を読み取り,施設利用実績をイベントファイルに格納する。退園時に, 入園者から IC カードが返却されたときに,施設利用料金を一括で徴収する。 このプログラムは,入園者ファイル及びイベントファイルに格納されたデータを読み込み, 入園者に関する情報を集計して表示する。 (1) 入園者ファイルは,図1に示すレコード様式の,入園者番号を主キーとする索引ファイルである。 ファイルは,営業日ごとに作成する。
図1 入園者ファイルのレコード様式 A 年齢層コードには,4 〜 12 歳は 1 ,13 〜 18 歳は 2 ,19 〜 29 歳は 3 ,30 〜 49 歳は 4 , 50 歳以上は 5 を格納する。4歳未満は入園料及び遊戯施設利用料金が無料となるので, IC カードは発行せず,入園者ファイルにも格納しない。 (2) イベントファイルは,図2に示すレコード様式の順ファイルである。 入園者の IC カード利用状況(以下,イベントという)を格納する。ファイルは,営業日ごとに作成する。
図2 イベントファイルのレコード様式 @ イベントコードには,発生したイベントに応じて,表1に示すイベントコードを格納する。
A 時刻には,イベントが発生した時刻の時,分,秒を 24 時間表記で格納する。 時系列で格納するので,レコードは時刻の昇順になっている。 なお,この遊園地は 10 時に開園し,全ての入園者は 20 時になるまでに退園する。 20 時台の時刻が格納されることはない。 B 金額には,該当するイベントを利用した際の金額を格納する。 なお,入退園(イベントコード 01,02 )の場合は,0 を格納する。 C 一旦退園した入園者が,その日のうちに同じ入園者番号で再入園することはない。 (3) 集計結果の表示例を図3に示す。
図3 集計結果の表示例 @ TOTAL GUESTS には,入園者数を表示する。1日の入園者数が 5,000 人を超えることはない。 A STAY GUESTS には,左端に表示した時間帯の滞在者数を,年齢層別に棒グラフで表示する。 例えば,10 時ちょうどに入園し,11 時ちょうどに退園した者は,10 時台と 11 時台の滞在者として数える。 B 棒グラフを構成する各記号は,表2に示すとおり滞在者の年齢層と対応している。 記号一つは 100 人を表し,100 人未満の端数は切り捨てる。
〔プログラム〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD GUEST. 4 01 G-REC. 5 02 G-NO PIC X(4). 6 02 G-AGE PIC 9(1). 7 FD EVENT. 8 01 E-REC. 9 02 E-NO PIC X(4). 10 02 E-CODE PIC 9(2). 11 88 E-ENTER VALUE 1. 12 88 E-EXIT VALUE 2. 13 88 E-FAC VALUE 3 THRU 8. 14 88 E-MEAL VALUE 9. 15 88 E-SHOP VALUE 10. 16 02 E-TIME. 17 03 E-HH PIC 9(2). 18 03 E-MMSS PIC 9(4). 19 02 E-SALES PIC 9(6). 20 WORKING-STORAGE SECTION. 21 77 READ-FLAG PIC X(1) VALUE SPACE. 22 88 EOF VALUE "E". 23 77 CR-HH PIC 9(2) VALUE 10. 24 77 I PIC 9(2). 25 77 J PIC 9(2). 26 77 MARK-CNT PIC 9(2). 27 77 MARK-POS PIC 9(2). 28 77 TOTAL-GUEST PIC 9(4) VALUE 0. 29 77 TOTAL-GUEST-X REDEFINES TOTAL-GUEST PIC X(4). 30 01 STAY-GUEST. 31 02 STAY-CNT PIC 9(4) OCCURS 5 VALUE ZERO. 32 01 PRT-GUEST. 33 02 PRT-TIME OCCURS 10. 34 03 PRT-AGE PIC 9(4) OCCURS 5 VALUE ZERO. 35 01 HD-SCALE PIC X(50)VALUE 36 "----+----1----+----2----+----3----+----4----+----5". 37 01 LHEADER. 38 02 LHD-HH PIC 9(2). 39 02 PIC X(7) VALUE ":00-59". 40 02 LHD-MARK PIC X(50). 41 01 AGE-MARK. 42 02 KIDS-M PIC X(50) VALUE ALL "@". 43 02 STUDENT-M PIC X(50) VALUE ALL "*". 44 02 YOUNG-M PIC X(50) VALUE ALL "+". 45 02 ADULT-M PIC X(50) VALUE ALL "=". 46 02 OLD-M PIC X(50) VALUE ALL "-". 47 01 REDEFINES AGE-MARK. 48 02 MARK PIC X(50) OCCURS 5. 49 PROCEDURE DIVISION. 50 MAIN-PROC. 51 OPEN INPUT GUEST EVENT. 52 PERFORM UNTIL EOF 53 READ EVENT 54 AT END 55 SET EOF TO TRUE 56 NOT AT END 57 IF CR-HH NOT = E-HH THEN 58 PERFORM VARYING CR-HH FROM CR-HH BY 1 59 UNTIL CR-HH = E-HH 60 61 END-PERFORM 62 END IF 63 PERFORM SUM-PROC 64 END READ 65 END PERFORM. 66 CLOSE GUEST EVENT. 67 PERFORM PRT-PROC. 78 STOP RUN. 69 SUM-PROC. 70 MOVE ENO TO G-NO. 71 READ GUEST. 72 EVALUATE TRUE 73 WHEN E-ENTER 74 ADD 1 TO 75 WHEN E-EXIT 76 SUBTRACT 1 FROM STAY-CNT(G-AGE) 77 END-EVALUATE. 78 PRT-PROC. 79 DISPLAY "TOTAL GUESTS " TOTAL-GUEST-X. 80 DISPLAY "STAY GUESTS". 81 DISPLAY " " HD-SCALE. 82 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 83 MOVE 1 TO MARK-POS 84 COMPUTE LHD-HH = I + 9 85 MOVE SPACE TO LHD-MARK 86 PERFORM VARYING J FROM 1 BY 1 UNTIL J > 5 87 COMPUTE MARK-CNT = PRT-AGE(I, J) / 100 88 IF MARK-CNT > 0 THEN 89 MOVE MARK(J)(1:MARK-CNT) TO LHD-MARK(MARK-POS:) 90 91 END-IF 92 END-PERFORM 93 DISPLAY LHEADER 94 END-PERFORM. 設問1 プログラム中の に入れる入れる答えを,解答群の中から選べ。 a に関する解答群 イ MOVE STAY-CNT(CR-HH - 8) TO PRT-TIME(CR-HH) ウ MOVE STAY-GUEST TO PRT-TIME(CR-HH - 8) エ MOVE ZERO TO PRT-AGE(CR-HH - 8, CR-HH) b 〜 d に関する解答群 ウ J エ PRT-AGE(CR-HH - 9, G-AGE) オ PRT-AGE(G-AGE, CR-HH - 9) カ STAY-CNT(CR-HH) キ STAY-CNT(G-AGE) ク TOTAL-GUEST e に関する解答群 イ ADD J TO MARK-POS ウ ADD MARK-CNT TO MARK-POS エ ADD MARK-POS TO MARK-CNT
設問2 各遊戯施設の延べ利用者数を集計し,図4に示すグラフを追加表示するように プログラムを変更した。表3中の に入れる正しい答えを, 解答群の中から選べ。 〔グラフの説明〕 (1) 左端に表示したイベントコードに対応する遊戯施設を利用した延べ人数を 表示する。記号 # 一つは 100 人を表し, 100 人未満の端数は切り捨てる。 一つの遊戯施設の延べ利用者数が 5,000 人を超えることはない。 (2) 延べ利用者数が 100 人未満の遊戯施設の行は表示しない。
図4 遊戯施設利用状況の表示例
表3 プログラムの変更
f に関する解答群 イ ADD 1 TO FAC-CNT(E-CODE - 2) ウ ADD G-AGE TO FAC-CNT(E-CODE) エ ADD G-NO TO FAC-CNT(E-CODE) オ ADD STAY-CNT(G-AGE) TO FAC-CNT(E-CODE) gに関する解答群 イ UNTIL FAC-NO > 6 AND MARK-CNT > 50 ウ UNTIL FAC-NO > 6 0R MARK-CNT > 50 エ VARYING FAC-NO FROM 1 BY 1 UNTIL FACT-NO > 6 オ VARYING FAC-NO FROM 3 BY 1 UNTIL FACT-NO > 8
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||