東京理科大学 infoserv[更新日]1999.11.10


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

〔プログラムの説明〕

店舗別,部門別に部門販売額を登録した販売ファイルから,部門ごとに部門販売額の 大きい順に順位を付け,販売成績ファイルを作成する。

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

 各店舗には,部門 A〜E の 5 部門がある。

 販売ファイル中に同一の店舗コードをもつレコードは,ないものとする。

 部門販売額は,9 けたを超えないものとする。

 販売ファイルのレコード数は,9,999 件以下とする。

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

 各部門の部門順位は,各店舗の同一部門の部門販売額の大きい順に 1 から付ける。

 部門販売額が同一の店舗が複数ある 場合は,同じ部門順位とする。同じ部門順位を付けた後の順位は,それまでに順位を つけた店舗数より 1 だけ大きい数とする。

(3) 部門別の部門販売額の順位を求めるため,作業用のファイルを用いる。

〔プログラム〕

 
DATA DIVISION.
FILE SECTION.
FD  HANBAI-FILE.
01  HANBAI-REC.
    02  TENPO-HAN                PIC  X(05).
    02  GAKU-HAN OCCURS 5 TIMES  PIC  9(09).
 
FD  SEISEKI-FILE.
01  SEISEKI-REC.
    02  TENPO-SEI                PIC  X(05).
    02  BUMON-SEI OCCURS 5 TIMES.
        03  BANGO-SEI            PIC  9(04).
        03  GAKU-SEI             PIC  9(09).
FD  BANGO-FILE.
01  BANGO-REC.
    02  TENPO-BAN                PIC  X(05).
    02  BUMON-BAN                PIC  9(01).
    02  BANGO-BAN                PIC  9(04).
    02  GAKU-BAN                 PIC  9(09).
SD  SORT-FILE.
01  SORT-REC.
    02  TENPO-SOR                PIC  X(05).
    02  BUMON-SOR                PIC  9(01).
    02  BANGO-SOR                PIC  9(04).
    02  GAKU-SOR                 PIC  9(09).
WORKING-STORAGE SECTION.
01  FILE-END                     PIC  9(01) VALUE ZERO.
01  LCN                          PIC  9(01).
01  X                            PIC  9(04).
01  Y                            PIC  9(04).
01  GAKU-WRK                     PIC  9(09).
PROCEDURE DIVISION.
SORT-RTN.
    SORT SORT-FILE
       ON ASCENDING KEY BUMON-SOR
          DESCENDING KEY GAKU-SOR
          INPUT  PROCEDURE IS BUNKAI-RTN
          OUTPUT PROCEDURE IS BANGO-RTN.
    SORT SORT-FILE                                            
       ON ASCENDING KEY          
          USING  BANGO-FILE
          OUTPUT PROCEDURE IS MATOME-RTN.
    STOP RUN.
BUNKAI-RTN.
    OPEN INPUT HANBAI-FILE.
    PERFORM UNTIL FILE-END = 1
       READ HANBAI-FILE AT END
          MOVE 1 TO FILE-END
       NOT AT END
          PERFORM VARYING LCN FROM 1 BY 1 UNTIL LCN > 5
             MOVE TENPO-HAN TO TENPO-SOR
             MOVE LCN TO BUMON-SOR
             MOVE GAKU-HAN (LCN) TO GAKU-SOR             
                                
          END-PERFORM
       END-READ
    END-PERFORM.
    CLOSE HANBAI-FILE.
 
BANGO-RTN.
    OPEN OUTPUT BANGO-FILE.
    MOVE ZERO TO FILE-END LCN.
    PERFORM UNTIL FILE-END = 1
       RETURN SORT-FILE AT END
          MOVE 1 TO FILE-END
       NOT AT END
          MOVE SORT-REC TO BANGO-REC
          IF LCN = BUMON-SOR THEN
             COMPUTE X = X + 1
             IF GAKU-WRK > GAKU-SOR THEN
                MOVE GAKU-SOR TO GAKU-WRK                     
                            
             END-IF
             MOVE Y TO BANGO-BAN
          ELSE
             MOVE GAKU-SOR TO GAKU-WRK
             MOVE BUMON-SOR TO LCN
             MOVE 1 TO X Y BANGO-BAN
          END-IF
          WRITE BANGO-REC
       END-RETURN
    END-PERFORM.
    CLOSE BANGO-FILE.
MATOME-RTN.
    OPEN OUTPUT SEISEKI-FILE.
    MOVE ZERO TO FILE-END.
    RETURN SORT-FILE AT END
       MOVE 1 TO FILE-END
    NOT AT END
       MOVE TENPO-SOR TO TENPO-SEI
    END-RETURN.
    PERFORM UNTIL FILE-END = 1                                
       MOVE BANGO-SOR TO BANGO-SEI (  ) 
       MOVE GAKU-SOR TO GAKU-SEI (  )
       RETURN SORT-FILE AT END
          WRITE SEISEKI-REC
          MOVE 1 TO FILE-END
       NOT AT END                                            
          IF  THEN
             WRITE SEISEKI-REC
             MOVE TENPO-SOR TO TENPO-SEI
          END-IF
       END-RETURN
    END-PERFORM.
    CLOSE SEISEKI-FILE.

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

a,d に関する解答群

 ア BANGO-BAN    イ BANGO-SOR    ウ BUMON-BAN

 エ BUMON-SOR    オ GAKU-BAN    カ GAKU-SOR

 キ TENPO-BAN    ク TENPO-SOR 

 

b に関する解答群

 ア MOVE BANGO-REC TO SORT-REC

 イ MOVE GAKU-WRK TO GAKU-SOR

 ウ READ SORT-FILE

 エ RELEASE SORT-REC

 オ RETURN SORT-FILE

 カ WRITE SORT-REC

 

c に関する解答群

 ア MOVE BUMON-SOR TO LCN    イ MOVE LCN TO BUMON-SOR

 ウ MOVE X TO BANGO-BAN     エ MOVE X TO Y

 オ MOVE Y TO BANGO-BAN     カ MOVE Y TO X

 

e に関する解答群

 ア TENPO-SEI = TENPO-BAN     イ TENPO-SEI NOT = TENPO-BAN

 ウ TENPO-SEI = TENPO-SOR     エ TENPO-SEI NOT = TENPO-SOR

 オ TENPO-SOR = TENPO-BAN     カ TENPO-SOR NOT = TENPO-BAN


東京理科大学 infoserv 戻る 次頁:問09