2010-02-09 130 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. 
相关问题