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

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

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

(プログラムの説明〕

 C社では,全従業員の出社時刻と退社時刻を入口のゲートで自動的に記録し, 出退勤記録ファイルに格納している。このプログラムは,1か月分の出退勤記録ファイルを 読み込み,出社した従業員の勤務管理ファイルに書き込むものである。

(1) 出退勤記録ファイルは,図1に示すレコード様式の順ファイルで,ある月の1か月分の 出退勤記録が格納されている。


図1 出退勤記録ファイルのレコード様式
@ レコードは日付,時刻,出退勤フラグの昇順に格納されている。

A 日付には,年,月, 日が,それぞれ 4 桁,2 桁,2 桁の西暦で格納されている。

B 時刻には,出社又は退社の時刻の時,分が,それぞれ 2 桁の 24 時間表記で格納されている。

C 出退勤フラグには,出社時は0が,退社時は1が格納されている。

D 従業員番号には,従業員ごとに一意な 6 桁の番号が格納されている。

E 同一従業員の出社時の記録と退社時の記録は,必ず対になっている。同じ日付のレコードは1組だけである。

F 出社時刻は 6 時から 22 時までである。退社時刻は同じ日付の 24 時までである。

(2) 勤務管理ファイルは,図2に示すレコード様式の従業員番号をキーとする索引ファイルである。

図2 勤務管理ファイルのレコード様式

@ 勤務履歴 1 〜 31 には,当該月の 1 〜 31 日の出社時刻及び退社時刻が格納される。 出社しなかった日と暦にない日の出社時刻及び退社時刻には,9999 が格納される。

A 出社時刻及び退社時刻には,時,分が,それぞれ 2 桁の 24 時間表記で格納される。

B 勤務時間には,1か月の勤務時間の合計が,3 桁の時間と 2 桁の分で格納される。 毎日の出社時刻から退社時刻までの時間が1日の勤務時間である。 途中の休み時間も勤務時間に含める。

〔プログラム〕

(行番号)

 1  DATA DIVISION.
 2  FILE SECTION.
 3  FD LOG-FILE.
 4  Ø1 LOG-REC.
 5     Ø2 LOG-DATE    PIC 9(8).
 6     Ø2 LOG-TIME    PIC 9(4).
 7     Ø2 LOG-FLAG    PIC 9(1).
 8        88 LOG-IN   VALUE Ø.
 9        88 LOG-OUT  VALUE 1.
1Ø     Ø2 LOG-ENUM    PIC X(6).
11  FD ATD-FILE.
12  Ø1 ATD-REC.
13     Ø2 ATD-ENUM       PIC X(6).
14     Ø2 ATD-HST.
15        Ø3 ATD-ELM     OCCURS 31.
16           Ø4 ATD-IN   PIC 9(4).
17           Ø4 ATD-OUT  PIC 9(4).
18     Ø2 ATD-SUM        PIC 9(5).
19  WORKING-STORAGE SECTION.
2Ø  77 KEY-FLAG        PIC 9(1).
21     88 ATD-VALID    VALUE Ø.
22     88 ATD-INVALID  VALUE 1.
23  77 EOF-FLAG    PIC 9(1) VALUE Ø.
24     88 LOG-EOF  VALUE 1.
25  Ø1 W-DATE.
26     Ø2 FILLER  .
27     Ø2 IDX     PIC 9(2).
28  Ø1 W-TIME-FROM.
29     Ø2 HF  PIC 9(2).
3Ø     Ø2 MF  PIC 9(2).
31  Ø1 W-TIME-TO.
32     Ø2 HT  PIC 9(2).
33     Ø2 MT  PIC 9(2).
34  Ø1 W-TIME-ACCUM.
35     Ø2 HA  .
36     Ø2 MA  PIC 9(2).
37  77 W-MINUTE  PIC 9(5).
38  PROCEDURE DIVISION.
39  MAIN-PROC.
4Ø      OPEN INPUT LOG-FILE
41           I-O   ATD-FILE.
42      PERFORM READ-PROC.
43      CLOSE ATD-FILE LOG-FILE.
44      STOP RUN.
45  READ-PROC.
46      PERFOR UNTIL LOG-EOF
47         READ LOG-FILE
48            AT END
49               SET LOG-EOF TO TRUE
5Ø            NOT AT END
51               PERFORM UPDATE-PROC
52         END-READ
53      END-PERFORM.
54  UPDATE-PROC.
55      MOVE LOG-ENUM TO ATD-ENUM.
56      SET ATD-VALID TO TRUE.
57      READ ATD-FILE
58         INVALID KEY
59            SET ATD-INVALID TO TRUE
6Ø            MOVE LOG-ENUM TO ATD-ENUM
61            
62            MOVE ZERO TO ATD-SUM
63      END-READ.
64      MOVE LOG-DATE TO W-DATE.
65      EVALUATE TRUE
66         WHEN LOG-IN
67            MOVE LOG-TIME    TO ATD―IN(IDX)
68         WHEN LOG-OUT
69            MOVE LOG-TIME    TO ATD-OUT(IDX) W-TIME-TO
7Ø            MOVE ATD-IN(IDX) TO              W-TIME-FROM
71            MOVE ATD-SUM     TO              W-TIME-ACCUM
72            PERFORM CALC-PROC
73            MOVE  TO ATD-SUM
74      END-EVALUATE.
75      IF ATD-VALID THEN
76         REWRITE ATD-REC
77      ELSE
78         WRITE ATD-REC
79      END-IF.
8Ø  CALC-PROC.
81      COMPUTE W-MINUTE = (HT - HF + HA) * 6Ø + MT - MF + MA.
82      DIVIDE W-MINUTE BY 6Ø GIVING HA REMAINDER MA.

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

a,b に関する解答群

ア PIC 9(2)       イ PIC 9(3)       ウ PIC 9(4)

エ PIC 9(5)       オ PIC 9(6)

c に関する解答群

ア INITIALIZE ATD-HST

イ INITIALIZE ATD-HST REPLACING NUMERIC BY 9999

ウ MOVE 9999 TO ATD-HST

エ MOVE ALL ZERO TO ATD-HST

d に関する解答群

ア ATD-OUT(IDX)       イ HA       ウ W-MINUTE       エ W-TIME-ACCUM
解答 a ←クリックすると正解が表示されます

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

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

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

基本情報技術者試験


設問2 C社では 22 時以降の勤務を深夜手当の対象としている。勤務管理ファイルの レコードに深夜勤務時間の領域を追加し,1か月の深夜勤務時間の合計も集計するように プログラムを変更する。表1中の に入れる正しい答えを, 解答群の中から選べ。ここで,表1中の には設問1の 正しい答えが入っているものとする。

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

e,f に関する解答群

ア ATD-IN(IDX)       イ ATD-NIGHTSUM       ウ ATD-OUT(IDX)

エ ATD-SUM       オ NIGHT-TIME

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

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


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