あるオブジェクトがどのライブラリーにあるのか調べたいときがある。
PDM
でやみくもに、あちこちと探すのは論理的ではないし
アテもののようなものである。
ファイルであれば QSYS/QADBXREF
の中を QUERY
で調べることもできるが
データ・ベースではないオブジェクトをどのように探せばよいだろうか ?
例えばコマンド: RTVOBJD
を使ってもライブラリーの指定は
*LIBL
または *CURLIB
して指定することができない。
同様にオブジェクトの検索API: QRTVOBJD
で使っても
ライブラリーの指定は *LIBL
かまたは *CURLIB
しか指定することができない。
ここでは、このような悩みを一発で解決する手法を紹介する。
それは DSPOBJD
コマンドである。
DSPOBJD
コマンドでライブラリーを *ALL
または *ALLUSR
を指定して
検索すれば、どのライブラリーにあるかを即座に調べることができる。
ANS004FM と言う名前の DSPF オブジェクトがどこにあるのかを調べてみよう。
ANS004FM はデータ・ベースではないので
ファイル相互参照: QSYS\QADBXREF
にも記録がない。
もちろん RTVOBJD
でも探すことができない。
そこで次のようにライブラリーを *ALL
で DSPOBJD
コマンドを使ってみると
次の表示で「8= 保守属性の表示」を指定すると
次のようにライブラリー CGIBIN
にあることがわかる。
このように DSPOBJD
コマンドを使うとライブラリーを
*ALL
または *ALLUSR
を指定することが可能になるばかりか
DSPOBJD
コマンドでは出力ファイルを指定することもできるので
自作の CLP を作っての解析も可能となる。
DSPOBJD
のようにライブラリーに *ALL
または *ALLUSR
を指定できる API はない。
DSPOBJD
は、なかなか役に立つコマンドである。