![]()
平成18年 春期 基本情報技術者 午後 問11
問11 COBOL次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 A 〜 J の 10 駅を結ぶ路線をもつ鉄道において,利用者の入場駅,出場駅及び入場時刻が 1 日分記録された乗客ファイルを読み込み,各駅間の区間利用者数を集計して印字するプログラムである。 (1) 乗客ファイル( IN-FILE )は,次のレコード様式の順ファイルであり, 乗客 1 人の 1 回の利用に対して一つのレコードが作成される。
@ 上り及び下り列車の利用者が順不同で格納されている。 A 入場時刻は,HHMM の形式で格納されている。 ここで,HH は 24 時間表現の時を表し,MM は分を表す。 なお,各駅は午前 6 時に開場し,午前 0 時に閉鎖する。 閉鎖中,乗客は駅及び列車内にとどまることはできない。 B 入場駅及び出場駅は,次のとおり,それぞれの駅に対応する番号 01 〜 10 として格納されている。 入場駅と出場駅は異なるものとする。 A 駅は 01,B 駅は 02,C 駅は 03,D 駅は 04,…,J 駅は 10 例: 6 時 55 分に B 駅から入場し,D 駅で出場した場合は,次のとおり記録される。
(2) 印字様式は,次のとおりとする。
@ TIME は,印字された時間帯の利用であることを表す。例えば,07 時 00 分〜 07 時 59 分における利用ならば,07:00 の行に集計される。 A A-B から I-J の各列は区間を表す。 例えば,A-B は A 駅から B 駅までの区間を表す。 B UP は上り(A 駅から J 駅の方向)を,DOWN は下り( J 駅から A 駅の方向)を表す。 C 利用者数は,入場時刻を基にした経過時間及び乗車区間で集計する。 なお,各駅間の区間所要時間は 10 分とし,待ち時間や乗換えなどは考慮しない。 例えば,(1) の例の“ 6 時 55 分に B 駅から入場し,D 駅で出場した場合”であれば, 次の網掛け部分を 1 名が利用したとみなし,各要素にカウントする。 人数は 999,999 以下とする。
〔プログラム〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD IN-FILE. 4 01 IN-REC PIC X(8). 5 FD PR-FILE. 6 01 PR-REC PIC X(100). 7 WORKING-STORAGE SECTION. 8 01 W-IN-REC. 9 02 IN-STATION PIC 9(2). 10 02 OUT-STATION PIC 9(2). 11 02 IN-TIME. 12 03 IN-HH PIC 9(2). 13 03 IN-MM PIC 9(2). 14 01 COUNT-TABLE. 15 02 UP-TABLE OCCURS 18. 16 03 UP-PASSENGER OCCURS 9 PIC 9(6) VALUE ZERO. 17 02 DOWN-TABLE OCCURS 18. 18 03 DOWN-PASSENGER OCCURS 9 PIC 9(6) VALUE ZERO. 19 77 READ-SW PIC X(1) VALUE SPACE. 20 88 AT-END VALUE "E". 21 77 WAY PIC S9(1). 22 88 UP-WAY VALUE 1. 23 88 DOWN-WAY VALUE -1. 24 77 TIME-IDX PIC S9(2). 25 77 TIME-CNT PIC S9(2). 26 77 SECT-IDX PIC S9(2). 27 01 W-PR-HEADER. 28 02 PIC X(15) VALUE "TIME". 29 02 PIC X(50) VALUE 30 "A-B B-C C-D D-E E-F". 31 02 PIC X(35) VALUE 32 "F-G G-H H-I I-J". 33 01 W-PR-REC. 34 02 PR-TIME. 35 03 PR-HH PIC 9(2). 36 03 PR-MM PIC X(4). 37 02 PR-WAY PIC X(4). 38 02 OCCURS 9. 39 03 PIC X(3) VALUE SPACE. 40 03 PR-PASSENGER PIC ZZZ,ZZ9. 41 PROCEDURE DIVISION. 42 MAIN-PROCEDURE. 43 OPEN INPUT IN-FILE OUTPUT PR-FILE. 44 PERFORM TEST BEFORE UNTIL AT-END 45 READ IN-FILE AT END SET AT-END TO TRUE 46 NOT AT END MOVE IN-REC TO W-IN-REC 47 PERFORM COUNT-PASSENGER 48 END-READ 49 END-PERFORM. 50 PERFORM PRINT-DATA. 51 CL OS E IN-FILE PR-FILE. 52 STOP RUN. 53 COUNT-PASSENGER. 54 IF 設問1 プログラム中の
a,c に関する解答群 ア IN-STATION < 5 イ IN-STATION < OUT-STATION ウ IN-STATION > 5 エ IN-STATION > OUT-STATION オ TIME-CNT = 60 カ TIME-CNT >= 60 キ TIME-IDX = 0 ク TIME-IDX NOT = 0 b,d に関する解答群 ア SECT-IDX イ SECT-IDX, TIME-IDX ウ TIME-IDX - 1, SECT-IDX エ TIME-IDX + 1, SECT-IDX オ TIME-IDX カ TIME-IDX, SECT-IDX - 1 キ TIME-IDX, SECT-IDX + 1 ク TIME-IDX, SECT-IDX
設問2 区間利用者数をより正確に集計するため,各駅間の所要時間を分単位で
保持するテーブルを用意し,そのテーブルから経過時間を求めるよう,プログラムを変更したい。
次の表中の
解答群 ア 60 - SECT-MM(SECT-IDX) イ 60 - SECT-MM(TIME-IDX) ウ TIME-CNT + SECT-MM(SECT-IDX) エ TIME-CNT + SECT-MM(SECT-IDX + 1) オ TIME-CNT + SECT-MM(SECT-IDX - 1) カ TIME-CNT + SECT-MM(TIME-IDX) キ TIME-CNT + SECT-MM(TIME-IDX + 1) ク TIME-CNT + SECT-MM(TIME-IDX - 1)
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||||||||