平成15年 秋期 基本情報技術者 午後 問07
問07 COBOL次の COBOL プログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 予約状況ファイルと料金ファイルから,パラメタで与えられた検索条件を 満たす宿泊施設の空室を検索して,宿泊料金の安い順に並べた空室情報を 返す副プログラムである。 (1) 予約状況ファイル BOOKING-FILE のレコード様式は,次のとおりである。
@ 施設コードは宿泊施設を表し,各施設には複数の部屋があるものとする。 A 予約状況は,366 個の要素からなる 1次元の表であり,プログラムを 実行する翌日から 1年間分の予約状況を表している。 B 要素の値が,0 のときは“予約なし”を示し,1 のときは“予約済”を示す。 予約状況ファイルは毎日更新され,プログラム実行時には,それまでの予約状況が 正しく反映されているものとする。 例 プログラムを実行する日が 2003 年 10 月 19 日のときは, 2003 年 10 月 20日〜 2004 年 10 月 19 日の予約状況が格納されている。 (2) 料金ファイル CHARGE-FILE は部屋タイプを主キーとする索引ファイルであり, レコード様式は次のとおりである。
@ 宿泊人数:1 部屋に泊まる人数を示す。 A 宿泊料金:部屋の1人当たりの1泊料金を示す。 宿泊人数の違いによって 4 通り用意されている。 B 予約状況ファイルに格納されている部屋タイプに該当するレコードは,必ず存在する。 (3) 検索条件 SEARCH-INFO の形式は,次のとおりである。 検索条件で与えられるデータは正しいものとする。
@ 施設コード:3けたの数字である。 “000”のときは施設の指定がないことを表す。 A 宿泊開始日:4けたの西暦年,2けたの月,2けたの日で構成されている。 プログラムを実行する翌日から1年以内の日付とする。 例 2003 年 10 月 20 日ならば“20031020”となる。 B 宿泊日数:2けたの 0 でない数字である。 宿泊開始日から連続して泊まる日数を表す。 連続して泊まる日を含めて,プログラムを実行する翌日から1年間に収まる日数とする。 例 1泊2日のときは,“01”となる。 C 宿泊人数:2 けたの 0 でない数字である。 D 1 泊の予算:1人当たりの1泊の予算であり,下限と上限を示す1組の 6けたの数字である。 下限と上限がともに“000000”のときは指定なしを表す。 例 10,000 〜 15,000 円の部屋を検索するときは, 下限として“010000”,上限として“015000”を指定する。 (4) 検索結果 SEARCH-RESULT の形式は,次のとおりである。
@ 空室情報は 100 個の要素からなる1次元の表であり,検索結果は 100 件以下とする。 検索結果が 100 件未満のとき,残りの要素は,空白で埋められている。 A 空室情報は,宿泊料金の安い順に並べる。 (5) 副プログラム GETDAYS を使用する。 GETDAYS は,与えられた日付データを,プログラムを実行する翌日からの通算日に変換する。 GETDAYS の呼び出し方法は,次のとおりである。 CALL "GETDAYS" USING 日付 通算日
〔プログラム〕 DATA DIVISION. FILE SECTION. FD BOOKING-FILE. 01 BOOKING-REC. 03 BCODE PIC 9(03). 03 BNAME PIC X(10). 03 BTYPE PIC X(02). 03 BOOKING-INFO PIC 9(01) OCCURS 366. FD CHARGE-FILE. 01 CHARGE-REC. 03 CTYPE PIC X(02). 03 ACCOMMODATION-INFO OCCURS 4. 05 GUEST-NO PIC 9(02). 05 CHARGE PIC 9(06). SD VACANCY-FILE. 01 VACANCY-REC. 03 VCODE PIC 9(03). 03 VNAME PIC X(10). 03 VCHARGE PIC 9(06). WORKING-STORAGE SECTION. 01 EOF PIC X(01). 01 BOOKING-FLAG PIC 9(01). 01 DAYS PIC 9(03). 01 MATCH PIC 9(01). 01 I PIC 9(03). 01 J PIC 9(01). LINKAGE SECTION. 01 SEARCH-INFO. 03 SCODE PIC 9(03). 03 CHECKIN-DATE PIC 9(08). 03 STAY-DAYS PIC 9(02). 03 SGUEST-NO PIC 9(02). 03 SCHARGE-RANGE. 05 LOWER-LIMIT PIC 9(06). 05 UPPER-LIMIT PIC 9(06). 01 SEARCH-RESULT. 03 SEARCH-COUNT PIC 9(03). 03 VACANCY-INFO PIC X(19) OCCURS 100. PROCEDURE DIVISION USING SEARCH-INFO SEARCH-RESULT. MAIN-PROC. SORT VACANCY-FILE INPUT PROCEDURE SEARCH-PROC OUTPUT PROCEDURE RESULT-PROC. EXIT PROGRAM. SEARCH-PROC. OPEN INPUT BOOKING-FILE CHARGE-FILE. MOVE SPACE TO EOF. READ BOOKING-FILE AT END MOVE "E" TO EOF END-READ. PERFORM UNTIL EOF = "E" IF (SCODE = ZERO OR SCODE = BCODE) THEN CALL "GETDAYS" USING CHECKIN-DATE DAYS MOVE 0 TO BOOKING-FLAG PERFORM IF BOOKING-INFO(I) = 1 THEN MOVE 1 TO BOOKING-FLAG END-IF END-PERFORM IF THEN MOVE BTYPE TO CTYPE READ CHARGE-FILE MOVE 0 TO MATCH PERFORM VARYING J FROM 1 BY 1 UNTIL J > 4 OR MATCH = 1 IF THEN MOVE BCODE TO VCODE MOVE BNAME TO VNAME MOVE CHARGE(J) TO VCHARGE RELEASE VACANCY-REC MOVE 1 TO MATCH END-IF END-PERFORM END-IF END-IF READ BOOKING-FILE AT END MOVE "E" TO EOF END-READ END-PERFORM. CL OS E BOOKING-FILE CHARGE-FILE. RESULT-PROC. INITIALIZE SEARCH-RESULT. MOVE SPACE TO EOF. RETURN VACANCY-FILE AT END MOVE "E" TO EOF END-RETURN. PERFORM UNTIL EOF = "E" COMPUTE SEARCH-COUNT = SEARCH-COUNT + 1 MOVE VACANCY-REC TO VACANCY-INFO(SEARCH-COUNT) RETURN VACANCY-FILE AT END MOVE "E" TO EOF END-RETURN END-PERFORM. 設問 プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群 ア OCCURS KEY VCHARGE イ ON ASCENDING KEY VCHARGE ウ ON DESCENDING KEY VCHARGE エ SORT KEY VCHARGE オ USING KEY VCHARGE b に関する解答群 ア VARYING I FROM 1 BY 1 UNTIL I > DAYS イ VARYING I FROM 1 BY 1 UNTIL I > DAYS OR BOOKING-FLAG = 1 ウ VARYING I FROM 1 BY 1 UNTIL I >= STAY-DAYS エ VARYING I FROM 1 BY 1 UNTIL I >= STAY-DAYS
オ VARYING I FROM DAYS BY 1
c に関する解答群 ア BOOKING-FLAG = 0 イ BOOKING-FLAG = 1 ウ BOOKING-INFO(I) = 0 エ BOOKING-INFO(I) = 1 オ SCODE = ZERO カ SCODE NOT = ZERO
d に関する解答群 ア (GUEST-NO(J) = SGUEST-NO AND
イ (GUEST-NO(J) = SGUEST-NO AND
ウ (GUEST-NO(J) = SGUEST-NO OR
エ NOT (GUEST-NO(J) NOT = SGUEST-NO AND
オ NOT (GUEST-NO(J) NOT = SGUEST-NO AND
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||