开发者

Dynamic READ ...RECORD INVALID KEY not working properly in COBOL. How to fix it?

开发者 https://www.devze.com 2023-02-22 09:10 出处:网络
A Cobol program with file-control like so: SELECT D-FLAT-FILE ASSIGN TO DFLAT-FILE ORGANIZATION IS INDEXED

A Cobol program with file-control like so:

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.

reads a record from the first flat file like so:

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

and reads a record on the second DYNAMIC file like so:

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

All works well except for 1 case. If the 1st record from the 1st flat file does not match any records on the 2nd dynamic file, the program goes into an infinit开发者_如何学Pythone loop instead of doing GO TO PROCESSING. I checked the manuals, all as per manual (it is the VAX Cobol). What am I missing?


Best practice is to use a different FILE STATUS variable for each file. In your case you haven't shown us enough context to see the problem. But if you are in a loop looking at RECORD-STAT, then it is possible that the failed read from C-MAST-FILE is giving you grief.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号