実行環境

91. オブジェクトがどこにあるか調べるには ?

あるオブジェクトがどのライブラリーにあるのか調べたいときがある。
PDM でやみくもに、あちこちと探すのは論理的ではないし
アテもののようなものである。
ファイルであれば QSYS/QADBXREF の中を QUERY で調べることもできるが
データ・ベースではないオブジェクトをどのように探せばよいだろうか ?

例えばコマンド: RTVOBJD を使ってもライブラリーの指定は
*LIBL または *CURLIB して指定することができない。
同様にオブジェクトの検索API: QRTVOBJD で使っても
ライブラリーの指定は *LIBL かまたは *CURLIB しか指定することができない。

ここでは、このような悩みを一発で解決する手法を紹介する。
それは DSPOBJD コマンドである。

DSPOBJD コマンドでライブラリーを *ALL または *ALLUSR を指定して
検索すれば、どのライブラリーにあるかを即座に調べることができる。

【例】

ANS004FM と言う名前の DSPF オブジェクトがどこにあるのかを調べてみよう。
ANS004FM はデータ・ベースではないので
ファイル相互参照: QSYS\QADBXREF にも記録がない。
もちろん RTVOBJD でも探すことができない。

そこで次のようにライブラリーを *ALLDSPOBJD コマンドを使ってみると

次の表示で「8= 保守属性の表示」を指定すると

次のようにライブラリー CGIBIN にあることがわかる。

このように DSPOBJD コマンドを使うとライブラリーを
*ALL または *ALLUSR を指定することが可能になるばかりか
DSPOBJD コマンドでは出力ファイルを指定することもできるので
自作の CLP を作っての解析も可能となる。
DSPOBJD のようにライブラリーに *ALL または *ALLUSR を指定できる API はない。
DSPOBJD は、なかなか役に立つコマンドである。