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

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

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

〔プログラムの説明〕

 D社では,ある製品の満足度を調べるために,アンケート調査を実施し, 得られた 1,000 件の回答をアンケート結果ファイルに登録した。このプログラムは, アンケート結果ファイルを読み込み,集計結果をグラフで表示する。

 

(1) アンケート結果ファイルは,図1に示すレコード様式の順ファイルである。


図1 アンケート結果ファイルのレコード様式
@ 回答 ID は,一意に割り振られた 0001 〜 1000 の番号である。

A 価格満足度,機能満足度及びデザイン満足度は, それぞれの満足度の高から低を 5 〜 1 の5段階で評価したものである。

 

(2) 集計した満足度の分布をヒストグラムで表示する。図2に集計結果の表示例を示す。 @ 価格(Price),機能(Function)及びデザイン(Design)の各項目のヒストグラムを並べて表示する。

A 各ヒストグラムは,項目名の行と満足度 5 〜 1 の行の6行から成る。

B 各満足度の行は,満足度の値,その満足度の選択数,選択数を長さで表す横棒の順に表示する。

C 選択数は,値が 0 の場合以外は先行する数字 0 を除いて,値が 0 の場合は1桁の数字 0 を, 右寄せで表示する。

D 横棒は,選択数 20 ごとに記号“*”を一つ用いて表示する。選択数が 20 に満たない端数は切り捨てる。


図2 集計結果の表示例

〔プログラム〕

(行番号)

 1  DATA DIVISION.
 2  FILE SECTION.
 3  FD ANS-FILE.
 4  Ø1 ANS-REC.
 5     Ø2 ANS-ID       PIC 9(4).
 6     Ø2 ANS-SATIS    OCCURS 3.
 7        Ø3 ANS-VAL   PIC 9(1).
 8  WORKING-STORAGE SECTION.
 9  77 S-PRICE     PIC 9(1)VALUE 1.
1Ø  77 S-FUNCTION  PIC 9(1) VALUE 2.
11  77 S-DESIGN    PIC 9(1) VALUE 3.
12  77 ANS-FLAG    PIC 9(1)VALUE Ø.
13     88 ANS-EOF  VALUE 1.
14  Ø1 HIST-REC.
15     Ø2 HIST-VAL   PIC 9(1).
16     Ø2            PIC X(1)  VALUE SPACE.
17     Ø2 HIST-NUM   PIC .
18     Ø2            PIC X(1)  VALUE SPACE.
19     Ø2 HIST-PLOT  PIC X(5Ø).
2Ø  Ø1 CNT-REC.
21     Ø2 CNT-SATIS      OCCURS 3.
22        Ø3 CNT-VAL     OCCURS 5.
23           Ø4 CNT-NUM  PIC 9(4) VALUE Ø.
24  77 PLOT-NUM  PIC 9(2).
25  77 I         PIC 9(1).
26  77 J         PIC 9(1).
27  PROCEDURE DIVISION.
28  MAIN-PROC.
29      OPEN INPUT ANS-FILE.
3Ø      PERFORM READ-PROC.
31      PERFORM DISP-PROC.
32      CLOSE ANS-FILE.
33      STOP RUN.
34  READ-PROC.
35      PERFORM UNTIL ANS-EOF
36         READ ANS-FILE
37            AT END
38               SET ANS-EOF TO TRUE
39            NOT AT END
4Ø               PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
41                  MOVE ANS-VAL(I) TO J
42                  ADD 1 TO CNT-NUM(I, J)
43               END-PERFORM
44         END-READ
45      END-PERFORM.
46  DISP-PROC.
47      PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
48         EVALUATE I
49            WHEN S-PRICE
5Ø               DISPLAY "Price"
51            WHEN S-FUNCTION
52               DISPLAY "Function"
53            WHEN S-DESION
54               DISPLAY "Design"
55         END-EVALUATE
56         PERFORM VARYING J FROM 5 BY -1 UNTIL J = Ø
57            MOVE J TO HIST-VAL
58            MOVE  TO HIST-NUM
59            DIVIDE  BY 2Ø GIVING PLOT-NUM
6Ø            MOVE SPACE TO HIST-PLOT
61            IF PLOT-NUM > Ø THEN
62               MOVE ALL "*" TO HIST-PLOT(  )
63            END-IF
64            DISPLAY 
65         END-PERFORM
66      END-PERFORM.
設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。

a に関する解答群

ア 9(4)       イ B(3)9       ウ Z(3)9       エ Z(4)

b に関する解答群

ア CNT-NUM(6 - I, J)       イ CNT-NUM(I, 5 - J)

ウ CNT-NUM(I, 6 - J)       エ CNT-NUM(I, J)

c に関する解答群

ア 1:PLOT-NUM       イ 1:PLOT-NUM + 1

ウ PLOT-NUM         エ PLOT-NUM + 1

d に関する解答群

ア HIST-NUM       イ HIST-PLOT       ウ HIST-REC       エ HIST-VAL
解答 a ←クリックすると正解が表示されます

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

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

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

設問2  各回答の3項目の満足度を加算した値(以下,総合満足度という)を求め, 総合満足度ごとの回答 ID の一覧を追加して表示するよう,プログラムを変更する。 追加した部分の表示例を図3に示す。表1中の に入れる正しい答えを, 解答群の中から選べ。

@ 総合満足度の昇順に,その値と該当する全ての回答 ID を表示する。

A 回答 ID は,総合満足度ごとに昇順に表示する。

B 回答 ID は,10 件ごとに改行して表示する。

C 回答が1件もない総合満足度の値に対しては,表示を省略する。


図3 総合満足度ごとの回答 ID 一覧の表示例

表1 プログラムの変更内容
 処置           変更内容
 行番号 7 と 8 の間に  
 追加 
 SD SRT-FILE.
 Ø1 SRT-REC.
    Ø2 SRT-SUM  PIC 9(2).
    Ø2 SRT-ID   PIC 9(4).
 行番号 26 と 27 の間に  
 追加 
 77 SRT-FLAC    PIC 9(1) VALUE Ø.
    88 SRT-EOF  VALUE 1.
 Ø1 T-SATIS-REC.
    Ø2 T-SATIS-SUM    PIC Z(2).
    Ø2 T-SATIS-IDS    OCCURS 1Ø.
       Ø3             PIC X(1) VALUE SPACE.
       Ø3 T-SATIS-ID  PIC X(4).
 77 LAST-SUM  PIC 9(2).
 77 POS       PIC 9(2).
 行番号 30,31 を  
 変更 
 SORT SRT-FILE ASCENDING KEY 
      INPUT  PROCEDURE IS READ-PROC
      OUTPUT PROCEDURE IS DISP-PROC.
 行番号 40 〜 43 を  
 変更 
 MOVE Ø TO SRT-SUM
 PERFORM VARYING I FROM 1 BY UNTIL I > 3
    MOVE ANS-VAL(I)TO J
    ADD 1 TO CNT-NUM(I, J)
    ADD ANS-VAL(I) TO SRT-SUM
 END-PERFORM
 MOVE ANS-ID TO SRT-ID
 RELEASE SRT-REC
 行番号 66 の後ろに 
 追加 
 DISPLAY "Total".
 MOVE 1 TO LAST-SUM POS.
 PERFOR UNTIL SRT-EOF
    RETURN SRT-FILE
       AT END
          SET SRT-EOF TO TRUE
      NOT AT END
          IF  THEN
             IF POS > 1 THEN
                DISPLAY T-SATIS-REC
             END-IF
             MOVE SPACE TO T-SATIS-REC
             IF  THEN
                MOVE SRT-SUM TO T-SATIS-SUM LAST-SUM
             END-IF
             MOVE 1 TO POS
          END-IF
          MOVE SRT-ID TO T-SATIS-ID(POS)
          ADD 1 TO POS
    END-RETURN
 END-PERFORM.
 DISPLAY T-SATIS-REC.

e に関する解答群

ア SRT-ID        イ SRT-REC        ウ SRT-SUM f,g に関する解答群 ア POS > 1

イ POS > 1Ø

ウ SRT-SUM NOT = LAST-SUM

エ SRT-SUM NOT = LAST-SUM AND POS > 1

オ SRT-SUM NOT = LAST-SUM AND POS > 1Ø

カ SRT-SUM NOT = LAST-SUM OR POS > 1

キ SRT-SUM NOT = LAST-SUM OR POS > 1Ø

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

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

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


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