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

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

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

〔プログラムの説明〕

 ある会社では,1年に1回,従業員の定期健康診断を実施し,過去5年分の診断結果を マスタファイルに保管している。

 このプログラムは,別のファイルに記録された今年度の診断結果を,マスタファイルに反映する。

(1) マスタファイルは,次のレコード様式の索引ファイルであり,主レコードキーは 従業員番号である。

 @ 従業員1人に対して1レコードとする。従業員番号が重複することはない。
 A レコードには,過去5年分の診断結果が左から受診年の新しい順で格納されている。 各レコードには少なくとも過去1年分の診断結果が格納されており,就業年数が5年に 満たない場合は残りの領域に空白が詰められている。
 B 診断結果の各項目はいずれも数字で,身長は cm 単位,体重は kg 単位で, それぞれ小数点以下1けたまで記録され,血圧は mmHg 単位の整数として記録されている。

(2) 今年度の診断結果は,次のレコード様式の順ファイルであり,すべての従業員の 情報が順不同で記録されている。同じ従業員番号のレコードが重複して存在することはない。

[プログラム]
(行番号)

 1  DATA DIVISION.
 2  FILE SECTION.
 3  FD MAST-FILE.
 4  01 MAST-REC.
 5     02 MAST-ENO          PIC X(6).
 6     02 MAST-HEALTH       OCCURS 5.
 7        03 MAST-HEIGHT    PIC 9(3)V9(1).
 8        03 MAST-WEIGHT    PIC 9(3)V9(1).
 9        03 MAST-HIGH-BP   PIC 9(3).
10        03 MAST-LOW-BP    PIC 9(3).
1l  FD YEAR-FILE.
12  01 YEAR-REC.
13     02 YEAR-ENO          PIC X(6).
14     02 YEAR-HEALTH.
15        03  YEAR-HEIGHT   PIC 9(3)V9(1).
16        03  YEAR-WEIGHT   PIC 9(3)V9(1).
17        03  YEAR-HIGH-BP  PIC 9(3).
18        03  YEAR-LOW-BP   PIC 9(3).
19  WORKING-STORAGE SECTION.
20  77  READ-FLAG          PIC X(1) VALUE SPACE.
21      88 YEAR-EOF        VALUE "E".
22  77  CNT                PIC 9(1).
23  PROCEDURE DIVISION.
24  MAIN-PROC.
25      OPEN I-O MAST-FILE INPUT YEAR-FILE.
26      PERFORM UNTIL YEAR-EOF
27        READ YEAR-FILE AT END SET YEAR-EOF TO TRUE
28                       NOT AT END PERFORM READ-MAST-PROC
29        END-READ
30      END-PERFORM.
31      CLOSE MAST-FILE YEAR-FILE.
32      STOP RUN.
33  READ-MAST-PROC.
34       .
35      READ MAST-FILE 
36           INVALID KEY DISPLAY "ERROR EMPLOYEE-NO " YEAR-ENO
37           NOT INVALID KEY PERFORM UPDT-PROC
38      END-READ.
39  UPDT-PROC.
40      PERFORM VARYING CNT FROM 4 BY -1 UNTIL CNT = 0
41        
42      END-PERFORM.
43      MOVE YEAR-HEALTH TO MAST-HEALTH(1).
44      REWRITE MAST-REC.
設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

解答群

ア MOVE MAST-HEALTH(CNT + 1) TO MAST-HEALTH(CNT)
イ MOVE MAST-HEALTH(CNT - 1) TO MAST-HEALTH(CNT)
ウ MOVE MAST-HEALTH(CNT) TO MAST-HEALTH(CNT + 1)
エ MOVE MAST-HEALTH(CNT) TO MAST-HEALTH(CNT - 1)
オ MOVE YEAR-ENO TO MAST-ENO
カ MOVE YEAR-HEALTH TO MAST-HEALTH
キ MOVE YEAR-HEALTH TO MAST-HEALTH(CNT)
解答 a ←クリックすると正解が表示されます

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

基本情報技術者試験


設問2 今年度の診断結果をマスタファイルに反映するときに,昨年の体重と比較して 5kg 以上の増減がある従業員をチェックし,対象者の従業員番号を表示するように, プログラムを変更したい。次の表中の に入れる正しい答えを,解答群の中から選べ。

c に関する解答群

ア 行番号 26 と 27 の間         イ 行番号 30 と 31 の間
ウ 行番号 37 と 38 の間         エ 行番号 39 と 40 の間

d に関する解答群

ア MAST-WEIGHT(1) <= MAST-WEIGHT(2) - 5
イ MAST-WEIGHT(1) >= MAST-WEIGHT(2) - 5
ウ YEAR-WEIGHT <= MAST-WEIGHT(1) - 5
エ YEAR-WEIGHT >= MAST-WEIGHT(1) - 5
解答 c ←クリックすると正解が表示されます

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


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