2010-02-09 221 views

回答

5

檢查FILE STATUS並採取相應措施。

嘗試以下方法:在WORKING-STORAGE

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

聲明一個FILE STATUS變量作爲PIC X(2)值,例如:

添加FILE-STATUSFILE-CONTROL,例如

 
      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 STATUShttp://www.simotime.com/vsmfsk01.htm

+0

日Thnx了很多,尤其是對的鏈接。我對Cobol完全陌生,因此非常感謝您的資源! – doro 2010-02-10 13:39:41

1

你的編譯器也可以提供一個外部API,如CBL_CHECK_FILE_EXIST它可以在微焦點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. 
相關問題