Cobol открыть сообщение об ошибке входного файла
Что такое команда обработки ошибок для открытого файла последовательного ввода?
Я старался,
OPEN INPUT CUSTOMER-FILE
INVALID KEY/ON ERROR
DISPLAY "NO FILE FOUND".
но не мог заставить его работать.
Благодарю.
2 ответа
Решение
В FILE-CONTROL добавьте предложение FILE STATUS в SELECT для вашего файла, а в разделе PROCEDURE DIVISION проверьте значение переменной состояния файла, которую вы указали, относительно документированных значений после каждого взаимодействия с файлом.
Я согласен с использованием статуса файла, он гораздо более гибкий, и вы можете обрабатывать все ошибки в одном решении. Вот большая часть кода, который вам нужен для этого:
FILE-CONTROL.
SELECT FILENAME ASSIGN TO FILENAME
FILE STATUS IS WS-FS-FILENAME.
*I used WS-FS-FILENAME so I know it's declared in Working Storage and connected to File *Section.
DATA DIVISION.
FILE SECTION.
FD FILENAME RECORDING ....
BLOCK ...
RECORD ....
LABEL RECORD ....
DATA RECORD ...
.....
01 FILENAME-REC PIC X(N).
WORKING-STORAGE SECTION.
01 WS-FS-FILENAME PIC XX.
==================================================
OPEN OUTPUT FILENAME.
IF WS-FS-FILENAME NOT = '00' THEN
DISPLAY 'ERROR OPENING FILENAME'
DISPLAY 'ERROR CODE IS : ', WS-FS-FILENAME
PERFORM EXIT-WITH-ERROR
END-IF.
WRITE FILENAME-REC.
IF WS-FS-FILENAME NOT = '00'
DISPLAY 'WRITE ERROR ON FILENAME. '
DISPLAY 'STATUS :' WS-FS-FILENAME
PERFORM EXIT-WITH-ERROR
END-IF.
И так далее с чтением, закрытием.
Вы также можете найти конкретные коды ошибок в документации к Cobol.