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

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

〔プログラムの説明〕

 企業の売上高などを記録した企業統計ファイルがある。 企業統計ファイルのレコードを,各項目ごとにコンマで区切った CSV( Comma Separated Value )形式に変換して,企業統計 CSV ファイルに出力するプログラムである。 レコードの各項目は,項目ごとに指定された方法で変換する。

(1) 企業統計ファイルのレコード様式は,次のとおりである。

企業コード 6 けた 社 名
50 けた
売上高
8 けた
営業利益
8 けた
経常利益
8 けた

@ 企業コードは,6けたの英数字項目である。

A 売上高,営業利益及び経常利益は,数字項目である。 数字は,右詰めで,8けた未満の場合は,上位のけたに0が埋められている。

B 社名は1文字以上の英字,数字,空白及びピリオドで構成され,コンマは含まない。 社名は左詰めで,その文字列が項目の文字数に満たないところは,空白が埋められている。 なお,空白だけからなる社名はない。

(2) 企業統計 CSV ファイルのレコード様式は,次のとおりである。

企業コード,社名,売上高,営業利益,経常利益

@ 項目と項目の区切りには,半角コンマを用いる。

A このファイルのレコードは,可変長とする。

(3) 企業統計ファイルのデータ変換方法は,次のとおりである。

@ 企業コードは,変換しない。

A 社名については,その文字列の末尾の連続する空白は削除する。

B 売上高,営業利益及び経常利益については,先頭の一つ又は連続する 0 は削除する。 ただし,これらの項目の全けたがゼロの場合は,1けたの 0 とする。

〔プログラム〕

(行番号)
 1   DATA DIVISION.
 2   FILE SECTION.
 3   FD  COMPANY-FILE.
 4   01  COMPANY-REC.
 5       02  COMP-CODE               PIC  X(06).
 6       02  COMP-NAME OCCURS 50     PIC  X(01).
 7       02  COMP-SUM OCCURS 3       PIC  9(08).
 8   FD  CSV-FILE
 9       RECORD IS VARYING IN SIZE 
10                FROM 14 TO 84 DEPENDING ON P-CNT.
11   01  CSV-REC                     PIC  X(84).
12   WORKING-STORAGE SECTION.
13   01  EOF-FLG                     PIC  X(01) VALUE SPACE.
14   01  OUT-WRK.
15       02  OUT-S-WRK OCCURS 84     PIC  X(01).
16   01  NUM-WRK.
17       02  NUM9-WRK                PIC  9(08).
18       02  REDEFINES NUM9-WRK.
19           03  NUMX-WRK OCCURS 8   PIC  X(01).
20   01  L-CNT                       PIC  9(02).
21   01  M-CNT                       PIC  9(02).
22   01  P-CNT                       PIC  9(02).
23   01  V-CNT                       PIC  9(01).
24   01  W-CNT                       PIC  9(02).
25   01  SEPARATOR-CHAR              PIC  X(01) VALUE ",".
26   PROCEDURE DIVISION.
27   PROC-RTN.
28       OPEN INPUT COMPANY-FILE OUTPUT CSV-FILE.
29       PERFORM UNTIL EOF-FLG = "E"
30          READ COMPANY-FILE AT END
31             MOVE "E" TO EOF-FLG
32          NOT AT END
33             PERFORM MOVE-RTN
34          END-READ
35       END-PERFORM.
36       CL OS E COMPANY-FILE CSV-FILE.
37       STOP RUN.
38   MOVE-RTN.
39       MOVE COMP-CODE TO OUT-WRK.
40       MOVE SEPARATOR-CHAR TO OUT-S-WRK (7).
41       MOVE 7 TO P-CNT.
42       PERFORM VARYING L-CNT FROM 50 BY -1 UNTIL L-CNT < 2
43                          OR COMP-NAME (L-CNT) NOT = SPACE
44          CONTINUE
45       END-PERFORM.
46       PERFORM VARYING W-CNT FROM 1 BY 1 UNTIL 
47          COMPUTE P-CNT = P-CNT + 1
48          MOVE COMP-NAME () TO OUT-S-WRK ()
49       END-PERFORM.
50       PERFORM NUM-RTN VARYING V-CNT FROM 1 BY 1
51                                            UNTIL V-CNT > 3.
52       MOVE OUT-WRK TO CSV-REC.
53       WRITE CSV-REC.
54   NUM-RTN.
55       COMPUTE P-CNT = P-CNT + 1.
56       MOVE SEPARATOR-CHAR TO OUT-S-WRK (P-CNT).
57       MOVE COMP-SUM (V-CNT) TO NUM9-WRK.
58       PERFORM VARYING W-CNT FROM 1 BY 1 UNTIL W-CNT > 7
59                               OR NUMX-WRK (W-CNT) NOT = "0"
60          CONTINUE
61       END-PERFORM.
62       PERFORM VARYING M-CNT FROM 
63          COMPUTE P-CNT = P-CNT + 1
64          MOVE NUMX-WRK (M-CNT) TO OUT-S-WRK (P-CNT)
65       END-PERFORM.

基本情報技術者試験


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

a に関する解答群

ア W-CNT < 1      イ W-CNT > 8      ウ W-CNT > 50

エ W-CNT > L-CNT    オ W-CNT < L-CNT    カ W-CNT > M-CNT

キ W-CNT < M-CNT    ク W-CNT > P-CNT    ケ W-CNT < P-CNT

b,c に関する解答群

ア L-CNT    イ M-CNT    ウ P-CNT    エ V-CNT

オ W-CNT

d に関する解答群

ア L-CNT BY 1 UNTIL M-CNT > 7    イ L-CNT BY 1 UNTIL M-CNT > 8

ウ P-CNT BY 1 UNTIL M-CNT > 7    エ P-CNT BY 1 UNTIL M-CNT > 8

オ W-CNT BY 1 UNTIL M-CNT > 7    カ W-CNT BY 1 UNTIL M-CNT > 8

キ V-CNT BY 1 UNTIL M-CNT > 7    ク V-CNT BY 1 UNTIL M-CNT > 8

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

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

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

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

基本情報技術者試験


設問2  次の記述中の に入れる正しい答えを, 解答群の中から選べ。

 金額が入る項目(売上高,営業利益及び経常利益)が負になった場合に 対応させることになった。 金額が入る項目が負の場合は,項目の左端に“-”が付加されるように, 次のとおりプログラムを変更する。

処置 プログラムの変更内容
行番号 7 を置換 02 COMP-SUM OCCURS 3   PIC S9(08).
行番号 9 〜 11 を置換   RECORD IS VARYING IN SIZE
      FROM 14 TO 87 DEPENDING ON P-CNT.
  01  CSV-REC           PIC X(87).
行番号 15 を置換 02 OUT-S-WRK OCCURS 87   PIC X(01).
行番号 の後に追加 IF THEN
  COMPUTE P-CNT = P-CNT + 1
  MOVE "-" TO OUT-S-WRK (P-CNT)
END-IF.

e に関する解答群

ア 49    イ 53    ウ 54    エ 56    オ 65

f に関する解答群

ア NUM9-WRK < 0        イ NUM9-WRK > 0

ウ COMP-SUM (L-CNT) < 0    エ COMP-SUM (L-CNT) > 0

オ COMP-SUM (M-CNT) < 0    カ COMP-SUM (M-CNT) > 0

キ COMP-SUM (V-CNT) < 0    ク COMP-SUM (V-CNT) > 0

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

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

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