[更新日]1998.05.15


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

 

〔プログラムの説明〕

ある地域の野球チームと選手を管理するファイルとして,チームマスタ ファイルと選手マスタファイルがある。トランザクションファイルの更新 フラグに従って,選手の登録又は削除を行う。

(1) チームマスタファイル TEAM-M のレコード様式は,次のとおりである。

チームコード

4 けた

選手数

3 けた

チーム情報

50 けた

 チームコードをキーとする索引ファイルである。

 選手数には,チームに所属する選手の人数が記録されている。

(2) 選手マスタファイル PLAYER-M のレコード様式は,次のとおりである。

選手コード

4 けた

チームコード

4 けた

選手情報

50 けた

 選手コードをキーとする索引ファイルである。

 一人の選手が,複数のチームに所属することはない。

(3) トランザクションファイル TRAN-F のレコード様式は,次のとおりで ある。

更新

フラグ

1 けた

選手データ

選手コード

4 けた

チームコード

4 けた

選手情報

50 けた

 更新フラグが“I”のとき,選手マスタファイルへ選手を登録する。 このとき,選手マスタファイルレコードには,トランザクションレコードの 選手データの内容を追加し,チームマスタファイルに対しては,当該チームの 選手数を 1 増やす。

 更新フラグが“D”のとき,選手マスタファイルから選手を削除する。 チームマスタファイルに対しては,当該チームの選手数を 1 減らす。

(4) チームマスタファイル,選手マスタファイルのデータはすべて チェック済みで,整合がとれている。

 


〔プログラム〕
(行番号)
01 DATA DIVISION.
02 FILE SECTION.
03 FD  TEAM-M.
04 01  TEAM-R.
05     03  T-TEAM            PIC X(4).
06     03  T-NUM             PIC 9(3).
07     03  T-INFO            PIC X(50).
08 FD  PLAYER-M.
09 01  PLAYER-R.
10     03  P-CODE            PIC X(4).
11     03  P-TEAM            PIC X(4).
12     03  P-INFO            PIC X(50).
13 FD  TRAN-F.
14 01  TRAN-R.
15     03  TR-FLAG           PIC X(1).
16     03  TR-PLAYER-DATA.
17        05  TR-CODE        PIC X(4).
18        05  TR-TEAM        PIC X(4).
19        05  TR-INFO        PIC X(50). 
20 WORKING-STORAGE SECTION.
21 01  END-SW                PIC X(3) VALUE "OFF".
22 01  P-SW                  PIC X(3).
23 01  T-SW                  PIC X(3).
24 PROCEDURE DIVISION.
25 HAJIME.
26     OPEN INPUT TRAN-F I-O TEAM-M PLAYER-M.
27     READ TRAN-F AT END MOVE "ON" TO END-SW.
28     PERFORM UNTIL END-SW = "ON"
29        PERFORM P-READ-RTN
30        PERFORM T-READ-RTN
31        EVALUATE P-SW ALSO TR-FLAG ALSO T-SW
32           WHEN "OFF" ALSO "I" ALSO "ON"
33              PERFORM I-RTN
34           WHEN "ON" ALSO "D" ALSO "ON"
35              PERFORM D-RTN
36           WHEN OTHER 
37              DISPLAY "OTHER-ERROR:" TRAN-R
38        END-EVALUATE
39        READ TRAN-F AT END MOVE "ON" TO END-SW
40        END-READ
41     END-PERFORM.
42     CLOSE TRAN-F TEAM-M PLAYER-M.
43     STOP RUN.
 
44 P-READ-RTN.
45     MOVE TR-CODE TO P-CODE.
46     READ PLAYER-M INVALID MOVE "OFF" TO P-SW
47        NOT INVALID MOVE "ON" TO P-SW.
48 T-READ-RTN.
49     MOVE TR-TEAM TO T-TEAM.
50     READ TEAM-M INVALID DISPLAY "T-RD-ERROR:"
51                        MOVE "OFF" TO T-SW
52        NOT INVALID MOVE "ON" TO T-SW. 
53 I-RTN.
54     MOVE  TR-PLAYER-DATA  TO  PLAYER-R.
55     WRITE  PLAYER-R INVALID DISPLAY "I-ERROR:" TRAN-R
56        NOT INVALID PERFORM NUM-RTN.
57 D-RTN.
58     IF TR-TEAM = P-TEAM
59        MOVE TR-CODE TO P-CODE
60        DELETE  PLAYER-M INVALID DISPLAY "D-ERROR:" TRAN-R
61           NOT INVALID PERFORM NUM-RTN
62        END-DELETE
63     ELSE
64        DISPLAY "TR-TEAM-ERROR:" TRAN-R.
65 NUM-RTN.
66     IF TR-FLAG = "I" THEN 
67        COMPUTE T-NUM = T-NUM + 1
68     ELSE
69        COMPUTE T-NUM = T-NUM - 1.
70     REWRITE TEAM-R INVALID DISPLAY "NUM-ERROR:" TRAN-R.

設問1 それぞれのファイルのデータが図に示すとおりであった。このとき, DISPLAY 文によって表示されるメッセージとして正しい答えを,解答群の中 から選べ。

     図 各ファイルのデータ

解答群

ア I-ERROR:I0002A001 …       イ I-ERROR:I0002A001 …

  D-ERROR:D0010B002 …       OTHER-ERROR:D0010B002 …

  D-ERROR:D0011B003 …       OTHER-ERROR:D0011B003 …

  D-ERROR:D0012B001 …       D-ERROR:D0012B001 …

ウ OTHER-ERROR:I0002A001 …    エ OTHER-ERROR:I0002A001 …

  OTHER-ERROR:D0010B002 …    T-RD-ERROR:

  OTHER-ERROR:D0011B003 …    OTHER-ERROR:D0010B002 …

  OTHER-ERROR:D0012B001 …    TR-TEAM-ERROR:D0011B003 …

  OTHER-ERROR:D0012B001 …

オ OTHER-ERROR:I0002A001 …    カ OTHER-ERROR:I0002A001 …

  T-RD-ERROR:D0010B002 …    T-RD-ERROR:D0011B003 …

  TR-TEAM-ERROR:D0011B003 …    TR-TEAM-ERROR:

  OTHER-ERROR:D0012B001 …    OTHER-ERROR:D0011B003 …

  OTHER-ERROR:D0012B001 …

 

設問2 次に示す機能を追加するために,プログラムを変更する。 変更内容を示す表中の に入れる正しい答えを,解答群の中から選べ。

 

更新フラグが“U”のとき,選手の所属チームを変更できるようにする。 すなわち,選手マスタファイルの所属チームをトランザクションレコードの チームコードに変更する。このとき選手情報は変更しない。チームマスタ ファイルに対しては,旧所属チームの選手数を 1 減らし,新所属チームの 選手数を 1 増やす。

           表 機能追加のための変更内容

処理

35 行目の
後に追加
  WHEN "ON" ALSO "U" ALSO "ON"
  PERFORM U-RTN
64 行目の
後に追加
U-RTN.
  MOVE TO TR-FLAG.
  PERFORM NUM-RTN.
  MOVE TO T-TEAM.
  READ TEAM-M
     DISPLAY "U-ERROR:" TRAN-R
     MOVE "D" TO TR-FLAG
    PERFORM NUM-RTN
    MOVE TR-TEAM TO P-TEAM
    REWRITE PLAYER-R
        INVALID DISPLAY "U-ERROR:" TRAN-R
    END-REWRITE.

 

解答群

ア AT END     イ "I"       ウ INVALID

エ NOT AT END   オ NOT INVALID    カ P-TEAM

キ T-TEAM     ク TR-CODE     ケ TR-TEAM

コ "U"

 


戻る 次頁:問13