파일이 이미 Cobol에 열려 있는지 확인하는 방법은 무엇입니까?
문제
파일이 COBOL에서 이미 열렸는지 확인하는 방법을 찾으려고 노력하고있어 닫히거나 열면 닫을 수 있도록 파일을 열 수 있습니다.
Thnx.
해결책
을 체크하다 FILE STATUS
그리고 그에 따라 행동하십시오.
다음을 시도하십시오.
을 추가하다 FILE-STATUS
아래의 FILE-CONTROL
, 예를 들어:
FILE-CONTROL.
SELECT MYFILE ASSIGN MYDD
ORGANIZATION SEQUENTIAL
ACCESS SEQUENTIAL
FILE STATUS MYFILE-STATUS.
선언 a FILE STATUS
변수 WORKING-STORAGE
A로 PIC X(2)
예를 들어 값 :
01 MYFILE-STATUS PIC X(2).
88 MYFILE-ALREADY-OPEN VALUE '41'.
그런 다음 PROCEDURE DIVISION
an 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
다른 팁
컴파일러는 CBL_CHECK_FILE_EXIST와 같은 외부 API를 제공 할 수 있으며, 이는 마이크로 포커스 COBOL, ACUCOBOL 및 FUJUTSU COBOL에서 찾을 수 있습니다.
예를 들어, 마이크로 포커스 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.
제휴하지 않습니다 StackOverflow