RPG

308. SEU でコンパイル・エラーを検索

SEU でコンパイル・エラーを検索しながらソースを修正することができる。
少し面倒なのだが DSPJOB で現在のジョブ名をコピーしておいてもらいたい。

コンパイルでエラーとなれば SEU を起動して F15キーを押して

                        走査検索/コピー・オプション                        
                                                                            
  選択項目を入力して,実行キーを押してください。                            
                                                                            
    選択項目 . . . . . . . . . . .   2               1= メンバー   <-----------------( 2に変更)         
                                                     2= スプール・ファイル  
                                                     3= 出力待ち行列        
    すべてのレコードのコピー . . .   N               Y=YES, N=NO            
    メンバーの走査検索/コピー . .   ANS004          名前,リストは F4キー    
      ファイル . . . . . . . . . .     QRPGLESRC     名前,リストは F4キー    
        ライブラリー . . . . . . .       QTRSRC      名前, *CURLIB, *LIBL  
                                                                            
    スプール・ファイル の走査検索 /コピー  .   ANS004          名前,リストは F4キー    
      ジョブ . . . . . . . . . . .     QPADEV08Z6    名前     <----------------------(ジョブ名を貼り付け)              
        ユーザー . . . . . . . . .       QTR         名前,リストは F4キー    
        ジョブ番号 . . . . . . . .       *LAST       番号, *LAST           
      スプール番号 . . . . . . . .     *LAST         番号, *LAST, *ONLY    
                                                                            
    出力待ち行列の表示 . . . . . .   QPRINT          名前, *ALL            
      ライブラリー . . . . . . . .     *LIBL         名前, *CURLIB, *LIBL  
                                                                            
 F3= 終了    F4=プロンプト         F5= 最新表示    F12= 取り消し               
 F13= セッション省略値の変更    F14= 検索/変更オプション                   
  桁 . . . . . :    6  76            編集                      QTRSRC/QRPGLESRC 
 SEU==>                                                                  ANS004 
        *************** データの始め ****************                           
0001.00 H DFTNAME(PGMID) DATEDIT(*YMD/)                                         
0002.00 F**********  受注の入力 ******************************************      
0003.00 FDNS004FM  CF   E             WORKSTN                                   
0004.00 F                                     SFILE(SFREC01:RRN1)               
0005.00 F                                     INFDS(INFDS)                      
0006.00 FJUCHU     UF A E           K DISK                                      
0007.00 FTOKMAS    IF   E           K DISK                                      
0008.00 FSHOHIN    IF   E           K DISK                                      
-------------------------------------------------------------------------------
  桁 . . . . . :    1  71          走査検索        スプール・ファイル  . . :     ANS004 
 SEU==> F *ERR                                                                  
        *************** データの始め ****************                           
0000.01   5722WDS V5R4M0  060210 RN        IBM ILE RPG             QTROBJ/ANS00 
0000.02     コマンド  . . . . . . . . . . . :   CRTBNDRPG                       
0000.03       投入元  . . . . . . . . . . . :     QTR                           
0000.04     プログラム  . . . . . . . . . . :   ANS004                          
0000.05       ライブラリー  . . . . . . . . :     QTROBJ                        
0000.06     テキスト ' 記述 ' . . . . . . . :   *SRCMBRTXT                      
0000.07     ソース・メンバー  . . . . . . . :   ANS004                          
0000.08     ソース・ファイル  . . . . . . . :   QRPGLESRC                       

SEU => の部分に F *ERR と打鍵して F16 キーを押すと、
最初のコンパイル・エラーの部分が表示される。

  桁 . . . . . :    1  71          走査検索        スプール・ファイル  . . :     ANS004 
 SEU==>                                                                         
0000.47       3 FDNS004FM  CF   E             WORKSTN                           
0000.48  ======> AAAAAAAAAA                                                     
0000.49  *RNF2120 40 A      000300   ファイル DNS004FM の外部記述が見つからな * 
0000.50                              無視されます。                             
0000.51       4 F                                     SFILE(SFREC01:RRN1)       
0000.52       5 F                                     INFDS(INFDS)              
0000.53       6 FJUCHU     UF A E           K DISK                              
0000.54          *------------------------------------------------------------- 
0000.55          *                               RPG 名            外部名       
 外部記述として指定されたファイルの外部記述が見つからなかった。このファイ ... + 

SEU で誤りのソース・ステートメントを修正してさらに F16 キーを押すと
次のエラーが表示される。
このようにしてエラー・メッセージを見ながらソースを修正することができるのだが
いちいちジョブ名をコピー&ペーストするのは面倒である。
これは昔はコンパイルには結構、時間がかかっていたので
バッチ・ジョブに投入して行っていたので
バッチ・ジョブ名をプログラムとしていたころの名残りであろう。
IBM もそろそろこのジョブ名を省略値として欲しいところである。

また経験の長い開発者はこの方法によるコンパイル・エラーの検索は行わないかも知れない。
多くのコンパイル・エラーの原因は *7030 : 未定義フィールドであるので
* 7030 さえ最初につぶしておけば大抵のエラーはなくなる。
これは他の言語でも同じことである。

SEU 改善のポイント

コンパイル・エラーでスプールを開いて… の方法はやはり面倒である。
エラーのあるソース・ステートメントだけを検索して
エラーとともに表示する機能が欲しい。
プログラムの作成者はエラー・メッセージを見るだけで
間違いがわかるものだ。
将来、これは改善される。