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

                        [更新日]1994.11.01
問8 次のCOBOLプログラムの説明及びプログラムを読んで、設問に答えよ。 [プログラムの説明] 商品の売上げが記録された売上ファイルを読み込んで、商品コード別に総売上高、 平均割引率、最大割引率、最小割引率を求め、一覧表を印字する。 (1) 売上ファイルのレコード様式は、次のとおりである。

   ┌──────┬─────┬───┬────┬──────┐    │ 商品コード│ 定価  │数量 │売上高 │その他の情報│    │ 13けた │ 6けた │3けた│9けた │ 49けた │    └──────┴─────┴───┴────┴──────┘

(2) 売上ファイルの売上高、定価及び数量の間に次の式が成立するものとする。 売上高 ≦ 定価 × 数量 (3) 売上ファイルは、商品コードで昇順に整列されている。 (4) 売上ファイルには、同一の商品コードのレコードが複数件ありうる。 (5) 売上ファイルの定価、数量及び売上高は、0より大きい整数とする。 (6) 印字様式は、図のとおりである。 図 印字様式 (7) 総売上高は、売上ファイルの商品コードごとの売上高の合計とする。 (8) 平均割引率は、売上ファイルの同一商品コードごとに次の計算式で求める。       (同一商品コードの定価×数量の合計−総売上高)×100 平均割引率=─────────────────────────        同一商品コードの定価×数量の合計 (9) 売上ごとの売上高の割引率は、次の計算式で求める。              (定価×数量−売上高)×100 売上ごとの売上高の割引率=─────────────              定価×数量 (10) (9)で求めた割引率で最大のものを最大割引率、最小のものを最小割引率とする。 (11) 平均割引率、最大割引率、最小割引率は、小数点第2位以下を切捨てて小数 第1位までもとめる。 (12) 見出しの印字は最初の1回だけとする。 (13) 商品コード別の総売上高は、12けた以内とする。 [プログラム] DATA DIVISION. FILE SECTION. FD SALES-FILE. 01 SALES-REC. 02 SA-CODE PIC X(13). 02 SA-PRICE PIC 9(06). 02 SA-AMOUNT PIC 9(03). 02 SA-SELL PIC 9(09). 02 PIC X(49). FD REPORT-FILE. 01 REPORT-REC. 02 RE-CODE PIC X(13). 02 PIC X(01). 02 RE-SELL PIC ZZZ,ZZZ,ZZZ,ZZ9. 02 PIC X(10). 02 RE-AVE PIC ZZ9.9. 02 PIC X(11). 02 RE-MAX PIC ZZ9.9. 02 PIC X(11). 02 RE-MIN PIC ZZ9.9. WORKING-STORAGE SECTION. 01 FILE-END-FLG PIC 9(01) VALUE ZERO. 01 WK-CODE PIC X(13). 01 WK-MAX PIC 9(03)V9. 01 WK-MIN PIC 9(03)V9. 01 WK-RATE PIC 9(03)V9. 01 WK-PR-VO PIC X(12). 01 WK-SELL PIC X(12). 01 RE-HEAD. 02 PIC X(45) VALUE "ショウヒンコード ソウウリアゲ ダカ ヘイキンワリビキリツ(%)". 02 PIC X(31) VALUE "サイダイワリビキリツ(%) サイショウワリビキリツ(%)". PROCEDURE DIVISION. MAIN-RTN. OPEN INPUT SALES-FILE OUTPUT REPORT-FILE. WRITE REPORT-REC FROM RE-HEAD AFTER PAGE. READ SALES-FILE AT END MOVE 1 TO FILE-END-FLG NOT AT END [ a ] END-READ. PERFORM UNTIL FILE-END-FLG = 1 READ SALES-FILE AT END MOVE 1 TO FILE-END-FLG PERFORM REPORT-RTN NOT AT END IF [ b ] THEN PERFORM REPORT-RTN PERFORM SET-RTN ELSE PERFORM COMP-RTN IF WK-MAX < WK-RATE THEN MOVE WK-RATE TO WK-MAX END-IF IF [ c ] THEN MOVE WK-RATE TO WK-MIN END-IF END-IF END-READ END-PERFORM. CLOSE SALES-FILE REPORT-FILE. STOP RUN. SET-RTN. [ d ]. MOVE ZERO TO WK-SELL WK-PR-VO. PERFORM COMP-RTN. MOVE WK-RATE TO WK-MAX WK-MIN. COMP-RTN. COMPUTE WK-RATE = ( SA-PRICE * SA-AMOUNT - SA-SELL ) * 100 / ( SA-PRICE * SA-AMOUNT ). COMPUTE WK-PR-VO = WK-PR-VO + SA-PRICE * SA-AMOUNT. COMPUTE WK-SELL = WK-SELL + SA-SELL. REPOT-RTN. MOVE SPACE TO REPORT-REC. MOVE WK-CODE TO RE-CODE. MOVE WK-SELL TO RE-SELL. [ e ]. MOVE WK-MAX TO RE-MAX. MOVE WK-MIN TO RE-MIN. WRITE REPORT-REC AFTER 1. 設問 プログラム中の[ ]に入れる正しい答えを、解答群の中から選べ。 a に関する解答群 ア PERFORM MAIN-RTN イ PERFORM SET-RTN ウ PERFORM REPORT-RTN エ PERFORM COMP-RTN オ MOVE SA-CODE TO WK-CODE カ MOVE ZERO TO WK-SELL WK-PR-VO b に関する解答群 ア RE-CODE = WK-CODE イ RE-CODE NOT = WK-CODE ウ SA-CODE = WK-CODE エ SA-CODE NOT = WK-CODE オ SA-CODE = RE-CODE カ SA-CODE NOT = RE-CODE c に関する解答群 ア WK-CODE < SA-CODE イ WK-CODE > SA-CODE ウ WK-SELL < WK-PR-VO エ WK-SELL > WK-PR-VO オ WK-MIN < WK-RATE カ WK-MIN > WK-RATE d に関する解答群 ア MOVE WK-CODE TO RE-CODE イ MOVE WK-CODE TO SA-CODE ウ MOVE RE-CODE TO SA-CODE エ MOVE RE-CODE TO WK-CODE オ MOVE SA-CODE TO WK-CODE カ MOVE SA-CODE TO RE-CODE e に関する解答群 ア MOVE WK-SELL TO RE-AVE イ MOVE WK-PR-VO TO RE-AVE ウ COMPUTE RE-AVE = ( WK-SELL - WK-PR-VO ) * 100 / WK-SELL エ COMPUTE RE-AVE = ( WK-PR-VO - WK-SELL ) * 100 / WK-PR-VO オ COMPUTE RE-AVE = WK-PR-VO / WK-SELL * 100 カ COMPUTE RE-AVE = WK-SELL / WK-PR-VO * 100
戻る 次頁:問9