平成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 勤務管理ファイルのレコード様式 @ 勤務履歴 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(5) オ PIC 9(6) c に関する解答群 イ INITIALIZE ATD-HST REPLACING NUMERIC BY 9999 ウ MOVE 9999 TO ATD-HST エ MOVE ALL ZERO TO ATD-HST d に関する解答群
設問2 C社では 22 時以降の勤務を深夜手当の対象としている。勤務管理ファイルの レコードに深夜勤務時間の領域を追加し,1か月の深夜勤務時間の合計も集計するように プログラムを変更する。表1中の に入れる正しい答えを, 解答群の中から選べ。ここで,表1中の には設問1の 正しい答えが入っているものとする。
e,f に関する解答群 エ ATD-SUM オ NIGHT-TIME
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] |