1

次のようなファイル制御を備えた COBOL プログラム:

SELECT D-FLAT-FILE ASSIGN TO DFLAT-FILE
       ORGANIZATION IS INDEXED
       ACCESS MODE IS SEQUENTIAL 
       FILE STATUS IS RECORD-STAT
       RECORD KEY IS D_KEY OF D-FLAT-FILE DESCENDING WITH DUPLICATES.


SELECT C-MAST-FILE ASSIGN TO CMAST-FILE
       ORGANIZATION IS INDEXED
       ACCESS MODE IS DYNAMIC 
       FILE STATUS IS RECORD-STAT
       RECORD KEY IS C_KEY OF C-MAST-FILE.

次のように、最初のフラット ファイルからレコードを読み取ります。

PROCESSING.
    READ D-FLAT-FILE NEXT RECORD
        AT END ....END READ.

次のように、2 番目の DYNAMIC ファイルのレコードを読み取ります。

READ C-MAST-FILE RECORD
     INVALID KEY
     GO TO PROCESSING.

1つのケースを除いて、すべてがうまく機能します。1 番目のフラット ファイルの 1 番目のレコードが 2 番目の動的ファイルのどのレコードとも一致しない場合、プログラムは GO TO PROCESSING を実行する代わりに無限ループに入ります。すべてマニュアルに従って、マニュアルを確認しました(VAX Cobolです)。私は何が欠けていますか?

4

1 に答える 1

1

ベスト プラクティスは、ファイルごとに異なる FILE STATUS 変数を使用することです。あなたの場合、問題を確認するのに十分なコンテキストを示していません。しかし、RECORD-STAT を見てループしている場合は、C-MAST-FILE からの読み取りの失敗が原因である可能性があります。

于 2011-09-29T22:33:41.590 に答える