基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成29年 秋期 基本情報技術者 午後 問10
問10   COBOL

 次の COBOL プログラムの説明及びプログラムを読んで,設問1〜3に答えよ。

 

〔プログラムの説明〕

 ある駐車場では,自動精算システムを導入している。利用者は,入庫時に利用番号と 入庫時刻が記録された駐車券を受け取り,出庫時に駐車券を精算機に投入して駐車料金を支払う。 連続した複数日にまたがる駐車も可能である。プログラム1は入庫時に入庫時刻を精算ファイルに 記録するサブプログラムであり,プログラム2は出庫時に駐車料金を計算して出庫時刻とともに 精算ファイルに記録し,駐車料金の値を呼出し元に返すサブプログラムである。

 

(1) 精算ファイルは,図1に示すレコード様式の索引ファイルであり, プログラムの実行時に既に存在する。主キーは利用番号である。 ファイルの排他制御は適切に行われるものとする。

 

図1 精算ファイルのレコード様式

 

@ 利用番号には,入庫時に発券される駐車券ごとに1ずつ増える 8 桁の数字が格納される。

A 入庫時刻及び出庫時刻には,西暦の年,月,日と,24 時間表記の時(0 〜 23), 分(0 〜 59)が,それぞれ 4 桁,2 桁,2 桁,2 桁,2 桁で格納される。

(2) プログラム1のパラメタの様式は,図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     .
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) 
39         (FUNCTION INTEGER-OF-DATE(ACCT-I-DATE) * 24 + ACCT-I-HH).
4Ø      IF ACCT-I-MM < ACCT-O-MM THEN
41            
42      END-IF.
43      COMPUTE ACCT-FEE = W-HRS * 3ØØ.

 

設問1   プログラム1における精算ファイルの呼出し法として正しい答えを,解答群の中から選べ。 ここで,括弧内は,呼出し法に対応する環境部のファイル管理記述項における ACCESS MODE 句の書き方である。

 

解答群 ア 順呼出し    (ACCESS MODE IS SEQUENTIAL)

イ 動的呼出し   (ACCESS MODE IS DYNAMIC)

ウ 乱呼出し    (ACCESS MODE IS RANDOM)

 

解答 ←クリックすると正解が表示されます

基本情報技術者試験


設問2   プログラム2中の に入れる正しい答えを,解答群の中から選べ。

 

a に関する解答群 ア ADD PRM-FEE TO ACCT-FEE     イ MOVE ACCT-FEE TO PRM-FEE

ウ MOVE PRM-FEE TO ACCT-FEE     エ MOVE PRM-NO TO ACCT-NO

 

b に関する解答群 ア *      イ +      ウ -      エ /

 

c に関する解答群 ア ADD 1 TO W-HRS         イ ADD ACCT-O-HH TO W-HRS

ウ SUBTRACT 1 FROM W-HRS     エ SUBTRACT ACCT-I-HH FROM W-HRS

 

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

基本情報技術者試験


設問3   夜間時間帯の料金割引を実施するために,プログラム2を変更する。 夜間時間帯は 20 時 00 分から翌朝 5 時 59 分までとし,各課金単位の開始時刻が 夜間時間帯に含まれるときは,1課金単位当たりの課金を 100 円とする。 表1中の に入れる正しい答えを,解答群の中から選べ。

 

表1 プログラム2の変更内容

 

d に関する解答群 ア COMPUTE W-IDX = ACCT-I-HH + 1     イ COMPUTE W-IDX = ACCT-I-HH - 1

ウ MOVE 1 TO W-IDX            エ MOVE ACCT-I-HH TO W-IDX

 

e,f に関する解答群 ア W-CNT = W-HRS     イ W-CNT > W-HRS

ウ W-HRS = W-IDX     エ W-IDX = 24

オ W-IDX = W-CNT     カ W-IDX > 24

 

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]