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

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

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

〔プログラムの説明〕

 ある事業所では,環境活動の一環としてコピー用紙の削減を目標にかかげ,部署ごとの 使用状況を月ごとに集計し,公開することにした。この事業所では,両面コピー機能が ある1台のコピー機をすべての部署で共用している。このプログラムは,コピー機に 記録された稼働情報を集計する。

(1) コピー機の利用者は,部署ごとに配布された IC カードをコピー機にセットする。 コピー機はセットされた IC カードから利用部署を読み取り,内部に記録する。

(2) 利用実績ファイル COPY-FILE は,コピー機に記録された情報から集計月分を抽出した, 図1に示すレコード様式の順ファイルである。

    利用日    
    (8けた) 
 利用部署
 (1けた) 
 使用枚数
 (4けた) 
 両面使用
 (1けた)

    図1 利用実績ファイルのレコード様式

@ コピー機の利用1回に対して,1レコードが生成される。

A 利用日には,西暦年が4けた,月及び日がそれぞれ2けたで格納される。

B 利用部署には,第1営業部,第2営業部,第1開発部,第2開発部,管理部の順に, それぞれ1から5まで割り振られた1けたの部署コードが格納される。

C 使用枚数には,使用したコピー用紙の枚数が格納される。両面コピー機能を利用して両面に 印刷した場合でも1枚と数える。

D 両面コピー機能を利用した場合は両面使用に1が設定され,利用しなかった場合は0が設定される。

(3) コピー用紙の使用量は,1部署当たり合計で毎月 3,000 枚以下とする。

(4) 集計結果の表示例を図2に示す。

  DEPT  ----+----1----+----2----+----3 (x1000)
Sales-1 ************
Sales-2 *******
Dev-1   ******
Dev-2   *****************
Admin   *****

      図2 集計結果の表示例

@ 利用部署の,第1営業部,第2営業部,第1開発部,第2開発部,管理部は, それぞれ Sales-1,Sales-2,Dev-1,Dev-2,Admin と表示する。

A 部署ごとに月ごとの使用枚数を集計して,100 枚を * 印一つとした棒グラフで表示する。 ただし,100 枚に満たない分は切り上げる。

〔プログラム〕

(行番号)
 1  DATA DIVISION.
 2  FILE SECTION.
 3  FD  COPY-FILE.
 4  01  CP-REC.
 5      02  CP-DATE      PIC X(8).
 6      02  CP-DEPT      PIC 9(1).
 7      02  CP-CNT       PIC 9(4).
 8      02  CP-BOTH      PIC 9(1).
 9  WORKING-STORAGE SECTION.
10  01  TOTAL.
11       02  DEPT-TOTAL  PIC 9(4)  OCCURS 5 VALUE ZERO.
12  77  READ-FLAC        PIC X(1)  VALUE SPACE.
13       88  DATA-EOF    VALUE "E".
14  77  DEPT-CNT         PIC 9(2).
15  77  MARK-CNT         PIC 9(2).
16  77  HEADER           PIC X(47) VALUE
17      "  DEPT  ----+----1----+----2----+----3  (x1000)".
18  01  DEPT             PIC X(40) VALUE
19      "Sales-1 Sales-2 Dev-1   Dev-2    Admin".
20  01  DEPT-HEADER REDEFINES DEPT.
21      02 DEPT-NAME     PIC X(8)  OCCURS 5.
22  77  MARKER           PIC X(30) VALUE ALL "*".
23  PROCEDURE DIVISION.
24  MAIN-PROC.
25      OPEN INPUT COPY-FILE.
26      PERFORM UNTIL DATA-EOF
27        READ COPY-FILE AT END SET DATA-EOF TO TRUE
28                   NOT AT END PERFORM CNT-PROC
29        END-READ
30      END-PERFORM.
31      CLOSE COPY-FILE.
32      PERFORM PRT-PROC.
33      STOP RUN.
34  CNT-PROC.
35      .
36  PRT-PROC.
37      DISPLAY HEADER.
38      PERFORM VARYING DEPT-CNT FROM 1 BY 1 UNTIL DEPT-CNT > 5
39        IF DEPT-TOTAL(DEPT-CNT) NOT = ZERO THEN
40            
41           DISPLAY DEPT-NAME(DEPT-CNT) MARKER(1:MARK-CNT)
42        ELSE
43           DISPLAY DEPT-NAME(DEPT-CNT)
44        END-IF
45      END-PERFORM.
設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

解答群

ア ADD 1 TO DEPT-TOTAL(CP-DEPT)

イ ADD CP-CNT TO DEPT-TOTAL(CP-DEPT)

ウ COMPUTE MARK-CNT = (DEPT-TOTAL(DEPT-CNT) + 99)/ 100

エ COMPUTE MARK-CNT = DEPT-TOTAL(DEPT-CNT) / 100

オ MOVE CP-CNT TO DEPT-TOTAL(CP-DEPT)

力 MOVE DEPT-TOTAL(DEPT-CNT) TO MARK-CNT

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

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

基本情報技術者試験


設問2 両面コピー機能を利用した枚数の比率を計算し,50 %未満の場合は図3のように 棒の右端に "(!)" を表示するように,プログラムを変更する。 次の表中の に入れる正しい答えを,解答群の中から選べ。

  DEPT  ----+----1----+----2----+----3 (x1000)
Sales-1 ************
Sales-2 *******(!)
Dev-1   ******
Dev-2   *****************(!)
Admin   *****

      図3 プログラム変更後の表示例

      表 プログラムの変更内容

      処置       変更内容 
 行番号 11 と 12 の間
 に追加 
    02  DEPT-BOTH   PIC 9(4) OCCURS 5 VALUE ZERO.
77  BOTH-RATE       PIC 9(3).
  の間
 に追加
IF CP-BOTH = 1 THEN
   ADD CP-CNT TO DEPT-BOTH(CP-DEPT)
END-IF.
 行番号 41 を変更
 
IF BOTH-RATE >= 50 THEN
   DISPLAY DEPT-NAME(DEPT-CNT) MARKER(1:MARK-CNT)
ELSE
   DISPLAY DEPT-NAME(DEPT-CNT) MARKER(1:MARK-CNT) "(!)"
END-IF
c に関する解答群 ア 行番号 30 と 31     イ 行番号 31 と 32

ウ 行番号 35 と 36     エ 行番号 37 と 38

d に関する解答群 ア COMPUTE BOTH-RATE =
   DEPT-BOTH(DEPT-CNT) * 100 / DEPT-TOTAL(DEPT-CNT)

イ COMPUTE BOTH-RATE = DEPT-BOTH(DEPT-CNT) / 100

ウ COMPUTE MARK-CNT = DEPT-TOTAL(DEPT-CNT) / 100

エ MOVE DEPT-BOTH(DEPT-CNT) TO BOTH-RATE

オ MOVE DEPT-TOTAL(DEPT-CNT) TO MARK-CNT

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

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


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