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

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

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

〔プログラムの説明〕

 X社では,特定の商品の売上傾向を分析するために,2年分の売上についてグラフ化することにした。 このプログラムは,分析する商品の商品コードをパラメタで受け取り, 全ての商品の売上データが記録されている売上ファイルから当該商品の売上を 月ごとに集計して,結果を図1に示すように印字する。

図1 売上グラフの例

(1) 売上グラフは,2012 年4月〜2014 年3月の各月の売上を表す。

@ 縦軸の数値は売上金額(単位は万円)で,下段から,1〜 100,000 円,100,001 〜 200,000 円 , …,900,001 〜 1,000,000円を表す。

A 横軸の数値は月で,左端から,2012 年4月,2012 年5月,…,2014 年3月を表す。

B 縦軸と横軸の数値は,用紙にあらかじめ印字されている。

(2) 売上ファイルは,図2に示すレコード様式の順ファイルで,X社が扱う全ての 商品の 2012 年4月〜 2014 年3月の各営業日の売上データが格納されている。 レコードは売上日の昇順に整列されている。

図2 売上ファイルのレコード様式

@ 売上日には,年,月, 日が,それぞれ4桁,2桁,2桁の西暦で格納されている。

A 商品コードには,販売した商品のコードが格納されている。商品コードは, 商品ごとに一意に割り当てられている。

B 取引先コードには,商品を販売した取引先のコードが格納されている。 取引先コードは,取引先ごとに一意に割り当てられている。

C 各商品の月ごとの売上金額は,1〜 999,999 円とする。

〔プログラム〕

(行番号)

 1   DATA DIVISION.
 2   FILE SECTION.
 3   FD S-FILE.
 4   Ø1 S-REC.
 5      Ø2 S-DATE.
 6         Ø3 S-YYYY      PIC 9(4).
 7         Ø3 S-MM        PIC 9(2).
 8         Ø3 S-DD        PIC 9(2).
 9      Ø2 S-GOODS     PIC 9(5).
10      Ø2 S-QUANTITY  PIC 9(4).
11      Ø2 S-AMOUNT    PIC 9(8).
12      Ø2 S-CUSTOMER  PIC 9(4).
13   FD P-FILE.
14   Ø1 P-REC          PIC X(8Ø).
15   WORKING-STORAGE SECTION.
16   77 EOF-FLAG     PIC X(1).
17      88 S-INIT    VALUE SPACE.
18      88 S-EOF     VALUE "E".
19   77 IX-LINE      PIC 9(2).
20   77 IX-COL       PIC 9(2).
21   77 CR-MONTH     PIC 9(2).
22   Ø1 AMOUNT-DATA.
23      Ø2 AMOUNT-MONTH OCCURS 24 PIC 9(6).
24   Ø1 PRINT-TABLE.
25      Ø2 PRINT-LINE  OCCURS 1Ø.
26         Ø3              PIC X(6).
27         Ø3 PRINT-ELM   OCCURS 24.
28            Ø4 PRINT-MK   PIC X(2).
29            Ø4            PIC X(1).
30   LINKAGE SECTION.
31   77 PRM-GOODS    PIC 9(5).
32   PROCEDURE DIVISION USING PRM-GOODS.
33   MAIN-PROC.
34       SET S-INIT TO TRUE.
35       INITIALIZE AMOUNT-DATA.
36       MOVE 4 TO CR-MONTH.
37       MOVE 1 TO IX-COL.
38       OPEN INPUT  S-FILE
39            OUTPUT P-FILE.
40       PERFORM UNTIL S-EOF
41          READ S-FILE
42             AT END     SET S-EOF TO TRUE
43             NOT AT END IF S-GOODS = PRM-GOODS THEN
44                           PERFORM ADD-PROC
45                        END-IF
46          END-READ
47       END-PERFORM.
48       PERFORM PRINT-PROC.
49       CLOSE S-FILE P-FILE.
50       EXIT PROGRAM.
51   ADD-PROC.
52       IF CR-MONTH NOT = S-MM THEN
53          
54          ADD 1 TO IX-COL
55       END-IF.
56       
57   PRINT-PROC.
58       MOVE SPACE TO PRINT-TABLE.
59       PERFORM VARYING IX-COL FROM 1 BY 1 UNTIL IX-COL > 24
60          COMPUTE IX-LINE = (AMOUNT-MONTH(IX-COL) + 99999) / 1ØØØØØ
61          MOVE ALL"*" TO 
62       END-PERFORM.
63       PERFORM VARYING IX-LINE FROM 1Ø BY -1 UNTIL IX-LINE = Ø
64          WRITE P-REC FROM PRINT-LINE(IX-LINE)
65       END-PERFORM.

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

a,b に関する解答群

ア ADD 1 TO CR-MONTH

イ ADD S-AMOUNT TO AMOUNT-MONTH(IX-COL)

ウ MOVE 1 TO CR-MONTH

エ MOVE S-AMOUNT TO AMOUNT-MONTH(CR-MONTH)

オ MOVE S-MM TO CR-MONTH

カ MOVE S-MM TO IX-LINE IX-COL

c に関する解答群

ア PRINT-ELM(IX-COL, IX-LINE)      イ PRINT-ELM(IX-LINE, IX-COL)

ウ PRINT-MK(IX-COL,IX-LINE)      エ PRINT-MK(IX-LINE, IX-COL)

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

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

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

設問2 図1に示すグラフでは,季節変動がある商品の中長期的な傾向の 分析は難しいことが分かった。そこで,図3に示す Z チャートを表示するように プログラムを変更することにした。表1中の に入れる正しい答えを, 解答群の中から選べ。ここで,表1中の には 設問1の正しい答えが入っているものとする。

図3 Z チャートの例

[Zチャートの説明]

 ある月を起点に,各月の売上,起点からの売上累計,その月を含む過去1年間の 売上合計を表すグラフである。これら三つのグラフを重ね合わせると Z の形に なることから Z チャートと呼ばれ,季節変動のある商品の売上傾向を 分析する際などに用いられる。

〔図3の説明〕

(1) 縦軸の数値は売上金額(単位は万円)で,下段から,1〜 500,000 円, 500,001 〜 1,000,000 円,…,11,500,001 〜 12,000,000 円を表す。

(2) 横軸の数値は月で,左端から,2013 年4月,2013 年5月,…,2014 年3月を表す。

(3) 2013 年4月を起点として,各月の売上,起点からの売上累計,その月を 含む過去1年間の売上合計を,それぞれ記号 "*","@","#" で印字する。 ここで,印字が重なる場合は,優先順位("#" > "@" > "*")の高い方を印字する。

(4) 縦軸と横軸の数値は,用紙にあらかじめ印字されている。

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

d 〜 f に関する解答群

ア ADD AMOUNT-MONTH(IX-AMOUNT)TO Z-TOTAL

イ ADD AMOUNT-MONTH(IX-AMOUNT)TO Z-YEAR

ウ ADD Z-TOTAL TO Z-YEAR

エ COMPUTE Z-YEAR = Z-YEAR

      + AMOUNT-MONTH(IX-AMOUNT) - AMOUNT-MONTH(IX-AMOUNT - 12)

オ COMPUTE Z-YEAR = Z-YEAR + Z-TOTAL + AMOUNT-MONTH(IX-COL - 1)

カ MOVE AMOUNT-MONTH(IX-COL) TO Z-TOTAL

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

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

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


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