Я пытаюсь найти способ проверить, открыт ли файл в COBOL, чтобы я мог открыть его, если он закрыт или закрыть его, если он открыт.Как проверить, открыт ли файл в COBOL?
Thnx.
Я пытаюсь найти способ проверить, открыт ли файл в COBOL, чтобы я мог открыть его, если он закрыт или закрыть его, если он открыт.Как проверить, открыт ли файл в COBOL?
Thnx.
Проверьте 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
для . Сразу же после этого, проверить значение 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
Ваш компилятор может также обеспечить внешний API, такие как CBL_CHECK_FILE_EXIST, который можно найти на Micro Focus COBOL, AcuCOBOL и Fujutsu COBOL.
Например, Micro Focus COBOL:
copy "cblproto.cpy".
program-id. MYMAIN.
working-storage section.
01 .
05 file-details cblt-fileexist-buf.
procedure division.
call 'CBL_CHECK_FILE_EXIST' using 'mymain.cbl '
file-details
if return-code not = 0
display "File mymain.cbl does not exist (or error)"
else
display "File mymain.cbl size is " cblt-fe-filesize
of file-details
end-if
end program MYMAIN.
Thnx много, особенно для ссылки. Я абсолютно не знаком с Cobol, поэтому ресурс высоко оценен! – doro