平成8年度 秋期 第二種 午後 問8
[更新日]1996.11.19
問8 次のCOBOLプログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 交通費等の現金支給のための経費支給ファイルがある。この経費支給ファイルから, 社員別に現金支給額に応じた各金種の必要数を印字する。 (1)経費支給ファイルのレコード様式は,次のとおりである。 ┌─────┬─────┬─────┬─────────────┐ │ 社員番号 │部門コード│現金支給額│ その他の情報 │ │ X(12) │ X(2) │ 9(8) │ X(78) │ └─────┴─────┴─────┴─────────────┘ (2)経費支給ファイルは,部門コード,社員番号の昇頑に整列されている。 (3)経費支給ファイルの現金支給額は,0より大きい整数とする。 (4)経費支給ファイルには,1件以上のデータがある。 (5)印字様式は,次のとおりである。
��1, 各金種の支給枚数を社員ごとに印字する。部門別の合計及び総計も印字する。 ��2, 同じ部門コードが続く場合は,最初の社員だけ部門コードを印字する。 ��3, 見出しの印字は,先頭に1回だけとする。 ��4, 各金種の総枚数は,4けた以内とする。 〔プログラム〕 DATA DIVISION. FILE SECTION. FD KFIHI-FILE. 01 KEIHI-REC. 02 KEIHI-BANGOU PIC X(l2). 02 KEIHI-BUMON PIC X(02). 02 KEIHI-GAKU PIC 9(08). 02 PIC X(78). FD KINSHU-FILE. 01 KINSEU-REC WORKING-STORAGE SECTION. 01 END-FILE PIC X(03) VALUE SPACE. 01 CON PIC 9(02). 01 HYON PIC 9(01). 01 WORK-BUMON PIC X(02). 01 GAKU PIC 9(08) 01 KIN1. 02 KIN2 OCCURS3. 03 KIN OCCURS 9 PIC 9(04). 01 TBL. 02 TBL1 PIC X(45) VALUE "100000500001000005000010000050000100000500001”. 02 REDEFIES TBL1. 03 TBL-GAKU OCCURS 9 PIC 9(05). 01 PRINT-M. 02 PIC X(22) VALUE "ブモンコード シャインバンゴウ". 02 PM-GAKU OCCURS 9 01 PRINT-D. 02 PD-BUMON PIC X(10). 02 PD−BANGOU PIC X(l2). 02 PD−KINSHU OCCURS9 PIC ZZ,ZZZ. PROCEDURE DIVISION. MAIN-RTN. OPEN INPUT KEIHI-FILE OUTPUT KINSHU-FILE INITIALIZE KINI PRINT-D. PERFORM VARYING CON FROM 1BY 1 UNTIL CON > 9 MOVE TBL-GAKU(CON) TO PM-GAKU (CON) END-PERFORM. WRITE KINSHU-REC FROM PRINT-M AFTER PAGE. READ KEIHI-FILE AT END MOVE "END" TO END-FILE NOT AT END MOVE KEIHI-BUMON TO WORK-BUMON MOVE "1ST " TO PD-BUMON END-READ. PERFORM UNTIL END-FILE="EUD" IF KEIHI-BUMON NOT=WORK-BUMON THEN 〔 a 〕 PERFORM PRINT-RTN MOVE KEIHI-BUMON TO WORK-BUMON MOVE "1st " TO PD-BUMON END-IF 〔 b 〕 MOVE I TO HYOU PERFORM PRINT-RTN READ KEIHI-FILE AT END MOVE "END" TO END FILE PERFORM PRINT-RTN VARYING HYOU FROM 2 BY 1 UNTIL HYOU > 3 END-READ END-PERFORM. CLOSE KEIHI-FILE KINSHU-FILE STOP RUN. KINSHU-RTN MOVE KEIHI-GAKU TO GAKU. PERFORM VARYING CON FROM 1 BY 1 UNTIL CON > 9 COMPUTE KIN(l CON) = GAKU / TBL-GAKU(CON) COMPUTE GAKU = GAKU - KIN(1 CON) * TBL-GAKU(CON) 〔 c 〕 END-PERFORM. PRINT-RTN. PERFORM VARYING CON FROM 1 BY 1 UNTIL CON > 9 MOVE KIN ( HYOU CON ) TO PD-KINSHU (CON) END-PERFORM 〔 d 〕 WHEN 1 MOVE KEIHI-BANGOU TO PD-BANGOU IF PD-BUMON="1ST " THEN MOVE WORK-BUMON TO PD-BUMON ELSE MOVE SPACE TO PD-BUMON WHEN 2 MOVE SPACE TO PD-BANGOU MOVE "ブモンケイ" TO PD-BUMON PERFORM VARYING CON FROM 1 BY 1 UNTIL CON > 9 COMPUTE KIN(3 CON)=KIN(3 CON) + KIN(2 CON) END-PERFORM 〔 e 〕 WHEN OTHER MOVE "ソウケイ" TO PD=BUMON END-EVALUATE WRITE KINSHU-REC FROM PRINT-D AFTER 2. 設問 プログラム中の〔 〕に入れる正しい答えを、解答群の中から選ベ。 aに関する解答群
答
エ
ア MOVE 1 TO CON イ MOVE 1 TO HYOU ウ MOVE 2 TO CON エ MOVE 2 TO HYOU オ MOVE 3 TO CON カ MOVE 3 TO HYOU bに関する解答群
答
ア
ア PERFORM KINSHU-RTN イ PERFORM KINSHU-RTN THRU PRINT-RTN ウ PERFORM KINSHU-RTN VARYING HYOU FROM 1 BY 1 UNTIL HYOU > 2 エ PERFORM KINSHU-RTN VARYING HYOU FROM 1 BY 1 UNTIL HYOU > 3 オ PERFORM MAIN-RTN カ PERFORM PRINT-RTN cに関する解答群
答
イ
ア COMPUTE KIN(l CON) = (1 CON) + KIN (2 CON) イ COMPUTE KIN(2 CON) = (2 CON) + KIN (1 CON) ウ COMPUTE KIN(3 CON) = (3 CON) + KIN (1 CON) エ MOVE KIN (1 CON) TO (2 CON) オ MOVE KIN (1 CON) TO (3 CON) カ MOVE KIN (2 CON) TO (3 CON) dに関する解答群
答
ウ
ア EVALUTE CON イ EVALUTE GAKU ウ EVALUTE HYOU エ EVALUTE TBL-GAKU(CON) オ EVALUTE TBL-GAKU(HYOU) カ EVALUTE WORK-BUMON eに関する解答群
答
ウ
ア INITIALIZE KIN1 イ INITIALIZE KIN2 (1) ウ INITIALIZE KIN2 (2) エ INITIALIZE KIN2 (3) オ INITIALIZE PRINT-D カ INITIALIZE WORK-BUMON