平成6年度 秋期 第二種 午後 問12

                        [更新日]2000.7.04
問12 次のCOBOLプログラムの説明及びプログラムを読んで、 設問1、2に答えよ。 [プログラムの説明] 社員別・業務別の1か月分の作業日報データを集計して、社員別の残業時間月計ファ イルを作成するプログラムである。 (1) 作業日報ファイル(NIPPO-FILE)のレコード様式は、次のとおりである。     ┌─────┬───┬─────┬────┐     │社員コード|作業日|業務コード|作業時間|     | 4けた |2けた| 3けた |2けた |     └─────┴───┴─────┴────┘ 1 一人の社員が1日の間に複数の業務を行なった場合には、行った業務の数だけレ コードを作成する。 2 作業時間は、1時間単位とする。 3 1日の定時作業時間は8時間とし、これを超えた分を残業時間とみなす。 4 1日の作業時間が8時間に満たないことはないものとする。 5 作業日報ファイルは、社員コード、作業日の昇順に整列されている。 (2) 残業時間月計ファイル(ZANGYO-FILE)のレコード様式は、次のとおりである。
    ┌─────┬────┐     |社員コード|残業時間|     | 4けた |3けた |     └─────┴────┘
(3) 処理の手順は、次のとおりである。 1 社員ごとに各作業日の作業時間数を合計し、8時間を超えた分を残業時間とし て計上する。 例 社員Xのある1日の作業は、業務Aが2時間、業務Bが5時間、業務C が3時間であったとする。この場合の残業時間は2時間となる。 2 社員ごとに1で求めた残業時間数を合計し、残業時間月計ファイルに書き出す。 なお、合計した残業時間数が0の場合でも、残業時間月計ファイルに書き出す。 [プログラム] このプログラムは、不完全である。不完全の意味については設問1を参照のこと。 (行番号) 01 DATA DIVISION. 02 FILE SECTION. 03 FD NIPPO-FILE. 04 01 NIPPO-REC PIC X(11). 05 FD ZANGYO FILE. 06 01 ZANGYO-REC PIC X(7). 07 WORKING-STORAGE SECTION. 08 01 EOF-FLAG PIC X(1) VALUE SPACE. 09 01 SAVE PIC 9(2). 10 01 GOKEI PIC 9(2). 11 01 TEIJI PIC 9(1) VALUE 8. 12 01 NIPPO-AREA. 13 03 SHAIN-CODE-N PIC X(4). 14 03 HI PIC 9(2). 15 03 GYOMU-CODE-N PIC X(3). 16 03 JIKAN PIC 9(2). 17 01 ZANGYO-AREA. 18 03 SHAIN-CODE-Z PIC X(4). 19 03 ZANGYO PIC 9(3). 20 PROCEDURE DIVISION. 21 HAJIME. 22 OPEN INPUT NIPPO-FILE OUTPUT ZANGYOU-FILE. 23 READ NIPPO-FILR INTO NIPPO-AREA AT END MOVE "E" TO EOF-FLAG 24 END-READ. 25 PERFORM UNTIL EOF-FLAG ="E" 26 MOVE SHAIN-CODE-N TO SHAIN-CODE-Z 27 PERFORM UNTIL EOF-FLAG = "E" OR SHAIN-CODE-N NOT = SHAIN-CODE-Z 28 MOVE HI TO SAVE 29 PERFORM UNTIL EOF-FLAG ="E" 30 OR SHAIN-CODE-N NOT = SHAIN-CODE-Z OR HI NOT = SAVE 31 COMPUTE GOKEI = GOKEI + JIKAN 32 READ NIPPO-FILE INTO NIPPO-AREA AT END MOVE "E" TO EOF-FLAG 33 END-READ 34 END-PERFORM 35 COMPUTE ZANGYO = ZANGYO + GOKEI - TEIJI 36 END-PERFORM 37 WRITE ZANGYO-REC FROM ZANGYO-AREA 38 END-PERFORM. 39 OWARI. 40 CLOSE NIPPO-FILE ZANGYO-FILE. 41 STOP RUN. 設問1 このプログラムには、表1の二つの文が欠けていることが分かった。表1の [ ]に入れる正しい答えを、解答群の中から選べ。
表1 挿入すべき文      ┌─────┬────────────────┐      │挿入位置 │     文          │      ├─────┼────────────────┤      │[ a ]│MOVE 0 TO ZANGYO│      ├─────┼────────────────┤      │[ b ]│MOVE 0 TO GOKEI │      └─────┴────────────────┘
a, b に関する解答群 ア 22行目と23行目の間 イ 25行目と26行目の間 ウ 27行目と28行目の間 エ 30行目と31行目の間 オ 33行目と34行目の間 カ 35行目と36行目の間 キ 37行目と38行目の間 設問2 プログラム中の二つのREAD文(23行目及び32行目)を表2のように修正 することによって、変数EOF-FLAGを使わずに処理を行うことが可能にな る。表2の[ ]に入れる正しい答えを、解答群の中から選べ。 表2 EOF-FLAGを使用しないための修正
┌───┬───────────────────────────────── │行番号│           プログラム ├───┼───┬───────────────────────────── │   │修正前│READ NIPPO-FILE INTO NIPPO-AREA │23 │   │ AT END MOVE "E" TO EOF-FLAG │及び ├───┼───────────────────────────── │32 │修正後│READ NIPPO-FILE INTO NIPPO-AREA │   │   │ AT END MOVE HIGH-VALUE TO SHAIN-CODE-N ├───┼───┼───────────────────────────── │   │修正前│PERFORM UNTIL EOF-FLAG = "E" │25 ├───┼───────────────────────────── │   │修正後│PERFORM UNTIL [ c ] ├───┼───┼───────────────────────────── │   │修正前│PERFORM UNTIL EOF-FLAG = "E" │   │   │ OR SHAIN-CODE-N NOT = SHAIN-CODE-Z │27 ├───┼───────────────────────────── │   │修正後│PERFORM UNTIL [ d ] ├───┼───┼───────────────────────────── │   │修正前│PERFORM UNTIL EOF-FLAG = "E" OR │29 │   │ SHAIN-CODE-N NOT = SHAIN-CODE-Z OR HI NOT = SAVE │〜30├───┼───────────────────────────── │   │修正後│PERFORM UNTIL [ e ] └───┴───┴─────────────────────────────
c〜e に関する解答群 ア SHAIN-CODE-N = SHAIN-CODE-Z イ SHAIN-CODE-N NOT = SHAIN-CODE-Z ウ SHAIN-CODE-N < SHAIN-CODE-Z エ SHAIN-CODE-N = HIGH-VALUE オ SHAIN-CODE-N NOT = HIGH-VALUE カ SHAIN-CODE-N = HIGH-VALUE OR HI NOT = SAVE キ SHAIN-CODE-N = HIGH VALUE AND HI = SAVE ク SHAIN-CODE-N = SHAIN-CODE-Z OR HI NOT = SAVE ケ SHAIN-CODE-N NOT = SHAIN-CODE-Z OR HI NOT = SAVE コ SHAIN-CODE-N < SHAIN-CODE-Z OR HI NOT = SAVE
戻る 次頁:問13