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

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

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

〔プログラムの説明〕

ある会社の1か月間の売上ファイルを入力して, 合計売上金額の上位 10 製品を印字するプログラムである。

(1) 売上ファイルのレコード様式は,次のとおりである。

  支店コード 4 けた   製品コード 4 けた   日付
8 けた
  単価
6 けた
  個数
6 けた

(2) 印字用のファイルの様式は,次のとおりである。

  順位
2 けた
  空白
1 けた
  製品コード
4 けた
  空白
1 けた
  合計売上金額
8 けた

@ 順位は,2けたの数字からなり,合計売上金額が等しい製品の順位は同じとする。

A 同順位のときは,製品コードの小さい順に印字する。

B 製品別の売上金額は,単価×個数で求めることができ, その合計(合計売上金額)は8けた以内とする。

C 印字例のように,11 件目以降に 10 件目と同じ順位が続くときには, それらをすべて印字する。

01 0100 22000000
01 0110 22000000
01 0200 22000000
04 0140 20000000
05 0300 18000000
06 0250 17500000
07 0160 16000000
07 0320 16000000
09 0210 12000000
09 0280 12000000
09 0400 12000000
図 印字例

〔プログラム〕

DATA DIVISION.
FILE SECTION.
FD  URIAGE-FILE.
01  URIAGE-REC.
    03  U-MCODE    PIC       X(4).
    03  U-SCODE    PIC       X(4).
    03  U-DATE     PIC       X(8).
    03  U-TANKA    PIC       9(6).
    03  U-KOSU     PIC       9(6).
FD  PRINT-FILE.
01  PRINT-REC.
    03  P-NUM      PIC       9(2).
    03             PIC       X(1).
    03  P-CODE     PIC       X(4).
    03             PIC       X(1).
    03  P-KINGAKU  PIC       9(8).
FD  SHUKEI-FILE.
01  SHUKEI-REC.
    03  S-CODE     PIC       X(4).
    03  S-KINGAKU  PIC       9(8).
SD  WORK-FILE.
01  WORK-REC.
    03  W-CODE     PIC       X(4).
    03  W-KINGAKU  PIC       9(8).
WORKING-STORAGE SECTION.
01  WK-AREA.
    03  WK-CODE    PIC       X(4).
    03  WK-KINGAKU PIC       9(8).
01  WK-NUM1        PIC       9(2) VALUE ZERO.
01  WK-NUM2        PIC       9(2) VALUE ZERO.
01  FLG-1          PIC       X(1) VALUE SPACE.
01  FLG-2          PIC       X(1) VALUE SPACE.
01  FLG-3          PIC       X(1) VALUE SPACE.
PROCEDURE DIVISION.
MAIN-SHORI.
    SORT WORK-FILE
       ON ASCENDING KEY W-CODE
       INPUT PROCEDURE NYURYOKU-SHORI
       GIVING SHUKEI-FILE.
    SORT WORK-FILE
       ON DESCENDING KEY W-KINGAKU
       ON ASCENDING KEY W-CODE
       INPUT PROCEDURE SHUKEI-SHORI
       OUTPUT PROCEDURE PRINT-SHORI.
    STOP RUN.
NYURYOKU-SHORI.
    OPEN INPUT URIAGE-FILE.
    PERFORM UNTIL FLG-1 = "E"
       READ URIAGE-FILE AT END
          MOVE "E" TO FLG-1
       NOT AT END
          MOVE U-SCODE TO W-CODE
          
          RELEASE WORK-REC
       END-READ
    END-PERFORM.
    CLOSE URIAGE-FILE.
SHUKEI-SHORI.
    OPEN INPUT SHUKEI-FILE.
    MOVE SPACE TO WK-CODE.
    PERFORM UNTIL FLG-2 = "E"
       READ SHUKEI-FILE AT END
          MOVE "E" TO FLG-2
          IF WK-CODE NOT = SPACE THEN
             RELEASE WORK-REC FROM WK-AREA
          END-IF
       NOT AT END
          IF S-CODE = WK-CODE THEN
             COMPUTE WK-KINGAKU = WK-KINGAKU + S-KINGAKU
          ELSE
             IF WK-CODE NOT = SPACE THEN
                RELEASE WORK-REC FROM WK-AREA
             END-IF
             
          END-IF
       END-READ
    END-PERFORM.
    CLOSE SHUKEI-FILE.
PRINT-SHORI.
    OPEN OUTPUT PRINT-FILE.
    MOVE SPACE TO PRINT-REC.
    MOVE ZERO TO P-KINGAKU.
    PERFORM UNTIL FLG-3 = "E" OR WK-NUM1 > 10
       RETURN WORK-FILE AT END
          MOVE "E" TO FLG-3
       NOT AT END
          COMPUTE WK-NUM2 = WK-NUM2 + 1
          IF  THEN
             
          END-IF
          IF WK-NUM1 <= 10 THEN
             MOVE WK-NUM1 TO P-NUM
             MOVE W-CODE TO P-CODE
             MOVE W-KINGAKU TO P-KINGAKU
             WRITE PRINT-REC
          END-IF
       END-RETURN
    END-PERFORM.
    CLOSE PRINT-FILE.

基本情報技術者試験


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

a に関する解答群

ア COMPUTE W-KINGAKU = U-TANKA * U-KOSU

イ COMPUTE W-KINGAKU = W-KINGAKU + U-TANKA

ウ COMPUTE W-KINGAKU = W-KINGAKU + U-TANKA * U-KOSU

エ MOVE U-KOSU TO W-KINGAKU

オ MOVE U-TANKA TO W-KINGAKU

b に関する解答群

ア MOVE SHUKEI-REC TO WK-AREA

イ MOVE SHUKEI-REC TO WORK-REC

ウ MOVE WK-AREA TO WORK-REC

エ MOVE WORK-REC TO SHUKEI-REC

オ MOVE WORK-REC TO WK-AREA

c に関する解答群

ア W-KINGAKU = P-KINGAKU

イ W-KINGAKU NOT = P-KINGAKU

ウ WK-NUM2 <= 10

エ WK-NUM2 = 10

オ WK-NUM2 > 10

d に関する解答群

ア COMPUTE WK-NUM1 = WK-NUM1 + WK-NUM2

イ COMPUTE WK-NUM2 = WK-NUM2 + WK-NUM1

ウ MOVE WK-NUM1 TO WK-NUM2

エ MOVE WK-NUM2 TO WK-NUM1

オ MOVE ZERO TO WK-NUM2

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

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

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

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

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