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

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

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

〔プログラムの説明〕

 受験の申込みを登録した申込ファイルから,受験区分別に申込者の人数を集計し,集計表を印字するプログラムである。

(1) 申込ファイルは図1に示すレコード様式の順ファイルである。

 申込番号
  5桁
    受験区分
 試験区分
   1桁
 開催地区分
   2桁

  図1 申込ファイルのレコード様式

 @ 受験の申込み1件に対して,1件のレコードが作成され,5桁の申込番号が付与される。

 A 受験区分は,試験区分と開催地区分から構成される。

 B 試験区分は,試験内容に対応付けた A 〜 H のいずれか1文字である。

 C 開催地区分は,開催地に対応付けた 01 〜 20 のいずれかの数字である。

 D 各受験区分の申込者数は,999 人以下である。

 E 申込ファイルの内容には,誤りはないものとする。

(2) 集計表の印字例は,図2のとおりである。申込者がいない受験区分は,印字しない。

SEGMENT   TOTAL  
 A01      35
 A02     120
 A03      54
  :      :
 H20      79

  図2 集計表の印字例

〔プログラム〕

(行番号 )
 1  DATA DIVISION.
 2  FILE SECTION.
 3  FD  TEST-APPLIC-FILE.
 4  01  TEST-APPLIC-REC.
 5      02  FILLER         PIC X(05).
 6      02  TEST-M.
 7          03  TEST-CATEG-M  PIC X(01).
 8          03  TEST-PLACE-M  PIC 9(02).
 9  FD  PRINT-TEST-FILE.
10  01  PRINT-REC.
11      02  PRINT-TEST-REC.
12          03  TEST-CATEG-S  PIC X(01).
13          03  TEST-PLACE-S  PIC 9(02).
14      02  FILLER         PIC X(10).
15      02  PRINT-S        PIC ZZ9.
16  WORKING-STORAGE SECTION.
17  01  FILE-END           PIC X(01) VALUE "N".
18  01  LOOP1              PIC 9(01).
19  01  LOOP2              PIC 9(02).
20  01  TEST-NO            PIC 9(01).
21  01  TEST-W1.
22      02  TEST-W2        PIC X(08) VALUE "ABCDEFGH".
23      02  REDEFINES TEST-W2.
24          03 TEST-W3     PIC X(01) OCCURS 8 INDEXED BY TEST-IDX.
25  01  SUM-WK1.
26      02  0CCURS 8.
27          03  SUM-WK     PIC 9(03) OCCURS 20 VALUE ZERO.
28  01  HEADER             PIC X(16) VALUE "SEGMENT    TOTAL".
29  PROCEDURE DIVISION.
30  MAIN-PROC.
31      0PEN INPUT TEST-APPLIC-FILE OUTPUT PRINT-TEST-FILE.
32      PERFORM SUM-PROC UNTIL FILE-END = "Y".
33      PERFORM PRINT-PROC.
34      CLOSE TEST-APPLIC-FILE PRINT-TEST-FILE.
35      STOP RUN.
36  SUM-PROC.
37      READ TEST-APPLIC-FILE
38          AT END
39              MOVE "Y" TO FILE-END
40          NOT AT END
41             
42             SEARCH 
43                  WHEN TEST-CATEG-M = TEST-W3(TEST-IDX)
44                      SET TEST-NO TO TEST-IDX
45              END-SEARCH
46              ADD 1 TO SUM-WK(TEST-NO TEST-PLACE-M)
47      END-READ.
48  PRINT-PROC.
49      WRITE PRINT-REC FROM HEADER AFTER PAGE.
50      PERFORM VARYING LOOP1 FROM 1 BY 1 UNTIL LOOP1 > 8
51          PERFORM VARYING LOOP2 FROM 1 BY 1 UNTIL LOOP2 > 20
52              IF  NOT = 0 THEN
53                  MOVE SPACE TO PRINT-REC
54                  MOVE TEST-W3(LOOP1) TO TEST-CATEG-S
55                  MOVE LOOP2 TO TEST-PLACE-S
56                  MOVE  TO PRINT-S
57                  WRITE PRINT-REC AFTER 1
58              END-IF
59          END-PERFORM
60      END-PERFORM.

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

a に関する解答群

ア MOVE 1 TO TEST-IDX             イ MOVE 1 TO TEST-NO

ウ MOVE TEST-IDX TO TEST-NO        エ SET TEST-IDX TO 1

オ SET TEST-IDX TO TEST-CATEG-S     カ SET TEST-IDX TO TEST-NO

b に関する解答群

ア SUM-WK     イ TEST-IDX     ウ TEST-NO

エ TEST-W1     オ TEST-W2     カ TEST-W3

c に関する解答群

ア SUM-WK(LOOP1 LOOP2)            イ SUM-WK(LOOP2 LOOP1)

ウ SUM-WK(TEST-CATEG-M TEST-NO)     エ SUM-WK(TEST-NO TEST-PLACE-M)

オ SUM-WK(TEST-PLACE-M TEST-NO)     カ SUM-WK(TEST-PLACE-S TEST-NO)

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

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

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

基本情報技術者試験


設問2 集計表における受験区分の印字を申込者数の多い順になるようにプログラムを変更したい。表1に示す プログラムの変更内容の に入れる正しい答えを,解答群の中から選べ。 ここで, には設問1の正しい答えが入っているものとする。

       表1 プログラムの変更内容

   処置        変更内容
行番号2と3
の間に追加
  SD  TEST-SORT-FILE.
  01  SORT-REC.
      02  SORT-TEST-REC  PIC X(03).
      02  SORT-S         PIC 9(03).
  FD  TEST-SUM-FILE.
  01  SUM-REC.
      02  SUM-TEST-REC.
          03  TEST-CATEG-S  PIC X(01).
          03  TEST-PLACE-S  PIC 9(02).
      02  SUM-S          PIC 9(03).
行番号 48 〜
60 を変更
  PRINT-PROC.
      OPEN OUTPUT TEST-SUM-FILE.
      PERFORM VARYING LOOP1 FROM 1 BY 1 UNTIL LOOP1 > 8
          PERFORM VARYING LOOP2 FROM 1 BY 1 UNTIL LOOP2 > 20
              IF  NOT = 0 THEN
                  MOVE TEST-W3(LOOP1) TO TEST-CATEG-S 0F SUM-REC
                  MOVE LOOP2 TO TEST-PLACE-S OF SUM-REC
                  MOVE  TO SUM-S
                  WRITE SUM-REC
              END-IF
          END-PERFORM
      END-PERFORM.
      CLOSE TEST-SUM-FILE.
      OPEN INPUT TEST-SUM-FILE.
      SORT TEST-SORT-FILE 
          INPUT PROCEDURE IS IN-PROC
          OUTPUT PROCEDURE IS OUT-PROC.
      CLOSE TEST-SUM-FILE.
  IN-PROC.
      MOVE "N" TO FILE-END.
      PERFORM UNTIL FILE-END = "Y"
          READ TEST-SUM-FILE
              AT END
                  MOVE "Y" TO FILE-END
              NOT AT END
                  MOVE SUM-TEST-REC TO SORT-TEST-REC
                  MOVE SUM-S TO SORT-S
                  
           END-READ
       END-PERFORM.
   OUT-PROC.
       WRITE PRINT-REC FROM HEADER AFTER PAGE.
       MOVE "N" TO FILE-END.
       PERFORM UNTIL FILE-END = "Y"
           
               AT END
                   MOVE "Y" TO FILE-END
               NOT AT END
                   MOVE SPACE TO PRINT-REC
                   MOVE SORT-TEST-REC TO PRINT-TEST-REC
                   MOVE SORT-S TO PRINT-S
                   WRITE PRINT-REC AFTER 1
          
       END-PERFORM.

d に関する解答群

ア ASCENDING KEY SORT-S

イ ASCENDING KEY SORT-TEST-REC

ウ DESCENDING KEY SORT-S

エ DESCENDING KEY SORT-TEST-REC

e 〜 g に関する解答群

ア END-READ

イ END-RETURN

ウ READ TEST-SORT-FILE

エ READ TEST-SUM-FILE

オ RELEASE SORT-REC

カ RELEASE SUM-REC

キ RETURN TEST-SORT-FILE

ク RETURN TEST-SUM-FILE

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

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

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

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


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