SAVFに保管したオブジェクトの情報を表示します。オブジェクトタイプやオブジェクト名、その他でフィルターすることもできます。
概要
■表関数名:QSYS2.SAVE_FILE_OBJECTS
■カテゴリ:バックアップ・リカバリーサービス
■サポート:IBM i 7.4 SF99704 Level 25以降
■参照URL(IBM i 7.5):https://www.ibm.com/docs/ja/i/7.5?topic=services-save-file-objects-table-function
SAVOBJコマンドでスプールファイル、データキューの中身を保管できるのはご存じ?
大昔はなかったはずです。
SAVOBJ... SPLFDTA(*ALL) QDTA(*DTAQ)
を指定すると保管できます。
使用例1
こちらはマニュアル(インフォセンター)記載のサンプルです。
SAVFに保管されたオブジェクトのうち、スプールファイルだけをリストする、というちょっとマニアックな例ですね。
SELECT LIBRARY_NAME CONCAT '/' CONCAT OBJECT_NAME AS OUTPUT_QUEUE, SPOOLED_FILE_NAME, SPOOLED_FILE_NUMBER, CREATE_TIMESTAMP
FROM TABLE (QSYS2.SAVE_FILE_OBJECTS(SAVE_FILE => 'SAVF1',
SAVE_FILE_LIBRARY => 'MYLIB',
OBJECT_TYPE_FILTER => '*OUTQ',
DETAILED_INFO => 'ALL'));
自分の環境のライブラリー名、SAVF名を変更してそのまま、実行してみます。
SAVFに保管されたスプールファイルがリストされました。作成日時もリストされます。
マニュアル記載サンプルでは、リストするオブジェクトタイプを *OUTQ 、 DETAILED_INFO を ALL としています。
使用例2
もっと一般的なケースを試してみます。
OBJECT_TYPE_FILTER=> '*PGM'
DETAILED_INFO => 'ALL'
を指定してみます。
保管されたQGPLのプログラム一覧がリストされました。この例では数個しかリストされませんので処理速度はそこそこ速いですが、オブジェクト数が多いと相応に処理負荷がかかる(遅くなる)ようです。
SQLの処理時間を調べたい方は、
こちらの記事ご覧ください♪
使用例3
出力するカラムは上記マニュアルページに記載があります。例を実行してみます。
出力カラムとして以下を追加してみます。(SPOOLED_FILE_NAMEなどは除外しました)
OBJECT_ATTRIBUTE
TEXT_DESCRIPTION
SAVE_TIMESTAMP
SAVFに保管されたPGMタイプのオブジェクトをリストする。オブジェクト属性とテキスト欄、保管日付もリストする。
SELECT LIBRARY_NAME CONCAT '/' CONCAT OBJECT_NAME AS OUTPUT_QUEUE, OBJECT_ATTRIBUTE, TEXT_DESCRIPTION, SAVE_TIMESTAMP
FROM TABLE (QSYS2.SAVE_FILE_OBJECTS(SAVE_FILE => 'QGPLSV',
SAVE_FILE_LIBRARY => 'GOMALIB',
OBJECT_TYPE_FILTER => '*PGM'
));
オブジェクト属性に RPGLE, CLLE, RPG, RPG38 等が表示されています。
補足 SAVOBJコマンドの場合、スプールファイル、データキュー中身保管コマンドはどうなる?
guriguriさんからのご質問です。
下記のようにSAVOBJコマンドにも同様なパラメーターがあり、スプールファイル、データキューの中身を保管要否選択できます。