[更新日]1998.05.15
問8 次の COBOL プログラムの説明及びプログラムを読んで,設問に答えよ。
〔プログラムの説明〕
品目コード,国コード別に輸入金額が格納された統計ファイルがある。 この統計ファイルから次の項目を集計し,集計ファイルを作成する。
・大分類別中分類別国別の輸入金額
・大分類別中分類別の輸入金額
・大分類別国別の輸入金額
・大分類別の輸入金額
(1) 統計ファイル及び集計ファイルのレコード様式は,次のとおりである。
品目コード
国コード
輸入金額
大分類
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