基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成21年 春期 基本情報技術者 午後 問10
問10   COBOL

 次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕

 売上ファイルを読み込み,販売店コード別に売上集計を行い, 売上分析表を印刷する副プログラムである。

(1) 売上ファイル SALES-F は順ファイルである。

(2) 売上ファイルのレコード様式を図1に示す。

 販売店コード  
 10 けた  
 商品コード  
 10 けた  
 顧客コード  
 10 けた  
 売上金額  
 10 けた  

 図1 売上ファイル SALES-F のレコード様式

 @ 売上金額はゼロより大きいものとする。

 A すべてのレコードの売上金額を合計しても 10 けたを超えないものとする。

 B 売上ファイルのデータに誤りはないものとする。

(3) 販売店コードで集計して印刷した売上分析表の例を図2に示す。


     図2 売上分析表の例

 @ 売上分析表の見出しは印刷済とする。

 A 売上分析表は,集計された売上金額の多い順に整列し,印刷する。

 B 累積比率は,当該販売店から上位順位店すべての売上金額の累積を売上金額の 総合計で割った比率(%)の小数第2位を切り捨てたものである。

 C 文字“*”の並びは,この累積比率の整数部分の値 m を m 個の“*”で示したものである。

〔プログラム〕
(行番号)

  1  DATA DIVISION.
  2  FILE SECTION.
  3  FD  SALES-F.
  4  01  SALES-R.
  5      05  S-SHOP-CD           PIC X(10).
  6      05  S-PRODUCT-CD        PIC X(10).
  7      05  S-CUSTOMER-CD       PIC X(10).
  8      05  S-SALES             PIC 9(10).
  9  FD  TEMP-F.
 10  01  TEMP-R.
 11      05  TEMP-CD             PIC X(10).
 12      05  FILLER              PIC X(20).
 13      05  TEMP-SALES          PIC 9(10).
 14  FD  PRINT-F.
 15  01  PRINT-R.
 16      05  P-CD               PIC X(10).
 17      05  FILLER             PIC X.
 18      05  P-SALES            PIC Z,ZZZ,ZZZ,ZZ9.
 19      05  FILLER             PIC X(5).
 20      05  P-RATIO            PIC ZZ9.9.
 21      05  FILLER             PIC X(2).
 22      05  P-ASTER            PIC X(100).
 23  SD  SORT-F.
 24  01  SORT-R.
 25      05  SORT-CD            PIC X(10).
 26      05  FILLER             PIC X(20).
 27      05  SORT-SALES         PIC 9(10).
 28  WORKING-STORAGE SECTION.
 29  01   EOF-SW                 PIC 9.
 30  01   GROSS-SUM              PIC 9(10).
 31  01   INTERIM-SUM            PIC 9(10).
 32  01   W-SORT-CD              PIC X(10).
 33  01   W-RATIO                PIC 999.
 34  PROCEDURE DIVISION.
 35  MAIN-CTL.
 36      SORT SORT-F  
 37           INPUT  PROCEDURE   SORT-1-INPUT
 38           GIVING TEMP-F.
 39 *
 40      SORT SORT-F 
 41           INPUT  PROCEDURE   SORT-2-INPUT
 42           OUTPUT PROCEDURE   SORT-2-OUTPUT.
 43  EXIT PROGRAM.
 44 *
 45  SORT-1-INPUT.
 46      OPEN INPUT SALES-F.
 47      MOVE 0 TO EOF-SW.
 48      PERFORM UNTIL EOF-SW = 1
 49         READ SALES-F AT END MOVE 1 TO EOF-SW
 50              NOT AT END
 51                  MOVE SALES-R TO SORT-R
 52                  RELEASE SORT-R
 53         END-READ
 54      END-PERFORM.
 55      CLOSE SALES-F.
 56 *
 57  SORT-2-INPUT. 
 58      OPEN INPUT TEMP-F.
 59      MOVE 0 TO GROSS-SUM.
 60      MOVE 0 TO EOF-SW.
 61      PERFORM UNTIL EOF-SW = 1
 62         READ TEMP-F AT END MOVE 1 TO EOF-SW
 63              NOT AT END
 64                  IF GROSS-SUM = 0 OR
 65                     W-SORT-CD NOT = TEMP-CD THEN
 66                     IF GROSS-SUM NOT = 0 THEN
 67                        RELEASE SORT-R
 68                     END-IF
 69                     MOVE TEMP-CD  TO W-SORT-CD
 70                                      SORT-CD
 71                     
 72                  ELSE
 73                     
 74                  END-IF
 75                  
 76         END-READ
 77      END-PERFORM.
 78      IF GROSS-SUM NOT = 0 THEN
 79         RELEASE SORT-R
 80      END-IF.
 81      CLOSE TEMP-F.
 82 *
 83  SORT-2-OUTPUT.
 84      OPEN OUTPUT PRINT-F.
 85      MOVE 0 TO INTERIM-SUM.
 86      MOVE 0 TO EOF-SW.
 87      PERFORM UNTIL EOF-SW = 1 
 88         RETURN SORT-F AT END MOVE 1 TO EOF-SW
 89                NOT AT END
 90                    ADD SORT-SALES TO INTERIM-SUM
 91                    PERFORM DETAIL-PRINT-PROC
 92         END-RETURN
 93      END-PERFORM.
 94      PERFORM FOOTER-PRINT-PROC.
 95      CLOSE PRINT-F.
 96 *
 97  DETAIL-PRINT-PROC.
 98      MOVE SPACE TO PRINT-R.
 99      MOVE SORT-CD    TO P-CD.
100      MOVE SORT-SALES TO P-SALES.
101      COMPUTE P-RATIO W-RATIO = INTERIM-SUM * 100 / GROSS-SUM.
102      IF W-RATIO > 0 THEN
103         MOVE ALL "*" TO P-ASTER(1:W-RATIO)
104      END-IF.
105      WRITE PRINT-R AFTER 1.
106  FOOTER-PRINT-PROC.
107      MOVE SPACE TO PRINT-R.
108      MOVE "TOTAL"   TO P-CD.
109      MOVE GROSS-SUM TO P-SALES.
110      WRITE PRINT-R AFTER 1.
設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a, b に関する解答群

ア ASCENDING KEY SORT-CD

イ ASCENDING KEY SORT-SALES

ウ DESCENDING KEY SORT-SALES

エ DESCENDING KEY TEMP-CD

c 〜 e に関する解答群 ア ADD TEMP-SALES TO GROSS-SUM

イ ADD TEMP-SALES TO INTERIM-SUM

ウ ADD TEMP-SALES T0 SORT-SALES

エ MOVE TEMP-SALES T0 GROSS-SUM

オ MOVE TEMP-SALES T0 INTERIM-SUM

カ MOVE TEMP-SALES T0 SORT-SALES

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

基本情報技術者試験


設問2 この副プログラムを,商品コード,顧客コードでの集計にも使えるように変更する。 パラメタの値が,1のときは販売店コード,2のときは商品コード,3のときは顧客コードに よる集計となるようにする。表中の に入れる正しい答えを, 解答群の中から選べ。

        表 プログラムの変更内容
処置変更内容
行番号8と9の間
に追加
01  SALES-REC-R. 
    05 .
    05 FILLER               PIC 9(10).
行番号 34 を変更
LINKAGE SECTION.
01  SUM-CD PIC 9.
PROCEDURE DIVISION USING SUM-CD.
に追加
    MOVE S-CD(SUM-CD) TO SORT-CD

f に関する解答群

ア S-CD   PIC X(10)

イ S-CD   PIC X(10) OCCURS 3

ウ S-CD   PIC X(10) OCCURS 3 INDEXED BY SUM-CD

エ S-CD   PIC X(20)

オ S-CD   PIC X(30)

g に関する解答群

ア 行番号 50 と 51 の間

イ 行番号 51 と 52 の間

ウ 行番号 66 と 67 の間

エ 行番号 78 と 79 の間

解答 f ←クリックすると正解が表示されます

解答 g ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]