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

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

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

〔プログラムの説明〕

 売上伝票ファイルに記録された各支店( A 〜 E )の月単位の売上情報を支店ごとに集計して, 売上マスタファイルに格納する月次処理のプログラムである。

 なお,集計した当該月の売上データは画面にも表示する。

(1) 売上伝票ファイルは,図1に示すレコード様式の順ファイルである。

 伝票番号  
  6けた
 売上日  
  8けた
 支店コード  
  2けた
 売上金額  
  6けた

  図1 売上伝票ファイルのレコード様式

 @ 売上伝票ファイルには,ある月の1か月分の売上データを格納する。

 A 伝票番号には,6けたの数字を格納する。

 B 売上日には,西暦年を4けた,月, 日をそれぞれ2けたの数字で格納する。

  なお,一つのファイルに含まれるレコードの西暦年と月は,それぞれすべて等しい。

 C 支店コードは,A 〜 E の支店に対して昇順に割り当てた1〜5の数字である。

(2) 売上マスタファイルは,図2に示すレコード様式の,売上年月を主キーとする索引ファイルである。

 売上年月  
  6けた
         売上金額  売上合計金額  
  9けた
 A支店  
  8けた
 B支店  
  8けた
 C支店  
  8けた
 D支店  
  8けた
 E支店  
  8けた

    図2 売上マスタファイルのレコード様式

 @ 売上年月には,西暦年が4けた,月が2けたの数字を格納する。

 A 売上金額には,当該月の各支店の売上金額を格納する。

 B 売上合計金額には,当該月の全支店の売上金額の合計を格納する。

 C 各支店の1か月分の売上金額は,8けたを超えないものとする。

(3) 集計結果の表示例を図3に示す。

 C-BRANCH    32,100,000        
 A-BRANCH    23,000,000
 D-BRANCH    18,700,000
 B-BRANCH    10,200,000
 E-BRANCH     9,800,000
 ----------------------
 TOTAL       93,800,000

    図3 集計結果の表示例

 @ 当該月の支店別売上金額を降順に整列して表示する。

 A TOTALには,売上合計金額を表示する。

〔プログラム〕

(行番号) 
 1  DATA DIVISION.
 2  FILE SECTION. 
 3  SD  SORT-FILE. 
 4  01  SORT-REC.
 5      02  SORT-BR            PIC 9(2).
 6      02  SORT-AMOUNT        PIC 9(8).
 7  FD  SALES-FILE.
 8  01  SALES-REC.
 9      02  SALES-NO           PIC 9(6).
10      02  SALES-DATE.
11          03  SALES-YYYYMM   PIC 9(6).
12          03  SALES-DD       PIC 9(2).
13      02  SALES-BR           PIC 9(2).
14      02  SALES-AMOUNT       PIC 9(6). 
15  FD  MAST-FILE.
16  01  MAST-REC.
17      02  MAST-KEY.
18          03  KEY-YYYYMM     PIC 9(6).
19      02                     PIC X(49).
20  WORKING-STORAGE SECTION.
21  01  W-MAST.
22      02  MAST-YYYYMM        PIC 9(6).
23      02  MAST-BRANCH.
24          03  MAST-AMOUNT    PIC 9(8) OCCURS 5. 
25          03  MAST-TOTAL     PIC 9(9).
26  77  CNT                    PIC 9(2).
27  77  AMOUNT                 PIC ZZZ,ZZZ,ZZ9.
28  77  READ-FLAG              PIC X(1)  VALUE SPACE.
29      88  DATA-EOF           VALUE "E".
30  77  SORT-FLAG              PIC X(1)  VALUE SPACE.
31      88  SORT-EOF           VALUE "E".
32  01  BRANCH                 PIC X(55) VALUE
33         "A-BRANCH   B-BRANCH   C-BRANCH   D-BRANCH   E-BRANCH".
34  01  HEADER REDEFINES BRANCH.
35      02  BR-NAME            PIC X(11) OCCURS 5.
36  PROCEDURE DIVISION.
37  MAIN-PROC.
38      INITIALIZE W-MAST.
39      OPEN INPUT SALES-FILE I-O MAST-FILE.
40      READ SALES-FILE 
41           AT END     SET DATA-EOF TO TRUE
42           NOT AT END 
43                      MOVE SALES-AMOUNT TO MAST-AMOUNT(SALES-BR)
44      END-READ.
45      PERFORM UNTIL DATA-EOF
46         READ SALES-FILE
47              AT END     SET DATA-EOF TO TRUE
48              NOT AT END ADD SALES-AMOUNT TO MAST-AMOUNT(SALES-BR)
49         END-READ
50      END-PERFORM.
51      PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > 5
52          
53      END-PERFORM.
54      WRITE MAST-REC FROM W-MAST 
55         INVALID KEY    DISPLAY "** ERROR OCCURRED **"
56         NOT INVALID KEY PERFORM PRT-PROC
57      END-WRITE.
58      CLOSE SALES-FILE MAST-FILE.
59      STOP RUN.
60  PRT-PROC.
61      SORT SORT-FILE 
62                     INPUT  PROCEDURE IS IN-PROC 
63                     OUTPUT PROCEDURE IS OUT-PROC. 
64  IN-PROC.
65      PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > 5 
66         MOVE CNT TO SORT-BR
67         
68         RELEASE SORT-REC
69      END-PERFORM.
70  OUT-PROC.
71      PERFORM UNTIL SORT-EOF 
72         RETURN SORT-FILE
73            AT END     SET SORT-EOF TO TRUE
74            NOT AT END MOVE SORT-AMOUNT TO AMOUNT 
75                       DISPLAY BR-NAME(SORT-BR) AMOUNT 
76         END-RETURN
77      END-PERFORM.
78      DISPLAY "----------------------".
79      MOVE MAST-TOTAL TO AMOUNT.
80      DISPLAY "TOTAL      " AMOUNT.

設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。

a, b, d に関する解答群

ア ADD MAST-AMOUNT(CNT) TO MAST-TOTAL

イ ADD SALES-AMOUNT TO MAST-TOTAL

ウ ADD SALES-AMOUNT TO SORT-AMOUNT

エ MOVE MAST-AMOUNT(CNT) TO SORT-AMOUNT

オ MOVE SALES-AMOUNT TO SORT-AMOUNT

カ MOVE SALES-BR TO SORT-BR

キ MOVE SALES-YYYYMM TO MAST-YYYYMM

c に関する解答群 ア ASCENDING KEY SORT-AMOUNT

イ ASCENDING KEY SORT-BR

ウ DESCENDING KEY SORT-AMOUNT

エ DESCENDING KEY SORT-BR

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

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

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

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

基本情報技術者試験


設問2 各支店の当該月の売上金額に加えて対前年同月比を表示するように プログラムを変更する。このとき,前年同月の売上金額がゼロであるか又は 情報の取得に失敗した場合は,“( - % )”と表示する。 集計結果の表示例を,図4に示す。次の表中の に入れる正しい答えを, 解答群の中から選べ。

 なお,対前年同月比は,999% を超えないものとする。

C-BRANCH    32,100,000 (112%)          
A-BRANCH    23,000,000 ( 96%)
D-BRANCH    18,700,000 (100%)
B-BRANCH    10,200,000 ( 98%)
E-BRANCH     9,800,000 ( 92%)
-----------------------------
TOTAL       93,800,000 (102%)

    図4 対前年同月比を追加した集計結果の表示例

   表 プログラムの変更内容

   処理           変更内容 
行番号 27 と 28 の間
に追加
77  THIS-TOTAL      PIC 9(9). 
77  RATIO           PIC ZZ9.
行番号 71 〜 80 を
変更
    
    COMPUTE KEY-YYYYMM = MAST-YYYYMM - 100.
    READ MAST-FILE INVALID KEY     INITIALIZE W-MAST
                   NOT INVALID KEY MOVE MAST-REC TO W-MAST.
    PERFORM UNTIL SORT-EOF
       RETURN SORT-FILE
       AT END SET SORT-EOF TO TRUE 
       NOT AT END
          MOVE SORT-AMOUNT TO AMOUNT
          IF MAST-AMOUNT(SORT-BR) = ZERO THEN
             DISPLAY BR-NAME(SORT-BR) AMOUNT " ( - %)"
          ELSE
             
             DISPLAY BR-NAME(SORT-BR) AMOUNT " (" RATIO "%)"
          END-IF
       END-RETURN
    END-PERFORM.
    DISPLAY "-----------------------------".
    MOVE THIS-TOTAL TO AMOUNT.
    IF MAST-TOTAL = ZERO THEN
       DISPLAY "TOTAL      " AMOUNT " ( - %)"
    ELSE
       
       DISPLAY "TOTAL      " AMOUNT " (" RATIO "%)"
    END-IF.

e に関する解答群 ア MOVE MAST-AMOUNT(CNT) TO THIS-TOTAL

イ MOVE MAST-REC TO W-MAST

ウ MOVE MAST-TOTAL TO THIS-TOTAL

エ MOVE W-MAST TO MAST-REC

i, g に関する解答群 ア COMPUTE RATIO = MAST-AMOUNT(SORT-BR) * 100 / SORT-AMOUNT

イ COMPUTE RATIO = MAST-TOTAL * 100 / THIS-TOTAL

ウ COMPUTE RATIO = SORT-AMOUNT * 100 / MAST-AMOUNT(SORT-BR)

エ COMPUTE RATIO = SORT-AMOUNT * 100 / MAST-TOTAL

オ COMPUTE RATIO = THIS-TOTAL * 100 / MAST-TOTAL

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

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

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


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