RPG

152. プログラム・オブジェクトから RPGソースを探すには (1)

あるプログラム・オブジェクト (*PGM) からコンパイルされた元の RPGソースを
探すとなると、適当にいつもある場所のソース・ライブラリーのメンバーを
PDM で検索するのは論理的な方法ではない。
自分が作成したプログラムであれば、ともかく他人が作成したプログラムの
ソース・メンバーを探すのであればオブジェクトを参照して、オブジェクト情報から
生成の元となっているソースを調べるのが正当な方法であると言える。
いくら PDM で同じ名前のソース・メンバーが見つかったとしても
そのソースによってコンパイルされたのではなく、別のライブラリーにある
同じ名前のソースから生成されたものであるかも知れないからである。

■ プログラムのソースを探す

DSPPGM OBJLIB/MYPGM + 実行 によって、そのプログラムのタイプが OPM であるか
ILE であるかを調べる。
OPM であれば次のように直ちに元のソースを知ることができる。

 
                                 プログラム情報の表示                           
                                                                            
 プログラム . . . . . . :   ANS004        ライブラリー . . . . . :   QTROBJ 
 所有者 . . . . . . . . :   QTR                                             
 プログラム属性 . . . . :   RPG                                             
                                                                            
 プログラム作成情報 :                                                       
   プログラム作成日/時刻 . . . . . . . . . . . . . :   09/03/28  14:17:00  
   プログラムのタイプ . . . . . . . . . . . . . . . :   OPM                 
   ソース・ファイル . . . . . . . . . . . . . . . . :   QRPGSRC             
     ライブラリー . . . . . . . . . . . . . . . . . :     QTRSRC            
   ソース・メンバー . . . . . . . . . . . . . . . . :   ANS004              
   ソース・ファイル変更日/時刻 . . . . . . . . . . :   09/03/28  14:16:56  
   識別情報 . . . . . . . . . . . . . . . . . . . . :   *ALL                
   ユーザー・プロファイル . . . . . . . . . . . . . :   *USER               
   借用権限の使用 . . . . . . . . . . . . . . . . . :   *YES                
   固定 10 進数データ . . . . . . . . . . . . . . . :   *NO                 
   テラスペース使用可能 . . . . . . . . . . . . . . :   *YES                

これに対して ILE の場合は,実行キーを次々と押していくと次のような
モジュールの表示画面が表示される。


                             プログラム情報の表示                               
                                                                    画面 7 の 3 
 プログラム . . . . . . :   PGM001        ライブラリー . . . . . :   QTROBJ     
 所有者 . . . . . . . . :   QDFTOWN                                             
 プログラム属性 . . . . :   RPGLE                                               
 詳細 . . . . . . . . . :   *MODULE                                             
                                                                                
                                                                                
 オプションを入力して,実行キーを押してください。                               
   5= 記述の表示   6= 記述の印刷                                                
                                                                                
                                                                      デバッグ・  
 OPT   モジュール   ライブラリー      属性        作成日    最適化レベル   データ      
       PGM001       QTEMP       RPGLE       07/12/10   *NONE          *YES      

「5= 記述の表示」を選択するとモジュールの生成の基となったソースが表示される。

 
                             プログラム情報の表示                            
                                                                             
 プログラム . . . . . . :   PGM001        ライブラリー . . . . . :   QTROBJ  
                                                                             
 モジュール属性 :                                                            
   モジュール . . . . . . . . . . . . . . . . . . :   PGM001                 
     ライブラリー . . . . . . . . . . . . . . . . :     QTEMP                
   ソース・ファイル . . . . . . . . . . . . . . . :   QRPGLESRC              
     ライブラリー . . . . . . . . . . . . . . . . :     QTRSRC               
   ソース・メンバー . . . . . . . . . . . . . . . :   PGM001                 
   モジュール属性 . . . . . . . . . . . . . . . . :   RPGLE                  
   モジュール作成日/時刻 . . . . . . . . . . . . :   07/12/10  09:29:43     
   ソース・ファイル変更日/時刻 . . . . . . . . . :   07/12/10  09:29:39     
   コード化文字セット ID  . . . . . . . . . . . . :   5026                   
   作成データ . . . . . . . . . . . . . . . . . . :   *YES                   
   ソート順序テーブル . . . . . . . . . . . . . . :   *HEX                   
   言語 ID  . . . . . . . . . . . . . . . . . . . :   *JOBRUN                
   最適化レベル . . . . . . . . . . . . . . . . . :   *NONE                  
   最大最適化レベル . . . . . . . . . . . . . . . :   *FULL                  

この方法によって初めて PDMSEU によってソースを表示するのが正しい方法である。