3

ファイルがCOBOLで既に開かれているかどうかを確認する方法を見つけようとしています。これにより、ファイルが閉じられている場合は開くことができ、開いている場合は閉じることができます。

Thnx。

4

2 に答える 2

6

を確認し、FILE STATUSそれに応じて行動してください。

次のことを試してください。

たとえば、のFILE-STATUS下にを追加します。FILE-CONTROL

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

FILE STATUS変数を値WORKING-STORAGE として宣言しますPIC X(2)。次に例を示します。

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

次に、PROCEDURE DIVISION問題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

最初の文字が「9」ではない場合の値FILE STATUSはCOBOL標準値であるため、すでに開いているファイルを検出するための「41」のテストは、すべてのCOBOL実装で機能するはずです。最初の文字が「9」の場合は注意してください。これらはベンダー固有のファイルステータスコードです。COBOLの使用方法については、次のリンクを確認してください。httpFILE STATUS : //www.simotime.com/vsmfsk01.htm

于 2010-02-09T15:04:11.603 に答える
1

コンパイラーは、Micro Focus COBOL、AcuCOBOL、およびFujutsuCOBOLにあるCBL_CHECK_FILE_EXISTなどの外部APIも提供する場合があります。

たとえば、MicroFocusCOBOLでは次のようになります。

 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.
于 2010-02-15T14:07:17.313 に答える