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

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

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

〔プログラムの説明〕

五つのチャンネルでテレビを視聴できる地域がある。 プログラムは,この地域の調査対象世帯がある1日に視聴した番組を記録した視聴データファイルと, 同じ日の番組データを記録した番組データファイルを読み込んで,番組ごとに平均視聴率を求めて印字する。 プログラムでは,時間を1分の単位に丸めて扱う。 例えば,時刻 10 時 00 分は,10 時 00 分 00 秒から 10 時 00 分 59 秒までの時間を丸めたものとして扱う。

(1) 視聴データファイル(VIEW-FILE)は,次のレコード様式の順ファイルである。

チャンネル番号

2 けた

検出開始時刻 検出終了時刻

2 けた

2 けた

2 けた

2 けた

@ 視聴データファイルには,標本となる調査対象 600 世帯の1日の視聴データが格納されている。

A 1世帯が所有するテレビの台数は1台とする。

B チャンネル番号は,01 〜 05 の五つの値をとる。

C 一つのレコードは,ある世帯が,“チャンネル番号”のチャンネルを“検出開始時刻”から, “検出終了時刻”まで,視聴したと検出したことを表す。

D 視聴データは,調査対象の世帯が視聴しているチャンネルを,毎分 00 秒に検出して取得する。

例えば,ある世帯で 10 時 00 分 30 秒から 10 時 05 分 30 秒までテレビを視聴し, その間に次のようにチャンネルを変えたとする。

毎分 00 秒にチャンネルを検出するので,視聴データファイルには次のように分の単位に丸めて記録される。 チャンネル 03 の視聴は記録されない。

0110011002
0210031004
0110051005

E 検出開始時刻及び検出終了時刻の値の範囲は,00 時 00 分 〜 23 時 59 分である。 2 日にわたるデータはない。

F 検出開始時刻 ≦ 検出終了時刻 の関係が成り立つ。

(2) 番組データファイル( PROGRAM-FILE )は,次のレコード様式の順ファイルである。

チャンネル番号
2けた
番組開始時刻 番組終了時刻 番組名
50 けた

2けた

2けた

2けた

2けた

@ 番組データファイルには,視聴データファイルと同じ日の, 5チャンネル分の番組データが格納されている。

A 番組開始時刻及び番組終了時刻の値の範囲は,00 時 00 分 〜 23 時 59 分である。 2 日にわたるデータはない。

B 番組開始時刻 ≦ 番組終了時刻 の関係が成り立つ。

C 一つのレコードは,ある番組の放送時間が,“番組開始時刻”から “番組終了時刻”までであることを表す。

(3) プログラムでの処理は,次のとおりである。

@ 視聴カウント表(VIEW-COUNT-TABLE)は,5(チャンネル)× 1,440(分)の 2 次元の表である。 チャンネルごとに,分単位に視聴した世帯数を表の各要素に集計する。

A 番組の平均視聴率は次の式で求める。

番組の平均視聴率(%)=  各世帯がその番組を視聴した時間の合計  
   標本世帯数×その番組の放送時間
× 100

B 番組データファイルから読み込んだ番組順に,チャンネル,番組開始時刻,番組終了時刻, 平均視聴率(小数第1位までのパーセント表示),番組名を,次の様式で印字する。

基本情報技術者試験


〔プログラム〕

DATA DIVISION.
FILE SECTION.
FD  VIEW-FILE.
01  VIEW-REC.
  05  VIEW-CHANNEL            PIC 99.
  05  VIEW-START-HHMM.
    10  VIEW-START-HH         PIC 99.
    10  VIEW-START-MM         PIC 99.
  05  VIEW-END-HHMM.
    10  VIEW-END-HH           PIC 99.
    10  VIEW-END-MM           PIC 99.
FD  PROGRAM-FILE.
01  PROGRAM-REC.
  05  PROG-CHANNEL            PIC 99.
  05  PROG-START-HHMM.
    10  PROG-START-HH         PIC 99.
    10  PROG-START-MM         PIC 99.
  05  PROG-END-HHMM.
    10  PROG-END-HH           PIC 99.
    10  PROG-END-MM           PIC 99.
  05  PROGRAM-TITLE           PIC X(50).
FD  OUT-FILE.
01  OUT-REC                   PIC X(100).
WORKING-STORAGE SECTION.
01  SAMPLE-SIZE               PIC 9(4)  VALUE 600.
01  M                         PIC 9(4).
01  END-OF-FILE               PIC X.
01  START-MMMM                PIC 9(4).
01  END-MMMM                  PIC 9(4).
01  SUMMATION                 PIC 9(9)  BINARY.
01  PROG-RATING               PIC ZZ9.9.
01  VIEW-COUNT-TABLE.
  05  CHANNEL            OCCURS 5.
    10  COUNT-OF-MINUTE  OCCURS 1440  PIC 9(4)  BINARY.
01  O-DATA.
  05  FILLER                  PIC X(3) VALUE SPACE.
  05  O-PROG-CHANNEL          PIC 99.
  05  FILLER                  PIC X(3) VALUE SPACE.
  05  O-PROG-START-HHMM.
    10  O-PROG-START-HH       PIC 99.
    10  O-PROG-START-MM       PIC 99.
  05  FILLER                  PIC X(3) VALUE " - ".
  05  O-PROG-END-HHMM.
    10  O-PROG-END-HH         PIC 99.
    10  O-PROG-END-MM         PIC 99.
  05  FILLER                  PIC X(2) VALUE SPACE.
  05  O-PROG-RATING           PIC ZZ9.9.
  05  FILLER                  PIC X(6) VALUE SPACE.
  05  O-PROGRAM-TITLE         PIC X(50).
01  TITLE-LINE                PIC X(100)
          VALUE "channel from - to    rating(%)  program-title".
PROCEDURE DIVISION.
MAIN-PARAGRAPH.
    PERFORM EXPAND-VIEW-COUNT.
    PERFORM CALCULATE-RATING-AND-PRINT.
    STOP RUN.
EXPAND-VIEW-COUNT.
    .
    OPEN INPUT VIEW-FILE.
    MOVE "N" TO END-OF-FILE.
    PERFORM UNTIL END-OF-FILE = "Y"
       READ VIEW-FILE AT END
          MOVE "Y" TO END-OF-FILE
       NOT AT END
          PERFORM SET-VIEW-COUNT
       END-READ
    END-PERFORM.
    CL OS E VIEW-FILE.
CALCULATE-RATING-AND-PRINT.
    OPEN INPUT PROGRAM-FILE  OUTPUT OUT-FILE.
    WRITE OUT-REC FROM TITLE-LINE AFTER ADVANCING 1.
    .
    PERFORM UNTIL END-OF-FILE = "Y"
       READ PROGRAM-FILE AT END
          MOVE "Y" TO END-OF-FILE
       NOT AT END
          PERFORM CALCULATE-RATING
          MOVE PROG-CHANNEL    TO O-PROG-CHANNEL
          MOVE PROG-START-HHMM TO O-PROG-START-HHMM
          MOVE PROG-END-HHMM   TO O-PROG-END-HHMM
          MOVE PROG-RATING     TO O-PROG-RATING
          MOVE PROGRAM-TITLE   TO O-PROGRAM-TITLE
          WRITE OUT-REC FROM O-DATA AFTER ADVANCING 1
       END-READ
    END-PERFORM.
    CL OS E PROGRAM-FILE OUT-FILE.
SET-VIEW-COUNT.
    COMPUTE START-MMMM = VIEW-START-HH * 60 + VIEW-START-MM + 1.
    COMPUTE END-MMMM   = VIEW-END-HH   * 60 + VIEW-END-MM + 1.
    PERFORM VARYING M FROM START-MMMM BY 1 UNTIL M > END-MMMM
       
    END-PERFORM.
CALCULATE-RATING.
    COMPUTE START-MMMM = PROG-START-HH * 60 + PROG-START-MM + 1.
    COMPUTE END-MMMM   = PROG-END-HH   * 60 + PROG-END-MM + 1.
    .
    PERFORM VARYING M FROM START-MMMM BY 1 UNTIL M > END-MMMM
       
    END-PERFORM.
    COMPUTE PROG-RATING ROUNDED
      = .

基本情報技術者試験


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

a,b,d に関する解答群

ア COMPUTE SUMMATION = END-MMMM - START-MMMM

イ INITIALIZE VIEW-COUNT-TABLE

ウ MOVE "N" TO END-OF-FILE

エ MOVE "Y" TO END-OF-FILE

オ MOVE SAMPLE-SIZE TO SUMMATION

カ MOVE ZERO TO SUMMATION

キ MOVE ZERO TO VIEW-COUNT-TABLE

c,e に関する解答群

ア ADD 1 TO COUNT-OF-MINUTE(VIEW-CHANNEL M)

イ ADD 1 TO COUNT-OF-MINUTE(VIEW-CHANNEL M + 1)

ウ ADD 1 TO SUMMATION

エ ADD COUNT-OF-MINUTE(PROG-CHANNEL M) TO SUMMATION

オ COMPUTE SUMMATION = COUNT-OF-MINUTE(PROG-CHANNEL M + 1)

カ COMPUTE SUMMATION = COUNT-OF-MINUTE(VIEW-CHANNEL M) + 1

キ MOVE 1 TO COUNT-OF-MINUTE(VIEW-CHANNEL M)

f に関する解答群

ア 100 * SUMMATION / ((END-MMMM - START-MMMM) * (SAMPLE-SIZE + 1))

イ 100 * SUMMATION / ((END-MMMM - START-MMMM + 1) * SAMPLE-SIZE)

ウ 100 * SUMMATION / (END-MMMM - START-MMMM) / SAMPLE-SIZE

エ 100 * SUMMATION / (END-MMMM - START-MMMM + 1) / (SAMPLE-SIZE + 1)

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

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

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

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

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

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


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