読者です 読者をやめる 読者になる 読者になる

タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】特定のオブジェクトを参照するプログラムの調査方法

前回では、フィールド等の使用状況調査についてを書きましたが、今回は、特定のオブジェクト(テーブルやプログラム)を参照するプログラムを確認する方法を書きます。

あるプログラムが、どのプログラムで呼び出されているか? あるテーブルが、どのプログラムで呼び出されているか?を調査する方法です。

確認手順

(1) DSPPGMREFコマンドで参照情報をテンポラリーに書き出す

DSPPGMREF

DSPPGMREFコマンド入力後、F4プロンプトを呼び出します。

                         プログラム参照表示  (DSPPGMREF)                        
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  プログラム  . . . . . . . . . . > *ALL           名前,総称* , *ALL          
   ライブラリー  . . . . . . . . . . . >   TIGEROBJ     名前 , *LIBL, *CURLIB...     
  出力  . . . . . . . . . . . . . > *OUTFILE      *, *PRINT, *OUTFILE           
  オブジェクト・タイプ  . . . . .   *PGM          *ALL, *PGM, *SQLPKG...        
                 値の続きは+                                                   
  出力を受け取るファイル  . . . .   PGMLIST        名前                         
   ライブラリー  . . . . . . . . . . .     QTEMP        名前 , *LIBL, *CURLIB        
  出力メンバー・オプション :                                                    
    出力を受け取るメンバー  . . .   *FIRST         名前 , *FIRST                
    レコードの置き換えまたは追加    *REPLACE      *REPLACE, *ADD                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         終り
 F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し
 F13= この画面の使用法                    F24= キーの続き
  • プログラム*ALLにて、指定したライブラリー内のすべてのオブジェクトを検索対象とします。
  • 出力は、画面表示よりも詳細を確認できる理由で、OUTPUTファイルに落とし込みます(例では、TEMP内に保存するようにしました)。

(2) テンポラリーファイルにて参照プログラムを確認

次に、保存されたファイルをQRY等で確認します。

RUNQRY QRYFILE(QTEMP/PGMLIST) RCDSLT(*YES) 
                                 レコードの選択                                 
                                                                                
  比較条件を入力し実行キー。新しいグループを始めるには OR を指定してください。  
    テスト: EQ, NE, LE, GE, LT, GT, RANGE, LIST, LIKE, IS, ISNOT...            
                                                                                
 AND/OR   フィールド       テスト     値 (フィールド, 数値,'文字',または ...)      
         WHFNAM            LIKE   'SAMPLE%'                                     
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                       終わり   
                                                                                
  フィールド      テキスト                                             LEN  DEC 
 WHFNAM           参照された オブジェクト: 1=*EXPR                          11      
 WHLNAM           参照された ライブラリー:1=*EXPR                            11      
 WHSNAM           起動 プログラム 中のファイル名 :1=*EXPR                  11      
 WHRFNO           参照されるレコード様式の数  -1=WHRFNB 参照             3    0 
 WHFUSG          1=I,2=O,3=I/O,4=U,5=I/U,6=O/U,7=I/O/U,8=N/S,0=N/A       2    0 
                                                                      続く ...
 F3= 終了         F9= 挿入    F11= 名前のみの表示     F12= 取り消し
 F18= ファイル    F19= 次のグループ    F20= 再編成    F24= キーの続き
  • 調査対象がプログラムの場合には、WHFNAM で検索をかけます。(上記の例では、SAMPLEから始まる名前のPGMの検索を行います)
  • 調査対象がテーブルの場合には、WHSNAM で検索をかけます。
検索結果
                                                           報告書の表示                                                             
                                                                                                   報告書の幅  . . . . . :     248  
  行の位置指定 . . . . . . .                                                                   桁移動  . . . . . . . . . .          
  行    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+...10....+...11....+...12....
         ライブラリー   プログラム     TEXT                                                 参照      検索           参照         ライ 
                                    テキスト                                                オブジェクト   日付時刻      オブジェクト           
                                     記述                                                数                                         
 000001   TIGEROBJ      SAMPLE05C    ソースファイルを読む                                     6   1150205124235  SAMP05             
 000002   TIGEROBJ      SAMPLE05C    ソースファイルを読む                                     6   1150205124235  SAMPLE05      *LIBL
 000003   TIGEROBJ      SAMPLE08     画面 打鍵用キーワードCA/CF動作テスト               5   1150205124235  SAMPLE08D     TIGER
 000004   TIGEROBJ      SAMPLE08     画面 打鍵用キーワードCA/CF動作テスト               5   1150205124235  SAMPLE08D     TIGER
 000005   TIGEROBJ      SAMPLE11C    メイン・プロシージャ・プロトタイプ化テスト               4   1150205124235  SAMPLE11      *LIBL
 000006   TIGEROBJ      SAMPLE13     ポインター渡しテスト MAIN                                4   1150205124235  SAMPLE13B     *LIBL
 000007   TIGEROBJ      SAMPLE14     ポインター渡しテスト2 MAIN                              4   1150205124235  SAMPLE14B     *LIBL
 000008   TIGEROBJ      SAMPLE19     月末日算出  CALL (OPTION='T')                            4   1150205124235  SAMPLE19P1    *LIBL
 ****** ********  報告書の終わり  ********                                                            
                                                                                                                       
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                          終わり 
 F3= 終了    F12= 取り消し    F19= 左    F20= 右    F21= 分割    F22= 幅 80             


* 参照オブジェクトがどのプログラムから呼び出されているか、プログラム欄を見れば確認できるかと思います。