東京理科大学 infoserv[更新日]2001.4.20


問7

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

〔プログラムの説明〕

ある製造会社では,生産に必要な材料の発注先を材料ごとに決めて,材料別発注先ファイルによって発注先を管理している。 取引が停止された発注先を材料別発注先ファイルから削除する処理を考える。

(1) 材料別発注先ファイルのレコード様式は,次のとおりである。

材料コード

6 けた

発注先件数

1 けた

発注先コード

4 けた

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.

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

解答群

ア S-HATCHU = H-HATCHU(CNT)

イ S-HATCHU = H-HATCHU(H-KENSU)

ウ S-ZAIRYO = H-ZAIRYO


設問2  繰返しを避けるために,プログラムの行番号 38 〜 42 を変更する。 に入れる正しい答えを,解答群の中から選べ。
 なお,作業領域として,W1,W2 及び W3 をいずれも数字 2 けた,W-TABLE を英数字 20 けたの項目として定義する。

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


東京理科大学 infoserv 戻る 次頁:問08