問7
次の COBOL プログラムの説明及びプログラムを読んで,設問 1,2 に答えよ。
〔プログラムの説明〕
ある製造会社では,生産に必要な材料の発注先を材料ごとに決めて,材料別発注先ファイルによって発注先を管理している。 取引が停止された発注先を材料別発注先ファイルから削除する処理を考える。
(1) 材料別発注先ファイルのレコード様式は,次のとおりである。
材料コード
6 けた
発注先件数
1 けた
発注先コード
4 けた
…
材料コードをキーとする索引ファイルである。
発注先件数には,登録されている発注先の件数が記録されている。
材料コードごとに発注先コードが 0 〜 5 件登録されている。
発注先コードは先頭の欄から登録され,登録されていない欄には空白が格納されている。
(2) 削除指示ファイルのレコード様式は,次のとおりである。
材料コード6 けた
発注先コード4 けた
材料コードに対応する材料別発注先ファイルのレコードを読み込み, 該当する発注先コードを削除し,発注先件数を 1 減らす。
削除処理では,(1) の を満たすように材料別発注先ファイルを変更する。
削除指示ファイルのデータは,すべて正しいものとする。
〔プログラム〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD HATCHUSAKI. 4 01 HATCHU-R. 5 03 H-ZAIRYO PIC X(6). 6 03 H-KENSU PIC 9. 7 03 H-TABLE. 8 05 H-HATCHU OCCURS 5 PIC X(4). 9 FD SHIJI. 10 01 SHIJI-R. 11 03 S-ZAIRYO PIC X(6). 12 03 S-HATCHU PIC X(4). 13 WORKING-STORAGE SECTION. 14 01 END-SW PIC X VALUE SPACE. 15 01 CNT PIC 9. 16 01 W-CNT PIC 9. 17 PROCEDURE DIVISION. 18 HAJIME. 19 OPEN INPUT SHIJI I-O HATCHUSAKI. 20 PERFORM UNTIL END-SW = "Z" 21 READ SHIJI AT END MOVE "Z" TO END-SW END-READ 22 IF END-SW = SPACE 23 MOVE S-ZAIRYO TO H-ZAIRYO 24 READ HATCHUSAKI 25 INVALID DISPLAY "READ-ERROR S-ZAIRYO = ", S-ZAIRYO 26 NOT INVALID PERFORM KENSAKU 27 PERFORM D-RTN 28 END-READ 29 END-IF 30 END-PERFORM. 31 CLOSE SHIJI HATCHUSAKI. 32 STOP RUN. 33 KENSAKU. 34 PERFORM VARYING CNT FROM 1 BY 1 UNTIL 35 CONTINUE 36 END-PERFORM. 37 D-RTN. 38 PERFORM UNTIL CNT = H-KENSU 39 COMPUTE W-CNT = CNT + 1 40 MOVE H-HATCHU(W-CNT) TO H-HATCHU(CNT) 41 COMPUTE CNT = CNT + 1 42 END-PERFORM. 43 MOVE SPACE TO H-HATCHU(H-KENSU). 44 COMPUTE H-KENSU = H-KENSU - 1. 45 REWRITE HATCHU-R 46 INVALID DISPLAY "REWRITE-ERROR", H-ZAIRYO, S-HATCHU.
解答群
ア S-HATCHU = H-HATCHU(CNT)
イ S-HATCHU = H-HATCHU(H-KENSU)
ウ S-ZAIRYO = H-ZAIRYO
IF CNT NOT = H-KENSU MOVE H-TABLE TO W-TABLE COMPUTE W1 = COMPUTE W2 = COMPUTE W3 = MOVE W-TABLE(W1:W3) TO H-TABLE(W2:W3) END-IF.
ア CNT * 4 - 1 イ CNT * 4 + 1
ウ (CNT - 1) * 4 - 1 エ (CNT - 1) * 4 + 1
オ (CNT + 1) * 4 - 1 カ (CNT + 1) * 4 + 1
キ (H-KENSU - 1) * 4 + 1 ク (H-KENSU - CNT) * 4 - 1
ケ (H-KENSU - CNT) * 4 コ (H-KENSU - CNT) * 4 + 1