IBM i 技術情報|オブジェクトのロック情報をプログラムで取得する方法

2026/04/04IBM i技術情報

鈴木 由臣

株式会社クレスコ・ジェイキューブ
デジタルソリューションセンター

今回のIBM i 技術情報は、オブジェクトのロック情報をプログラムで取得する方法についてご紹介します。

IBM i ではオブジェクトにどのようなロックがかかっているか、そのロック情報を取得する方法として、WRKOBJLCKコマンドが提供されています。しかしWRKOBJLCKコマンドは、結果を画面かスプール出力でしか表示できないため、ロック情報を基にバッチプログラムで処理を継続させるなどは困難でした。

今回ご紹介するQSYS2/OBJ_LOCKファイルにはロック情報が格納されていますので、このファイルを利用してSQLやRPGなどでロック情報を取得すれば、オブジェクトのロックに起因する問題の調査が容易になります。

今回は、CDDBASライブラリーのCDMAPファイルのロック情報を例にご説明します。

(1)あらかじめCDDBAS/CDMAPファイルに排他ロックをかけておきます。   

ALCOBJ OBJ((CDDBAS/CDMAP *FILE *EXCLRD))

WRKOBJLCKコマンドで排他ロックがかかっていることを確認します。    

WRKOBJLCK OBJ(CDDBAS/CDMAP) OBJTYPE(*FILE)

(2) SQLのSELECTステートメントでQSYS2/OBJ_LOCKファイルからロック情報を取得します。

SELECT * FROM QSYS2/OBJ_LOCK
         WHERE SYS_DNAME = ‘CDDBAS’AND
                SYS_ONAME = ‘CDMAP’ AND
               OBJTYPE   = ‘*FILE’

・SYS_DNAME:ロック対象のオブジェクトのライブラリー名を指定
・SYS_ONAME:ロック対象のオブジェクト名を指定
・OBJTYPE  :ロック対象のオブジェクトのオブジェクト対応タイプを指定

ロック情報として、ロックの状態、ジョブ名、プログラム名などが取得できます。

ファイルのロック情報を確認できずにプログラムが異常終了するような場合は、QSYS2/OBJ_LOCKファイルからロック情報を取得してログ出力する仕組みなどを構築しておけば、待ちジョブの増加などの原因を短時間で特定することが期待できます。

お知らせ・新着コンテンツ一覧にもどる

ホーム > IBM i 技術情報|オブジェクトのロック情報をプログラムで取得する方法

CONTACT US

メールでのお問い合わせ