![]()
平成29年 秋期 基本情報技術者 午後 問10
問10 COBOL
次の COBOL プログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラムの説明〕 ある駐車場では,自動精算システムを導入している。利用者は,入庫時に利用番号と 入庫時刻が記録された駐車券を受け取り,出庫時に駐車券を精算機に投入して駐車料金を支払う。 連続した複数日にまたがる駐車も可能である。プログラム1は入庫時に入庫時刻を精算ファイルに 記録するサブプログラムであり,プログラム2は出庫時に駐車料金を計算して出庫時刻とともに 精算ファイルに記録し,駐車料金の値を呼出し元に返すサブプログラムである。 (1) 精算ファイルは,図1に示すレコード様式の索引ファイルであり, プログラムの実行時に既に存在する。主キーは利用番号である。 ファイルの排他制御は適切に行われるものとする。
![]() 図1 精算ファイルのレコード様式
A 入庫時刻及び出庫時刻には,西暦の年,月,日と,24 時間表記の時(0 〜 23), 分(0 〜 59)が,それぞれ 4 桁,2 桁,2 桁,2 桁,2 桁で格納される。
![]() 図2 プログラム1のパラメタの様式 (3) プログラム2のパラメタの様式は,図3のとおりである。 呼出し元プログラムから利用番号と出庫時刻を受け取り,駐車料金の値を返す。
![]() 図3 プログラム2のパラメタの様式 (4) 駐車料金は,入庫時刻を基準に駐車時間を1時間単位に区切って算出する。 この単位を課金単位と呼び,1課金単位当たり 300 円を課金する。 各課金単位の開始時刻の“分”は,入庫時刻と同じ“分”とする。 各課金単位の開始時刻から1分以上が経過すると課金対象になる。 例えば,10 時 30 分に入庫して,11 時 30 分に出庫した場合, 課金単位は 1 で,駐車料金は 300 円である。10 時 30 分に入庫して, 11 時 31 分に出庫した場合,2 時間目の課金単位の開始時刻である 11 時 30 分から 1 分が経過しているので,課金単位は 2 となり,駐車料金は 600 円になる。 駐車料金が 999,999 円を超えることはない。 (5) プログラム2の中で使用している組込み関数 INTEGER-OF-DATE は, 引数に指定された日付を西暦 1601 年1月1日からの通算の日数に変換して返す。 〔プログラム1〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD ACCT-FILE. 4 Ø1 ACCT-REC. 5 Ø2 ACCT-NO PIC X(8). 6 Ø2 ACCT-IN PIC 9(12). 7 Ø2 ACCT-OUT PIC 9(12). 8 Ø2 ACCT-FEE PIC 9(6). 9 LINKAGE SECTION. 1Ø Ø1 PRM. 11 Ø2 PRM-NO PIC X(8). 12 Ø2 PRM-IN PIC 9(12). 13 PROCEDURE DIVISION USING PRM. 14 MAIN-PROC. 15 OPEN EXTEND ACCT-FILE. 16 INITIALIZE ACCT-REC. 17 MOVE PRM-NO TO ACCT-NO. 18 MOVE PRM-NO TO ACCT-IN. 19 WRITE ACCT-REC. 2Ø CLOSE ACCT-FILE. 21 EXIT PROGRAM. 〔プログラム2〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD ACCT-FILE. 4 Ø1 ACCT-REC. 5 Ø2 ACCT-NO PIC X(8). 6 Ø2 ACCT-IN. 7 Ø3 ACCT-I-DATE PIC 9(8). 8 Ø3 ACCT-I-TIME. 9 Ø4 ACCT-I-HH PIC 9(2). 1Ø Ø4 ACCT-I-MM PIC 9(2). 11 Ø2 ACCT-OUT. 12 Ø3 ACCT-O-DATE PIC 9(8). 13 Ø3 ACCT-O-TIME. 14 Ø4 ACCT-O-HH PIC 9(2). 15 Ø4 ACCT-O-MM PIC 9(2). 16 Ø2 ACCT-FEE PIC 9(6). 17 WORKING-STORAGE SECTION. 18 77 W-HRS PIC 9(4). 19 LINKAGE SECTION. 2Ø Ø1 PRM1. 21 Ø2 PRM-NO PIC X(8). 22 Ø2 PRM-OUT PIC 9(12). 23 Ø1 PRM2. 24 Ø2 PRM-FEE PIC 9(6). 25 PROCEDURE DIVISION USING PRM1 PRM2. 26 MAIN-PROC. 27 OPEN I-O ACCT-FILE. 28 MOVE PRM-NO TO ACCT-NO. 29 READ ACCT-FILE. 3Ø MOVE PRM-OUT TO ACCT-OUT. 31 PERFORM COMP-PROC. 32 a . 33 REWRITE ACCT-REC. 34 CLOSE ACCT-FILE. 35 EXIT PRCGRAM. 36 COMP-PROC. 37 COMPUTE W-HRS = 38 (FUNCTION INTEGER-OF-DATE(ACCT-O-DATE) * 24 + ACCT-O-HH) b 39 (FUNCTION INTEGER-OF-DATE(ACCT-I-DATE) * 24 + ACCT-I-HH). 4Ø IF ACCT-I-MM < ACCT-O-MM THEN 41 c 42 END-IF. 43 COMPUTE ACCT-FEE = W-HRS * 3ØØ.
解答群 イ 動的呼出し (ACCESS MODE IS DYNAMIC) ウ 乱呼出し (ACCESS MODE IS RANDOM)
a に関する解答群 ウ MOVE PRM-FEE TO ACCT-FEE エ MOVE PRM-NO TO ACCT-NO b に関する解答群 c に関する解答群 ウ SUBTRACT 1 FROM W-HRS エ SUBTRACT ACCT-I-HH FROM W-HRS
![]() d に関する解答群 ウ MOVE 1 TO W-IDX エ MOVE ACCT-I-HH TO W-IDX e,f に関する解答群 ウ W-HRS = W-IDX エ W-IDX = 24 オ W-IDX = W-CNT カ W-IDX > 24
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||