[更新日]1998.05.15


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

 

〔プログラムの説明〕

品目コード,国コード別に輸入金額が格納された統計ファイルがある。 この統計ファイルから次の項目を集計し,集計ファイルを作成する。

・大分類別中分類別国別の輸入金額

・大分類別中分類別の輸入金額

・大分類別国別の輸入金額

・大分類別の輸入金額

(1) 統計ファイル及び集計ファイルのレコード様式は,次のとおりである。

品目コード

国コード

輸入金額

大分類

2 けた

中分類

2 けた

小分類

2 けた

 

3 けた

 

15 けた

(2) 統計ファイルには,1 件以上のレコードがあるものとする。

(3) 品目コードの大分類は,01 〜 50 とする。品目コードの中分類は, 00 〜 99 とする。ただし,品目コードの中分類 00 は,集計ファイルで用いる。

(4) 国コードは,001 〜 300 とする。ただし,国コード 300 は,大分類別 及び大分類別中分類別の輸入金額の合計とする。

(5) 大分類別に集計した集計ファイルのレコードでは,品目コードの中分類 を 00 ,小分類を 00000 とする。大分類別中分類別に集計した集計ファイルの レコードでは,品目コードの小分類を 00000 とする。

例:統計ファイルの大分類が 01 で,中分類が 02 のとき,大分類別中分 類別の集計に使用する品目コードは,010200000 となる。

(6) 輸入金額の合計は,15 けたを超えないものとする。

(7) 大分類別国別及び大分類別の集計には,プログラム内のテーブルを用いる。


〔プログラム〕
DATA DIVISION.
FILE SECTION.
FD  TOKEI-FILE.
01  TOKEI-REC                   PIC  X(27).
FD  SHUKEI-FILE.
01  SHUKEI-REC                  PIC  X(27).
SD  SORT-FILE.
01  SORT-REC.
    02  S-CHU.
        03  S-DAI               PIC  9(02).
        03  S-H-CHU             PIC  9(02).
    02  S-SHO                   PIC  9(05).
    02  S-KUNI                  PIC  9(03).
    02  S-GAKU                  PIC  9(15).
WORKING-STORAGE SECTION.
01  FILE-FLG                    PIC  X(03) VALUE SPACE.
01  GAKU-TOTAL                  PIC  9(15).
01  SHUKEI-TBL.
    02  OCCURS 50 TIMES.
        03  GAKU-TBL OCCURS 300 PIC  9(15) VALUE ZERO.
01  SHUKEI-WORK.
    02  W-CHU.
        03  W-DAI               PIC  9(02).
        03  W-H-CHU             PIC  9(02).
    02  W-SHO                   PIC  9(05) VALUE ZERO.
    02  W-KUNI                  PIC  9(03).
    02  W-GAKU                  PIC  9(15).
PROCEDURE DIVISION.
MAIN-RTN.
    SORT SORT-FILE 
       ON ASCENDING KEY 
          USING TOKEI-FILE
          OUTPUT PROCEDURE IS OUTPUT-RTN.
    STOP RUN.
OUTPUT-RTN.
    OPEN OUTPUT SHUKEI-FILE.
    RETURN SORT-FILE.
    MOVE S-CHU  TO W-CHU.
    MOVE S-KUNI TO W-KUNI.
    MOVE S-GAKU TO W-GAKU.
    MOVE ZERO   TO GAKU-TOTAL.
 
    PERFORM UNTIL FILE-FLG = "END"
       RETURN SORT-FILE AT END
          PERFORM OUTPUT-KEI-RTN
          MOVE "END" TO FILE-FLG
       NOT AT END
          IF   THEN
             IF   THEN
                COMPUTE W-GAKU = W-GAKU + S-GAKU
             ELSE
                PERFORM OUTPUT-CHU-RTN
                MOVE S-KUNI TO W-KUNI
                MOVE S-GAKU TO W-GAKU
             END-IF
          ELSE
                PERFORM OUTPUT-KEI-RTN
                MOVE S-CHU  TO W-CHU
                MOVE S-KUNI TO W-KUNI
                MOVE S-GAKU TO W-GAKU
                MOVE ZERO   TO GAKU-TOTAL
          END-IF
       END-RETURN
    END-PERFORM.
    PERFORM OUTPUT-DAI-RTN.
    CLOSE SHUKEI-FILE.
OUTPUT-CHU-RTN. 
    .
    COMPUTE GAKU-TBL ( W-DAI W-KUNI ) =
            GAKU-TBL ( W-DAI W-KUNI ) + W-GAKU.
    WRITE SHUKEI-REC FROM SHUKEI-WORK.
OUTPUT-KEI-RTN.
    PERFORM OUTPUT-CHU-RTN.
    MOVE GAKU-TOTAL TO W-GAKU.
    MOVE 300 TO W-KUNI.
    COMPUTE GAKU-TBL ( W-DAI W-KUNI ) =
            GAKU-TBL ( W-DAI W-KUNI ) + W-GAKU.
    WRITE SHUKEI-REC FROM SHUKEI-WORK.
OUTPUT-DAI-RTN.
    MOVE ZERO TO W-CHU.
    PERFORM VARYING W-DAI FROM 1 BY 1 UNTIL W-DAI > 50
       PERFORM VARYING W-KUNI FROM 1 BY 1 UNTIL W-KUNI > 300
          IF GAKU-TBL ( W-DAI W-KUNI ) > 0 THEN
             
             WRITE SHUKEI-REC FROM SHUKEI-WORK
          END-IF
       END-PERFORM
    END-PERFORM.

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

 

a に関する解答群

ア S-CHU    イ S-CHU S-KUNI

ウ S-DAI    エ S-DAI S-KUNI

オ S-KUNI    カ S-KUNI S-CHU

キ S-KUNI S-DAI

 

b,c に関する解答群

ア W-CHU = S-CHU  イ W-CHU NOT = S-CHU

ウ W-DAI = S-DAI  エ W-DAI NOT = S-DAI

オ W-KUNI = S-KUNI  カ W-KUNI NOT = S-KUNI

 

d に関する解答群

ア COMPUTE GAKU-TOTAL = GAKU-TOTAL + W-GAKU

イ COMPUTE W-GAKU = W-GAKU + GAKU-TOTAL

ウ MOVE GAKU-TOTAL TO W-GAKU

エ MOVE W-GAKU TO GAKU-TOTAL

オ MOVE ZERO TO GAKU-TOTAL

カ MOVE ZERO TO W-GAKU

 

e に関する解答群

ア MOVE GAKU-TBL ( W-CHU W-KUNI ) TO GAKU-TOTAL

イ MOVE GAKU-TBL ( W-CHU W-KUNI ) TO W-GAKU

ウ MOVE GAKU-TBL ( W-DAI W-KUNI ) TO GAKU-TOTAL

エ MOVE GAKU-TBL ( W-DAI W-KUNI ) TO W-GAKU

オ MOVE GAKU-TBL ( W-KUNI W-CHU ) TO GAKU-TOTAL

カ MOVE GAKU-TBL ( W-KUNI W-CHU ) TO W-GAKU

キ MOVE GAKU-TBL ( W-KUNI W-DAI ) TO GAKU-TOTAL

ク MOVE GAKU-TBL ( W-KUNI W-DAI ) TO W-GAKU


戻る 次頁:問09