Динамический READ ... RECORD INVALID KEY не работает должным образом в COBOL.Как это исправить? - PullRequest
1 голос
/ 04 апреля 2011

Программа на 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.

и читает запись во втором ДИНАМИЧНОМ файле следующим образом:

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

Все работает хорошо, за исключением 1 случая. Если 1-я запись из 1-го плоского файла не совпадает ни с одной записью во 2-м динамическом файле, программа переходит в бесконечный цикл вместо выполнения GO TO PROCESSING. Я проверил руководства, все в соответствии с руководством (это VAX Cobol). Чего мне не хватает?

1 Ответ

1 голос
/ 30 сентября 2011

Рекомендуется использовать разные переменные FILE STATUS для каждого файла.В вашем случае вы не показали нам достаточно контекста, чтобы увидеть проблему.Но если вы в цикле просматриваете RECORD-STAT, то, возможно, неудачное чтение из C-MAST-FILE вызывает у вас горе.

...