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

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

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

〔プログラムの説明〕

 更新指示に基づき,電話帳ファイルのレコードを追加,削除するプログラムである。

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

     氏名キー      電話番号
11 けた
  氏名   
20 けた
  重複番号   
1けた

@ 氏名キーをキーとする索引ファイルである。

A 重複番号の初期値は1とし,同じ氏名の人が登録されるたびに1ずつ増える。 同じ氏名の人は9人まで登録できるものとする。

例:

氏名 重複番号 電話番号
スズキタロウ 1 06012345678
スズキタロウ 2 08087654321

(2) 更新指示は,32 けたであり,次のレコード様式で入力される。

  指示   
1けた
  氏名   
20 けた
  電話番号   
11 けた

@ 指示には,追加する場合“ I ”,削除する場合“ D ”, プログラムを終了する場合“ Q ”が入力される。 “ I ”又は“ D ”のとき,氏名及び電話番号が省略されることはなく,各項目は左詰めで, 残ったけたには空白が入力される。

“ Q ”のとき,後ろ31けたには空白が詰められる。

A 指示が“ I ”のとき,電話帳ファイルに同じ氏名の人が登録されていない場合は, 重複番号を1として電話帳ファイルに登録する。 登録されている場合は,最後の重複番号に1を加えた数を,追加する人の重複番号とする。

B 指示が“ D ”のとき,電話帳ファイルから氏名と電話番号が一致するレコードを検索し, 削除する。 同じ氏名の人がほかに登録されている場合は,重複番号が欠番にならないよう, 後ろの人の重複番号を1ずつ繰り上げる。

C 指示が“ Q ”のとき,プログラムを終了する。

D 入力されるデータに誤りはなく,追加・削除の処理でエラーが発生した場合は, エラーメッセージを表示し,プログラムを終了させる。

〔プログラム〕

DATA DIVISION.
FILE SECTION.
FD  DENWA-F.
01  DENWA-R.
    03  D-KEY.
        05  D-SHIMEI PIC X(20).
        05  D-BANGO  PIC 9.
    03  D-TEL PIC X(11).
WORKING-STORAGE SECTION.
01  END-SW1 PIC X(3).
01  END-SW2 PIC X(3).
01  W-BANGO PIC 9(2).
01  W-DATA.
    03  W-SHIJI  PIC X.
    03  W-SHIMEI PIC X(20).
    03  W-TEL    PIC X(11).
PROCEDURE DIVISION.
SHORI.
    OPEN I-O DENWA-F.
    MOVE SPACE TO END-SW1.
    PERFORM UNTIL END-SW1 = "END"
      DISPLAY "INPUT SHIJI:I/D SHIMEI(20) TEL(11) OR Q"
      ACCEPT W-DATA
      MOVE SPACE TO END-SW2
      EVALUATE W-SHIJI WHEN "I" PERFORM  TSUIKA
                       WHEN "D" PERFORM  SAKUJO
                       WHEN "Q" MOVE "END" TO END-SW1
      END-EVALUATE
    END-PERFORM.
    CL OS E DENWA-F.
    STOP RUN.
TSUIKA.
    PERFORM VARYING W-BANGO FROM 1 BY 1
                            UNTIL W-BANGO > 9 OR END-SW2 = "END"
      MOVE W-SHIMEI TO D-SHIMEI
      MOVE W-BANGO  TO D-BANGO
      READ DENWA-F
            MOVE W-SHIMEI TO D-SHIMEI
                    MOVE W-BANGO  TO D-BANGO
                    MOVE W-TEL    TO D-TEL
                    WRITE DENWA-R
                          INVALID DISPLAY "WRITE ERROR", W-DATA
                                  STOP RUN
                    END-WRITE
                    MOVE "END" TO END-SW2
           NOT  IF W-BANGO = 9 THEN
                           DISPLAY "OVER 9", W-DATA
                           STOP RUN
                        END-IF
      END-READ
    END-PERFORM.
SAKUJO.
    PERFORM VARYING W-BANGO FROM 1 BY 1
                            UNTIL W-BANGO > 9 OR END-SW2 = "END"
      MOVE W-SHIMEI TO D-SHIMEI
      MOVE W-BANGO  TO D-BANGO
      READ DENWA-F
            DISPLAY "READ ERROR", W-DATA
                    STOP RUN
            IF W-TEL = D-TEL THEN
                       DELETE DENWA-F
                              INVALID DISPLAY "DELETE ERROR", W-DATA
                                      STOP RUN
                       END-DELETE
                       MOVE "END" TO END-SW2
                    END-IF
      END-READ
    END-PERFORM.
    PERFORM 
      MOVE W-SHIMEI TO D-SHIMEI
      MOVE W-BANGO  TO D-BANGO
      READ DENWA-F
           INVALID MOVE 10 TO W-BANGO
           NOT INVALID 
      END-READ
      COMPUTE W-BANGO = W-BANGO + 1
    END-PERFORM.

設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。 解答は,重複して選んでもよい。

解答群

ア AT END

イ INVALID

ウ NOT AT END

エ NOT INVALID

オ UNTIL W-BANGO = 9

カ UNTIL W-BANGO > 9

キ VARYING W-BANGO FROM 1 BY 1 UNTIL W-BANGO = 9

ク VARYING W-BANGO FROM 1 BY 1 UNTIL W-BANGO > 9

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

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

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

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

基本情報技術者試験


設問2 プログラム中の に入る正しい文の組合せを, 解答群の中から選べ。

なお,各文の実行は矢印の順に行うものとする。

@ COMPUTE D-BANGO = D-BANGO - 1

A COMPUTE D-BANGO = D-BANGO + 1

B DELETE DENWA-F
        INVALID DISPLAY "DELETE ERROR2", W-SHIMEI, W-BANGO
            STOP RUN     END-DELETE

C REWRITE DENWA-R
        INVALID DISPLAY "REWRITE ERROR", W-SHIMEI, W-BANGO
            STOP RUN     END-REWRITE

D WRITE DENWA-R
       INVALID DISPLAY "WRITE ERROR2", W-SHIMEI, W-BANGO
            STOP RUN     END-WRITE

解答群

ア @→C       イ @→D        ウ @→D→A→B

エ B→@→D     オ B→A→D

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

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