平成24年 秋期 基本情報技術者 午後 問10
問10 COBOL次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 ある会員制スポーツクラブにおける利用料金の計算プログラムである。 このスポーツクラブは,会員が都合の良い時間に施設を利用できるようになっており, 会員の利用実績を利用記録ファイルに格納する。利用料金は,1か月に 10 時間まで 利用できる基本料金と,10時間を超過した時間に応じて課金する超過料金の合計であり, 1か月分をまとめて,翌月,会員に請求する。施設の利用実績がなかった会員にも, 基本料金は請求する。 (1) 会員ファイルは,図1に示すレコード様式の索引ファイルであり,会員番号を 主レコードキーとする。呼出し法は順呼出しとする。
図1 会員ファイルのレコード様式 @ 会員番号は,会員ごとに割り当てられる一意の番号であり,000001 から始まる6桁の数字である。 A 会員種別には,表1に示す会員種別が格納される。利用料金は,会員種別によって決まる。
表1 料金表 B 入会日には,入会した年,月,日が,それぞれ4桁,2桁,2桁で格納される。 (2) 利用記録ファイルは,図2に示すレコード様式の順ファイルであり,1か月分の 会員の利用実績を格納する。1レコードには,1人の会員の1回の利用に関する情報が格納される。
図2 利用記録ファイルのレコード様式 @ 利用日には,施設を利用した年,月,日が,それぞれ4桁,2桁,2桁で格納される。 A 開始時刻及び終了時刻には,時,分がそれぞれ2桁の24時間表記で格納される。 施設の営業時間は8時から 23 時までである。 B 利用時間には,施設の利用時間が分単位で格納される。 (3) 請求ファイルは,図3に示すレコード様式の順ファイルであり,会員ごとの月次請求金額を格納する。 超過料金は1か月の利用時間の合計(分)を時間単位に切り上げて課金する。
図3 請求ファイルのレコード様式 (4) 作業用ファイルは,図4に示すレコード様式の索引ファイルであり, 会員番号を主レコードキーとする。利用記録ファイルから会員ごとの利用時間の合計を分単位で 求めるために使用する。呼出し法は乱呼出しとする。
図4 作業用ファイルのレコード様式
〔プログラム〕 1 DATA DIVISION. 2 FILE SECTION. 3 FD WORK-F. 4 01 W-REC. 5 02 W-NO PIC X(6). 6 02 W-MIN PIC 9(6). 7 FD MEM-F. 8 01 M-REC. 9 02 M-NO PIC X(6). 10 02 M-CODE PIC 9(1). 11 02 M-PERSON. 12 03 M-NAME PIC X(10). 13 03 M-ADDR PIC X(20). 14 03 M-TEL PIC 9(11). 15 02 M-DATE PIC 9(8). 16 FD TIME-F 17 01 T-REC. 18 02 T-NO PIC 9(6). 19 02 T-DATE PIC 9(8). 20 02 T-STIME PIC 9(4). 21 02 T-ETIME PIC 9(4). 22 02 T-MIN PIC 9(4). 23 FD BILL-F. 24 01 B-REC. 25 02 B-NO PIC 9(6). 26 02 B-CHG PIC 9(6). 27 WORKING-STORAGE SECTION. 28 77 TIME-FLAG PIC X(1) VALUE SPACE. 29 88 TIME-EOF VALUE "E" 30 77 MEM-FLAG PIC X(1) VALUE SPACE. 31 88 MEM-EOF VALUE "E". 32 77 EXT-H PIC 9(4). 33 01 PRICE-VALUE. 34 02 PIC X(16) VALUE "5000500040003000". 35 02 PIC X(12) VALUE . 36 01 PRICE-TABLE REDEFINES PRICE-VALUE. 37 02 BASE-PRICE OCCURS 4 PIC 9(4). 38 02 EXT-PRICE OOCURS 4 PIC 9(3). 39 PROCEDURE DIVISION. 40 MAIN-PROC. 41 OPEN INPUT MEM-F TIME-F 42 I-O WORK-F 43 OUTPUT BILL-F. 44 PERFORM MKTIME-PROC. 45 PERFORM . 46 CLOSE MEM-F TIME-F WORK-F BILL-F. 47 STOP RUN. 48 MKTIME-PROC. 49 PERFORM UNTIL TIME-EOF 50 READ TIME-F AT END SET TIME-EOF TO TRUE 51 NOT AT END PERFORM MKWORK-PROC 52 END-READ 53 END-PERFORM. 54 MKWORK-PROC. 55 MOVE T-NO TO W-NO. 56 READ WORK-F 57 INVALID KEY MOVE T-NO TO W-NO 58 59 WRITE W-REC END-WRITE 60 NOT INVALID KEY ADD T-MIN TO W-MIN 61 REWRITE W-REC END-REWRITE 62 END-READ. 63 MKBILL-PROC. 64 PERFORM UNTIL MEM-EOF 65 READ MEM-F 66 AT END SET MEM-EOF TO TRUE 67 NOT AT END PERFORM WRBILL-PROC 68 END-READ 69 END-PERFORM. 70 WRBILL-PROC. 71 MOVE M-NO TO W-NO B-NO 72 MOVE BASE-PRICE(M-CODE) TO B-CHG. 73 READ WORK-F 74 INVALID KEY CONTINUE 75 NOT INVALID KEY 76 IF W-MIN > 600 THEN 77 COMPUTE EXT-H = (W-MIN - 600 + 59) / 60 78 79 END-IF 80 END-READ. 81 WRITE B-REC. 設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。 a に関する解答群
ウ "500400400300" エ "500500400300" b に関する解答群
ウ MKTIME-PROC エ MKWORK-PROC オ WRBILL-PROC c,d に関する解答群
イ ADD T-MIN TO W-MIN ウ COMPUTE B-CHG = B-CHG + EXT-PRICE(M-CODE) * EXT-H エ COMPUTE W-MIN = (T-MIN + 59) / 60 + 1 オ MOVE EXT-PRICE(M-CODE) TO B-CHG カ MOVE T-MIN TO W-MIN
設問2 テストデータを用いて動作確認をしたところ,利用記録ファイルの レコード数の増加に伴って,処理時間が想定を大きく超えることが判明した。調査の結果, 作業用ファイルの入出力に多くの時間を費やしていた。そこで,整列機能を使用して 処理時間の短縮を図ることにし,表2の変更を行うことにした。表2のプログラムでは, 図4に示すレコード様式の整列併合用ファイルを作業用ファイルとして使用する。 表2のプログラム中の に入れる正しい答えを,解答群の中から選べ。 ここで,表2の には,設問1の正しい答えが入っているものとする。
e,f に関する解答群
ウ PERFORM WRBILL-PROC エ RELEASE W-REC オ WRITE W-REC g に関する解答群
イ M-NO = TMP-NO ウ M-NO = TMP-NO AND TMP-MIN > 600 エ M-NO = TMP-NO OR TMP-MIN > 600 オ TMP-MIN > 600
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] | ||||||||