バッチ処理内でIFASコピーコマンドを利用し、RDBからデータ出力を行っています。
ただ、[コピー元]のファイルに、別プログラムでファイルアクセスがある場合、IFASコピーが待ち状態になってしまいます。
そのため、別プログラムでファイルアクセスがある場合には処理を中断したいと考えています。
ファイルアクセスの有無をバッチ内で実行することは可能でしょうか。
可能な場合に、その方法(コマンド)を教えていただけないでしょうか。
申し訳ありませんが、IFASPROでは、バッチ内にてファイルアクセス状況を確認する機能は提供しておりません。
そのため、運用にて該当ファイルにアクセスしないように対応して頂けますようお願いたします。
ただ、下記の方法にて対応できる可能性がございますので、対処案を2点ほど回答させていただきます。
案1.
別プログラムでファイルをアクセス中の場合、待ち合わせを行わず、IFCPYCOMコマンドがエラーになるようにする
1.運用支援ツールを起動する
「スタート」-「プログラム」-「IFASPRO」-「運用支援ツール」
2.「COBOL設定」タブの「OS互換モード」を"A-VXⅡ"から"A-VX5"に変更する
上記手順を実施いただくことで、ファイルの待ち合わせを行わずにエラーにすることが可能となります。
ただし、上記設定は、COBOLから利用する全てのプログラムにも影響がありますので、他のプログラムへの影響確認など注意が必要です。
上記変更による影響については、詳しくは、マニュアルの「4-2-2 動作環境の設定」の「(1) OS互換モード」をご参照願います。
案2.
該当ファイルをオープンするC言語プログラムを作成し、別プログラムからファイルをオープン中であるか確認する。
C言語プログラムでは、別プログラムがファイルをオープンしている場合、待ち合わせを行わず、即時エラー(エラーコード:205)となります。
そのため、C言語プログラムにて該当ファイルをオープンする事により、ファイルがオープン中であるかどうかを判断する事が可能となります。
※ただし、プログラムを実行した時点のアクセス状況の確認となりますので、確認直後に別プログラムにてファイルがオープンされた場合は、待ち合わせが発生する可能性があります。
【確認済みのバージョン】4.0
【確認済みの対象OS】Windows
【カテゴリー】運用/設定