2010-02-09 4 views

답변

5

FILE STATUS을 확인한 후 그에 따라 조치하십시오.

는 예를 들어, FILE-CONTROL 아래 FILE-STATUS 추가 :

 
    FILE-CONTROL. 
     SELECT MYFILE ASSIGN MYDD 
       ORGANIZATION SEQUENTIAL 
       ACCESS  SEQUENTIAL 
       FILE STATUS MYFILE-STATUS. 

FILE STATUS 변수를 선언 WORKING-STORAGEPIC X(2) 값으로, 예를 들면 :

는 다음 시도

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

PROCEDURE DIVISION 파일의 경우 OPEN을 발행하십시오. 바로 그 아래에서와 같이 FILE STATUS 의 값을 테스트 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 

값의 첫 번째 문자가 '9'없는 곳 COBOL 기준 값 그래서를 검출 '(41)'의 테스트 이미 열려있는 파일 은 모든 COBOL 구현에서 작동해야합니다. 첫 문자가 '9'인 경우 이 업체별 파일 상태 코드임을주의하십시오. COBOL FILE STATUS를 사용하여 좋은 소개는 다음 링크를 체크 아웃 : http://www.simotime.com/vsmfsk01.htm

+0

Thnx 많은, 특히 링크. 나는 Cobol에 완전히 익숙하지 않기 때문에 자원을 높이 평가합니다! – doro

1

귀하의 컴파일러는 CBL_CHECK_FILE_EXIST와 같은 마이크로 포커스 COBOL, AcuCOBOL 및 Fujutsu COBOL에서 찾을 수있는 외부 API를 제공 할 수 있습니다. 마이크로 포커스 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. 
관련 문제