ファイルがCOBOLで既に開かれているかどうかを確認する方法を見つけようとしています。これにより、ファイルが閉じられている場合は開くことができ、開いている場合は閉じることができます。
Thnx。
を確認し、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
コンパイラーは、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.