平成28年 秋期 基本情報技術者 午後 問10
問10 COBOL
次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 Z社では,毎年実施している従業員の健康診断を今年も実施した。 健康診断の結果は,過去 10 回分が健康診断マスタファイルに記録されている。 このプログラムは,今回の健康診断の結果が記録された結果ファイルを読み込み, 健康診断マスタフアイルに反映する。 (1) 健康診断マスタファイルは,図1に示すレコード様式の順ファイルである。
図1 健康診断マスタファイルのレコード様式 @ 全ての従業員に対するレコードが,従業員番号の昇順に格納される。 A 結果履歴には,当該従業員の過去 10 回分の健康診断の結果が,受診日の降順に格納される。 受診回数が 10 回に満たない場合,残りの結果履歴には全てゼロが設定される。 B 受診日には,年,月,日が,それぞれ4桁,2桁,2桁の西暦で格納される。 C 身長(cm),体重(kg),最高血圧(mmHg,最低血圧(mmHg)には,それぞれの数値が格納される。 身長と体重は小数点以下1桁までが格納される。胸部X線には,所見がない場合は 0 が, 所見がある場合は 1 が格納される。 (2) 結果ファイルは,図2に示すレコード様式の順ファイルである。
結果ファイルのレコード様式 @ 結果ファイルの先頭レコードとして,様式1のレコードが1件だけ格納される。 受診日には,年,月,日が,それぞれ4桁,2桁,2桁の西暦で格納される。 受診日は,健康診断マスタファイルに記録されているどの受診日よりも新しい。 A 2件日以降のレコードとして,受診した従業員の様式2のレコードが順不同で 格納される。受診していない従業員に対するレコードは存在しない。 〔プログラム〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 SD SORT-FILE. 4 Ø1 SORT-REC. 5 Ø2 SORT-NO PIC 9(6). 6 Ø2 SORT-ELM PIC X(15). 7 FD MST-FILE. 8 Ø1 MST-REC. 9 Ø2 MST-NO PIC 9(6). 1Ø Ø2 MST-HISTORY OCCURS 1Ø. 11 Ø3 MST-DATE PIC 9(8) 12 Ø3 MST-ELM. 13 Ø4 MST-HEIGHT PIC 9(3)V9(1). 14 Ø4 MST-WEIGHT PIC 9(3)V9(1). 15 Ø4 MST-HIGHPRES PIC 9(3). 16 Ø4 MST-LOWPRES PIC 9(3). 17 Ø4 MST-XRAY PIC 9(1). 18 FD RSLT-FILE. 19 Ø1 FIRST-REC. 2Ø Ø2 RSLT-DATE PIC 9(8). 21 Ø2 PIC X(13). 22 Ø1 RSLT-REC PIC X(21). 23 WORKING-STORAGE SECTION. 24 77 CNT PIC 9(2). 25 77 NEW-DATE PIC 9(8). 26 77 RSLT-FLAG PIC X(1) VALUE SPACE. 27 88 RSLT-EOF VALUE "E". 28 77 SORT-FLAG PIC X(1) VALUE SPACE. 29 88 SORT-EOF VALUE "E". 3Ø PROCEDURE DIVISION. 31 MAIN-PROC. 32 OPEN I-O MST-FILE INPUT RSLT-FILE. 33 READ RSLT-FILE. 34 . 35 SORT SORT-FILE ASCENDING KEY SORT-NO 36 INPUT PROCEDURE IS REL-PROC 37 OUTPUT PROCEDURE IS RET-PROC. 38 CLOSE MST-FILE RSLT-FILE. 39 STOP RUN. 4Ø REL-PROC. 41 PERFORM UNTIL RSLT-EOF 42 READ RSLT-FILE AT END SET RSLT-EOF TO TRUE 43 NOT AT END 44 END-READ 45 END-PERFORM. 46 RET-PROC. 47 PERFORM UNTIL SORT-EOF 48 RETURN SORT-FILE AT END SET SORT-EOF TO TRUE 49 NOT AT END PERFORM MATCHING-PROC 5Ø END-RETURN 51 END-PERFORM. 52 MATCHING-PROC. 53 READ MST-FILE. 54 PERFORM TEST BEFORE UNTIL 55 READ MST-FILE END-READ 56 END-PERFORM. 57 PERFORM TEST BEFORE VARYING CNT UNTIL CNT = Ø 58 MOVE MST-HISTORY(CNT) TO MST-HISTORY(CNT + 1) 59 END-PERFORM. 6Ø MOVE NEW-DATE TO MST-DATE(1). 61 MOVE SORT-ELM TO MST-ELM(1). 62 REWRITE MST-REC.
a,b に関する解答群 イ MOVE ZERO TO ONT ウ MOVE ZERO TO NEW-DATE エ PERFORM RET-PROC オ RELEASE SORT-REC カ RELEASE SORT-REC FROM RSLT-REC c に関する解答群 ウ MST-NO > SORT-NO エ MST-NO NOT = SORT-NO d に関する解答群 ウ FROM 1Ø BY -1 エ FROM CNT BY 1
図3 確認結果の表示例 〔確認結果の表示についての説明〕 次に該当する従業員は,従業員番号に続けて該当する文字列を表示する。 なお,複数該当する場合は,その全てを表示する。 A 今回と前回の体重を比較して,4kg 以上の増減がある場合は WEIGHT B 今回の最高血圧が 140mmHg 以上(高血圧症状), 又は 90 mmHg 以下(低血圧症状)である場合は BLOOD-PRESSURE C 今回の胸部X線の診断で所見がある場合は XRAY 表1 プログラムの変更内容
e に関する解答群 ウ 行番号 51 と 52 の間 エ 行番号 52 と 53 の間 f に関する解答群 イ MOVE 1Ø TO CNT ウ MOVE MST-DATE(1) TO NEW-DATE エ MOVE ZERO TO NEW-DATE g に関する解答群 MST-WEIGHT(1) <= MST-WEIGHT(2) - 4
イ MST-WEIGHT(1) >= MST-WEIGHT(CNT) + 4 OR
ウ MST-WEIGHT(1Ø) >= MST-WEIGHT(9) + 4 OR
エ MST-WEIGHT(1Ø) >= MST-WEIGHT(CNT) + 4 OR
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||||