Отметьте FILE STATUS
и действуйте соответственно.
Попробуйте следующее:
Добавьте FILE-STATUS
под FILE-CONTROL
, например:
FILE-CONTROL.
SELECT MYFILE ASSIGN MYDD
ORGANIZATION SEQUENTIAL
ACCESS SEQUENTIAL
FILE STATUS MYFILE-STATUS.
Объявление переменной FILE STATUS
в WORKING-STORAGE
в качестве значения PIC X(2)
, например:
01 MYFILE-STATUS PIC X(2).
88 MYFILE-ALREADY-OPEN VALUE '41'.
Затем в PROCEDURE DIVISION
выдайте OPEN
для вашего
файл. Сразу после этого проверьте значение FILE STATUS
как в:
OPEN MYFILE....
IF MYFILE-ALRADY-OPEN
CLOSE MYFILE...
END-IF
IF MYFILE-STATUS <> '00'
perform some sort of general error routine
END-IF
Значения FILE STATUS
, где первый символ не является '9', являются
Стандартные значения COBOL, поэтому тестирование на «41» для обнаружения уже открытого файла
должен работать на всех реализациях COBOL. Остерегайтесь, когда первый символ «9»,
это специфичные для поставщика коды состояния файлов. Проверьте следующую ссылку для
хорошее введение в использование COBOL FILE STATUS
: http://www.simotime.com/vsmfsk01.htm