自己学習メモインデックス
概要
AS400では制限がある程度ありますが、ソースコードを横断してキーワードを検索することが可能です。
それを実現するのがFNDSTRPDM
コマンドです。
テキストエディタのgrepとは異なり、検索にヒットしたファイルのパスやキーワードと隣接する行のデータなどがまとめて一括表示されることはありませんが、ソースコードを横断してキーワードを検索し、1つずつ次へ次へ次へ・・・と地道に探すことができます。
FNDSTRPDMでキーワード検索
以下の例は、YAMAGUCHI1ライブラリにあるQRPGLESRCファイルのメンバーとして、RPGソースコードが格納されていることを前提に、得意先マスタの得意先名(TOKNM)の検索キーワードを指定して、TOKNMを利用しているRPGプログラムを探しています。
少し長いコマンドとなっているので、call qcmd
でコマンド入力画面(Command Entry)を表示してから実行すると良いかもしれません。
FNDSTRPDM STRING('TOKNM') FILE(YAMAGUCHI1/QRPGLESRC) MBR(*ALL) OPTION(*DSP *NOPROMPT)
上記コマンドを実行すると、最初にヒットしたソースコードのTOKNM
キーワード部分にカーソルが合わさって表示されます。
画面の右上をみると、YAMAGUCHI1/QRPGLESRC RPG01など、ヒットしたソースコードの名前なども確認できますので、どのソースのどこでヒットしているのかを確認できます。
複数ソースにまたがって検索していますが、次のヒットへ遷移する場合、Enterキーを押下することで、次にヒットした場所へ遷移してくれます。
ここで紹介しているように、テキストエディタのgrepとはだいぶ使い勝手が違いますが、AS400ではこんなもんなんですねー。
地道にEnterを押下し、どのソースで使っているのか目視で確認し、必要に応じて手元でメモを取りながら、キーワードを利用しているプログラム(ソースコード)を把握する作業が必要となります。
一括して検索する方法
上記で紹介したFNDSTRPDMコマンドで、OPTIONを少し変更することで、1つずつEnterを押下しなくても、キーワードがヒットしたソースコードの一覧を、スプールに出力することも可能です。
(それでも、ものすごい使い勝手がいいとは思えませんが。)
FNDSTRPDM STRING('TOKNM') FILE(YAMAGUCHI1/QRPGLESRC) MBR(*ALL) OPTION(*NONE *NOPROMPT) PRTMBRLIST(*YES)
上記コマンドを実行したあと、出力されたスプールを確認します。
- wrkjob コマンドを実行
-
4. Work with spooled files
のコマンドを選択 - ファイル名が
QPUOPRTF
というスプールファイルができているのでOPT=5 で内容を表示
このように、検索キーワードにヒットしたメンバーの一覧が表示されます。
Recordsには、ヒットした行番号が表示されていますので、どのソースメンバーの何行目でヒットしたのか?というのは把握できます。
ただ、その詳細はよくわからないので、結局ソースコードの中身まで確認しに行く必要があります。
以上が、FNDSTRPDMによるソースコード横断のキーワード検索です。