あるデータ・ベースがどのライブラリーにあるかを、どのようにして調べればよいだろうか ?
よくある手法では CHKOBJ
コマンドや API: QUSROBJD
を使用することを思いつくかも知れないが
いずれも *LIBL
つまりライブラリー・リスト上のライブラリーにある場合でしか
検索することができない。
そこで任意のデータ・ベースがどのライブラリーに保管されているかを一瞬のうちに
調べてくれるツールを紹介しよう。
この検索ツールは、探すデータ・ベース(*FILE
) が、ライブラリー・リストにない場合でも
調べることができる。
原理的には簡単であるが、覚えておけば効果的な手法であることは間違いない。
原理は データ・ベース : QSYS/QADBXREF
を参照すればよいだけである。
相互参照ファイル: QSYS/QADBXREF
は System i のユーザーが System i 上でいろいろな
ライブラリーを作成したりファイルを作成したり、移動したりしても確実に OS によって
保守されてるデータ・ベースである。
ファイルとライブラリーの関連が OS400 によって単なる物理ファイルとして意外であるかも
知れないが QADBXREF
は知っておくと重宝するデータ・ベースである。
QADBXREF
は ライブラリー + データ・ベース名 をキー・フィールドとするデータ・ベースであって
次のようにデータが並んでいる。
QADBXREF
のキー・フィールドは
ライブラリー名 + ファイル名
であり逆の
ファイル名 + ライブラリー名
をキー・フィールドとするのが QADBXREF
に従属する論理ファイルのひとつである「 QADBXFIL
」である。
例えば SHOHIN
という名前のファイルがライブラリー TESTFIL
と QTRFIL
の両方に存在していたとすると
QADBXFIL
には、
SHOHIN QTRFIL SHOHIN TESTFIL
というように並んで存在しているはずである。
そこで QADBXFIL
に CHAIN
または SETLL & READE
の処理を行えば簡単にライブラリー名を取り出すことが
できるようになる。
単なるキーつきの物理ファイルのレコードを探すだけであるから、これほど簡単なことはないだろう。
--------------------------------------------------------------------------------- 0001.00 H DATEDIT(*YMD/) COPYRIGHT('(C) OfficeQuattro Co,.Ltd Japan 2011-') 0002.00 F********** データ・ベースのライブラリー検索 ************************* 0003.00 FQADBXFIL IF E K DISK 0004.00 F********************************************************************** 0005.00 D FILE S 10A 0006.00 D FILE_P S * 0007.00 D FILLIB S 10A 0008.00 D FILLIB_P S * 0009.00 C*----------------------------------------------------+ 0010.00 C *ENTRY PLIST 0011.00 C PARM FILE 0012.00 C PARM FILLIB 0013.00 C*----------------------------------------------------+ 0014.00 C* 0015.00 C*----------------------------------------------------+ 0016.00 C SETKEY KLIST 0017.00 C KFLD DBXFIL 0018.00 C KFLD DBXLIB 0019.00 C*----------------------------------------------------+ 0020.00 C MOVEL(P) FILE DBXFIL 0021.00 C MOVE *LOVAL DBXLIB 0022.00 C SETKEY SETLL QADBXFIL 0023.00 C SETOFF 50 0024.00 C DBXFIL READE QADBXFIL 50 0025.00 C *IN50 IFEQ *ON 0026.00 C MOVEL(P) '*LIBL ' FILLIB 0027.00 C ELSE 0028.00 C DBXLIB IFEQ 'BACKUP ' 0029.00 C DBXFIL READE QADBXFIL 50 0030.00 C END 0031.00 C MOVEL(P) DBXLIB FILLIB 0032.00 C END 0033.00 C SETON LR 0034.00 C RETURN ---------------------------------------------------------------------------------
解説も不要なくらい簡単なソースである。
パラメータ : FILE
にファイル名を与えるとパラメータ : FILLIB
にライブラリー名が戻される。
OS が壊れない限り実行時において QADBXFIL
が見つからないということはない。
RTVDBLIB
は便利で約に立つプログラムであるので、ぜひ活用して頂きたい。