メニューボタン
サポートチーム便り2024.03.27

IFS上のオブジェクトロックをSQLで確認できませんか?

Question

IFS上のSTMFを操作しようとした時、CPFA09E (オブジェクトが使用中。オブジェクトは〇〇です) が出てしまい操作できませんでした。

処理をリトライする前にロック状態が解除されているのか確認したいのですが、コマンドやSQLで簡単に確認できないでしょうか。

Answer

API QP0FPTOSを使用する方法であれば、過去の記事にて案内がございます。

コマンドを実行すると結果としてスプールファイルが出力されるので「Use Count」の項目を確認するのも良いかと思います。

IFS内ファイルを誰がロックしているかを確認したい
https://www.e-bellnet.com/category/technology/2304/2304-04.html

その他としては IFS_OBJECT_LOCK_INFO 表関数を使用する方法もあります。

IFS_OBJECT_LOCK_INFO 表関数
https://www.ibm.com/docs/ja/i/7.5?topic=services-ifs-object-lock-info-table-function
※IBM i v7.3以降で使用できる表関数です。

ロック状況を確認したいSTMFを「/home/tsuki/@qrydfn.csv」として、ACSの"SQLスクリプトの実行"機能から実行してみます。

今回は分かり易くするために PATH_NAME と JOB_NAME の情報を抽出します。

例:SELECT PATH_NAME,JOB_NAME FROM TABLE(QSYS2.IFS_OBJECT_LOCK_INFO(PATH_NAME => '/home/tsuki/@qrydfn.csv')) 

※ PATH_NAME:ロック状況を確認したいIFS上のパスおよびファイル名
※ JOB_NAME:ファイルまたはディレクトリーをロックしているジョブ名

オブジェクトがロックされていると画像のように結果が返ります。

ロックが解除されていれば、ロックしているジョブ名などは返ってきません。

この状態になっていることを確認してから処理を再実行してみてください。

どちらも端的に確認できる方法ですので一度試してみて頂ければと思います。

IFS_OBJECT_LOCK_INFO 表関数 には JOB_NAME 以外にもカラムがあるので、欲しい情報に合わせて指定してみてください。

by 槻樹

あわせて読みたい記事

PAGE TOP