問12 次の COBOL プログラムの説明及びプログラムを読んで,設問に答えよ。
〔プログラムの説明〕
システムにログインした利用者番号,日時などを 1 か月分記録したログファイルを 読んで,利用者番号別にログイン回数を集計し,利用回数ファイルに出力する。
(1) ログファイルのレコード様式は,次のとおりである。
利用者番号
10 けた
ログイン日
8 けた
ログイン時刻
6 けた
その他
26 けた
このファイルは,利用者番号, ログイン日及びログイン時刻の昇順に整列されている。
ログイン日は,4 けたの西暦年,2 けたの月, 2 けたの日で構成されている。
例:2000 年 10 月 15 日の場合は,20001015 である。
ログイン時刻は,2 けたの時(24 時制), 2 けたの分,2 けたの秒で構成されている。
例:午後 3 時 50 分 20 秒の場合は,155020 である。
(2) 利用回数ファイルのレコード様式は,次のとおりである。 利用回数は,3 けたを超えないものとする。
利用回数
3 けた
〔プログラム〕
(行番号)
01 DATA DIVISION. 02 FILE SECTION. 03 FD LOG-FILE. 04 01 LOG-REC. 05 02 LOG-USER-NO PIC X(10). 06 02 LOG-DAY PIC 9(08). 07 02 LOG-TIME PIC 9(06). 08 02 PIC X(26). 09 FD USER-FILE. 10 01 USER-REC. 11 02 USER-NO PIC X(10). 12 02 USER-COUNT PIC 9(03). 13 WORKING-STORAGE SECTION. 14 01 LOG-FILE-FLG PIC X(01) VALUE SPACE. 15 01 WORK-COUNT PIC 9(03) VALUE ZERO. 16 PROCEDURE DIVISION. 17 INIT-RTN. 18 OPEN INPUT LOG-FILE OUTPUT USER-FILE. 19 READ LOG-FILE AT END 20 MOVE "E" TO LOG-FILE-FLG 21 NOT AT END 22 MOVE LOG-USER-NO TO USER-NO 23 END-READ. 24 PERFORM MAIN-RTN UNTIL LOG-FILE-FLG = "E". 25 CLOSE LOG-FILE USER-FILE. 26 STOP RUN. 27 MAIN-RTN. 28 IF LOG-USER-NO = USER-NO THEN 29 COMPUTE WORK-COUNT = WORK-COUNT + 1 30 ELSE 31 MOVE WORK-COUNT TO USER-COUNT 32 WRITE USER-REC 33 MOVE 1 TO WORK-COUNT 34 MOVE LOG-USER-NO TO USER-NO 35 END-IF. 36 READ LOG-FILE AT END 37 MOVE "E" TO LOG-FILE-FLG 38 MOVE WORK-COUNT TO USER-COUNT 39 WRITE USER-REC 40 END-READ.
同一利用者が 1 か月に何日ログインしたかを集計するため,同一利用者が 1 日に 複数回ログインしても利用日数を 1 とみなす方法で,利用した日数も集計することになった。 このため,プログラム仕様のうち,利用回数ファイルのレコード様式を次のように変更する。
利用日数
2 けた
表 機能追加のための修正内容
処理
文
行番号 31 の直後に追加
MOVE LOG-DAY TO WORK-DAY MOVE ZERO TO WORK-DAY-COUNT
行番号 38 の直後に追加
a,c 〜 e に関する解答群
ア COMPUTE USER-DAY-COUNT = WORK-DAY-COUNT + 1
イ COMPUTE WORK-DAY-COUNT = WORK-DAY-COUNT + 1
ウ MOVE LOG-DAY TO WORK-DAY
エ MOVE LOG-USER-NO TO USER-NO
オ MOVE WORK-DAY-COUNT TO USER-DAY-COUNT
カ MOVE WORK-COUNT TO USER-COUNT
キ MOVE ZERO TO WORK-DAY
ク MOVE ZERO TO WORK-DAY-COUNT
b に関する解答群
ア LOG-DAY NOT = WORK-DAY
イ LOG-DAY = WORK-DAY
ウ LOG-DAY < WORK-DAY
エ LOG-USER-NO NOT = USER-NO
オ LOG-USER-NO < USER-NO
カ LOG-USER-NO > USER-NO