파일이 이미 Cobol에 열려 있는지 확인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2227995

  •  19-09-2019
  •  | 
  •  

문제

파일이 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-STORAGEA로 PIC X(2) 예를 들어 값 :

           01 MYFILE-STATUS   PIC X(2).
              88 MYFILE-ALREADY-OPEN   VALUE '41'.

그런 다음 PROCEDURE DIVISIONan 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.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top