2016-04-06 11 views
0

SAG Naturalでworkfilesを作成するjobmがあります。それらが作成された後、私は複数あり、それからftpを追加したいと思います。 append/ftpは、それらを作成するジョブとは独立して実行されます。これは、現在作成中のファイルをftp/appendしようとする問題を引き起こします。FTP/Appendの前にOpenVMSでファイルが開いているかどうかを確認してください。

OpenVMSまたはFTPに、ロジックを続行する前にファイルがオープン/ロックされているかどうかを確認できる構文はありますか?

+0

をお楽しみください!共有書き込みが許可されていない場合は、書き込み用に開くことができます(DCL 'OPEN/WRITE')。ファイルが開いていれば、それは失敗します。クラスタ内の – HABO

答えて

0

SHOW DEVICE /FILEは役に立ちますか?ファイルが開いている場合は、そのコマンドの出力に表示されます。

+0

は 'mc sysman set env/clu'の後に' do pipe sh dev/fil disk |検索sys $パイプファイル '私たちはOpenVMSでinotifyが不足しています – user2915097

1

私は書き込みのために開こうとしません...それは他の人をロックアウトし、改訂日/カウントを変更する可能性があるためです。 代わりに$ OPEN/READ/SHARE = READ FILEを試してみてください...

実際にファイルハンドルを使ってデータを読み取ることができます。テストと使用。 しかし、小さなバッファを使用するDCL IOを使用しています。 以下の例は、ほとんどが楽しみのためにこれを示しています:APPEND FILE ... この例は、私が怠け者だったために出力をハードコードしています。 最初に成功したらファイルを閉じてから、APPEND/LOGを使用する方がよいでしょう。

は、ファイルの共有状態を知っていますか、 ハイン

$ output = "tmp.tmp" 
$ if p1.eqs."" then exit 16 
$ create tmp.tmp 
$ old = "" 
$loop: 
$ file_name = f$search(p1) 
$ if file_name .eqs. "" .or. file_name .eqs.old then exit 
$ old = file_name ! Handle non-wildcarded input 
$ close/nolog file 
$ open/read/share=read/erro=locked_or_other_error file 'file_name' 
$ append file tmp.tmp ! /log 
$ write sys$error "Appended ", file_name 
$ close/nolog file 
$ goto loop 
$locked_or_other_error: 
$ write sys$error "Found, but could not open file ", file_name 
$ goto loop 
関連する問題