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

令和元年 秋期 基本情報技術者 午後 問10
問10   COBOL

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

 

〔プログラムの説明〕

 ある地域で 5 店舗のスーパマーケットを展開するW社では,全店舗で弁当を販売している。 どの店舗も,1日に仕入れる弁当の個数は,一つの種類について 50 個以内である。 売れ残ってしまう弁当を減らす目的で,18 時以降は正価の 20 %引きで, 19 時以降は正価の 50 %引きで販売している。閉店後は売れ残った弁当を廃棄し, 販売状況を分析して,翌営業日の仕入れの参考にしている。

 このプログラムは,販売ファイルに格納された弁当の販売データを読み込み, 店舗ごとに集計して,販売リストに印字する。

 

(1) 販売ファイル SAL-FILE は,図1に示すレコード様式の順ファイルであり, 全 5 店舗で1日に販売又は廃棄した弁当のデータが格納されている。 弁当1個に対して 1 レコードが作成される。

図1 販売ファイルのレコード様式

 

@ 店舗番号には,店舗の番号が 01〜05 で格納されている。

A 弁当種別には,弁当の種類ごとに一意に割り振られた番号が格納されている。

B 値引率には,正価で販売した場合は 000 が,20 %引きで販売した場合は 020 が, 50 %引きで販売した場合は 050 が,廃棄した場合は 100 が格納されている。

 

(2) 販売リストの印字様式を,図2に示す。見出しは印刷済みとする。

図2 販売リストの印字様式

 

@ 販売個数には,販売した弁当の個数を印字する。廃棄した分は合めない。

A 平均値引率には,弁当種別ごとに,販売した弁当の値引率の平均を印字する。 廃棄した分は含めない。全ての弁当を廃棄した場合は,0 を印字する。

B 販売リストには,図3の印字例のように,店舗番号及び弁当種別の昇順に印字する。

 

図3 販売リストの印字例

 

〔プログラム〕

(行番号)
 1  DATA DIVISION.
 2  FILE SECTION.
 3  SD SRT-FILE.
 4  Ø1 SRT-REC.
 5     Ø2 SRT-STOR      PIC 9(2).
 6     Ø2 SRT-CODE      PIC 9(4).
 7     Ø2 SRT-DSCT      PIC 9(3).
 8  FD SAL-FILE.
 9  Ø1 SAL-REC          PIC X(9).
1Ø  FD PRT-FILE.
11  Ø1 PRT-REC.
12     Ø2 PRT-STOR      PIC 9(2).
13     Ø2 PRT-SP1       PIC X(8).
14     Ø2 PRT-CODE      PIC 9(4).
15     Ø2 PRT-SP2       PIC X(6).
16     Ø2 PRT-SALNO     PIC Z9.
17     Ø2 PRT-SP3       PIC X(8).
18     Ø2 PRT-DSCT      PIC Z9.
19     Ø2 PRT-SP4       PIC X(1Ø).
2Ø     Ø2 PRT-DSPNO     PIC Z9.
21  WORKING-STORAGE SECTION
22  77 SRT-FLAC      PIC X(1) VALUE SPACE.
23     88 SRT-EOF       VALUE "E".
24  77 CR-STOR       PIC 9(2) VALUE ZERO.
25  77 CR-CODE       PIC 9(4).
26  77 W-SALNO       PIC 9(2).
27  77 W-DSPNO       PIC 9(2).
28  77 W-TOTAL       PIC 9(4).
29  77 W-DSCT        PIC 9(2).
3Ø  PROCEDURE DIVISION.
31  MAIN-PROC.
32      OPEN OUTPUT PRT-FILE.
33      SORT SRT-FILE ASCENDING KEY SRT-STOR SRT-CODE
34           USING SAL-FILE
35           OUTPUT PROCEDURE IS RET-PROC.
36      CLOSE PRT-FILE.
37      STOP RUN.
38  RET-PROC.
39      PERFORM UNTlL SRT-EOF
4Ø         RETURN SRT-FILE AT END     SET SRT-EOF TO TRUE
41                         NOT AT END PERFORM CAL-PROC
42         END-RETURN
43      END-PERFORM.
44      PERFORM PRT-PROC.
45  CAL-PROC.
46      IF a THEN
47         PERFORM PRT-PROC
48         MOVE ZERO TO b
49         MOVE SRT-STOR TO CR-STOR
5Ø         MOVE SRT-CODE TO CR-CODE
51      END-IF.
52      IF SRT-DSCT = 1ØØ THEN
53         ADD 1 TO W-DSPNO
54      ELSE
55         ADD 1 TO W-SALNO
56         c
57      END-IF.
58  PRT-PROC.
59      IF d THEN
6Ø         INITIALIZE PRT-REC
61         MOVE CR-STOR TO PRT-STOR
62         MOVE CR-CODE TO PRT-CODE
63         MOVE W-SALNO TO PRT-SALNO
64         IF W-SALNO NOT = ZERO THEN
65            COMPUTE W-DSCT = W-TOTAL / W-SALNO
66            MOVE W-DSCT  TO PRT-DSCT
67         END-IF
68         MOVE W-DSPNO TO PRT-DSPNO
69         WRITE PRT-REC
7Ø      END-IF.

 

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

 

a に関する解答群 ア SRT-STOR = CR-STOR AND SRT-CODE = CR-CODE

イ SRT-STOR = CR-STOR OR SRT-CODE = CR-CODE

ウ SRT-STOR NOT = CR-STOR AND SRT-CODE NOT = CR-CODE

エ SRT-STOR NOT = CR-STOR OR SRT-CODE NOT = CR-CODE

 

b に関する解答群 ア CR-STOR CR-CODE       イ PRT-SALNO PRT-DSPNO

ウ PRT-STOR PRT-CODE      ウ W-DSCT

オ W-SALNO W-DSPNO W-TOTAL

 

c に関する解答群 ア ADD 1 TO W-TOTAL         イ ADD SRT-DSCT TO W-TOTAL

ウ MOVE SRT-DSCT TO W-TOTAL    エ MOVE ZERO TO SRT-DSCT

オ MOVE ZERO TO W-DSPNO

 

d に関する解答群 ア CR-STOR = ZERO       イ CR-STOR NOT = ZERO

ウ NOT SRT-EOF        エ SRT-EOF

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

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

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

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

 

基本情報技術者試験


設問2  図4に示すとおり,販売リストに販売グラフを追加して印字するようにプログラムを変更する。 表1中の    に入れる正しい答えを,解答群の中から選べ。

 

図4 販売グラフを追加した販売リストの印字例

 

〔販売グラフの説明〕

 弁当を正価で販売した場合は“0”を,20 %引きで販売した場合は“o”を, 50 %引きで販売した場合は“-”を,廃棄した場合は“*”を,該当する個数だけ,この順で印字する。

 

表 1 プログラムの変更内容
   処置         変更内容  
行番号 20 と 21 の間
に追加  

 Ø2 PRT-SP5       PIC X(8).
 Ø2 PRT-GRAPH     PIC X(5Ø).  
行番号 29 と 30 の間
に追加  

 77 W-DSCTØØ   PIC 9(2).
 77 W-DSCT2Ø   PIC 9(2).
 77 W-DSCT5Ø   PIC 9(2).
 77 W-POS      PIC 9(2).   
行番号 47 と 48 の間
に追加  

 MOVE ZERO TO W-DSCTØØ W-DSCT2Ø W-DSCT5Ø
e
に追加  

 EVALUATE SRT-DSCT
    WHEN Ø
       ADD f TO W-DSCTØØ
    WHEN 2Ø
       ADD f TO W-DSCT2Ø
    WHEN 5Ø
       ADD f TO W-DSCT5Ø
 END-EVALUATE
行番号 68 と 69 の間
に追加  

 MOVE 1 TO W-POS
 IF W-DSCTØØ > ZERO THEN
    MOVE ALL "O" TO PRT-GRAPH(W-POS:W-DSCTØØ)    
    ADD W-DSCTØØ TO W-POS
 END-IF
 IF W-DSCT2Ø > ZERO THEN
    MOVE ALL "o" TO PRT-GRAPH(W-POS:W-DSCT2Ø)
    ADD W-DSCT2Ø TO W-POS
 END-IF
 IF W-DSCT5Ø > ZERO THEN
    MOVE ALL "-" TO PRT-GRAPH(W-POS:W-DSCT5Ø)
    ADD W-DSCT5Ø TO W-POS
 END-IF
 IF W-DSPNO > ZERO THEN
    MOVE ALL "*" TO PRT-GRAPH(W-POS:W-DSPNO)
 END-IF

 

e に関する解答群 ア 行番号 50 と 51 の間      イ 行番号 53 と 54 の間

ウ 行番号 56 と 57 の間      エ 行番号 59 と 60 の間

 

f に関する解答群 ア 1         イ W-DSCT       ウ W-DSPNO

エ W-SALNO      オ W-TOTAL

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

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


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