RPG

313. ストレスのない新しい SEU

ここに生まれ変わったストレスのない新しい SEU を紹介しよう。
EDTSRC という名前のこの SEU は次のようなコマンド・プロンプト画面で
起動される。

EDTSRCのコマンド・プロンプト画面
                              SEU 開始  (EDTSRC)                               
                                                                               
 選択項目を入力して,実行キーを押してください。                                
                                                                               
 ソース・ファイル  . . . . . . . > QRPGLESRC      名前 , *PRV                  
   ライブラリー  . . . . . . . . >   QTRSRC       名前 , *LIBL, *CURLIB, *PRV  
 ソース・メンバー  . . . . . . . > ANS004         名前 , *PRV                  
 タイプ  . . . . . . . . . . . . > RPGLE         *SAME, RPGLE, RPG, C, CLE...  
 テキスト ' 記述 ' . . . . . . .   *BLANK                                      
                                                                               
 オブジェクト  . . . . . . . . .   *SRCMBR        文字値                       
 オブジェクト・ライブラリー  . . > QTROBJ         文字値                       
 オブジェクト・タイプ  . . . . .   *PGM          *PGM, *SRVPGM, *PRTF, *DSPF   
 コンパイラー  . . . . . . . . .   *OBJDFN       *OBJDFN, CRTBNDRPG...         
 名前定義  . . . . . . . . . . .   *NONE                                       
                                                                               
 活動化グループ  . . . . . . . .   *NEW           文字値 , *NEW, *CALLER       
                                                                               
                                                                               
                                                                               
                                                                        終り   
F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し                         
F13= この画面の使用法                    F24= キーの続き                       

ご覧のように EDTSRC ではソース編集にもかかわらず
コンパイルに必要なオブジェクト情報も定義している。
オブジェクトも指定している。
既存のオブジェクトがある場合はコンパイラーは *OBJDFN と指定しておけば
オブジェクトの情報が検索されて自動的に必要なコンパイラーが
起動される仕組みとなっている。

これらのオプションは *PRV モードを備えているので一度でも起動すれば
後は EDTSRC + [実行] だけで以前のオプションが採用されて表示される。

SEU の処理画面
0001.00 H DFTNAME(PGMID) DATEDIT(*YMD/)                                                       
0002.00 F**********  受注の入力 ******************************************                    
0003.00 FANS004FM  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                                                    
0009.00 F*PRINT  O   F     132            PRINTER                                             
0010.00 F*****************************************************************                    
0011.00 D AR              S              1    DIM(80)                                         
0012.00 D SAVDTA          S              1    DIM(1024)                             SAVE-ゴーn 
0013.00 D*                                                                                    
0014.00 D*         -( iバヲハィay の ハィay 情報 )-                                                
0015.00 D*                                                                                    
0016.00 D* SAVE-RESTORE のための ハィay の DATA-STRUCTURE                                       
0017.00 D*       読み取り ハィay の FORMAT を外部 DS として READ                                
0018.00 D SAVEDS        E DS                  EXTNAME(JUCHU)                                  
0019.00 D*( MIDDTA: 共通見出し画面 )                                                          
0020.00 D  MIDDTA                 1     23                                                    
0021.00 D  DSPDTA                 1   1024                                                    
0022.00 D                                     DIM(1024)                             入力 ゴーn 
0023.00 D INFDS           DS                                                                  

この画面はこれまでの SEU と変わらない。

  桁 . . . . . :    6 100                                       編集    
 SEU==> SAVE                                                            
0120.00 C                   EXSR      SFLCLR                            
0121.00 C                   MOVE      JUCNO         HED001              
0122.00 C     *LIKE         DEFINE    JUCNO         HED001              
  :
  :

ソース・ステートメント行を追加・変更すれば最上部のコマンド入力欄に
「SAVE」と打鍵して実行キーを押せばソースをオープンしたままで
保管することができる。
もし保管せずにコンパイルしようとすると

「ソースが保管されていません。 SAVE で保管してください 」

との警告メッセージが出力される。

                       バインド RPG PGM の作成  (CRTBNDRPG)                     
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  プログラム  . . . . . . . . . . > ANS004         名前 , *CTLSPEC              
    ライブラリー  . . . . . . . . >   QTROBJ       名前 , *CURLIB               
  ソース・ファイル  . . . . . . . > QRPGLESRC      名前 , QRPGLESRC             
    ライブラリー  . . . . . . . . >   QTRSRC       名前 , *LIBL, *CURLIB        
  ソース・メンバー  . . . . . . . > ANS004         名前 , *PGM                  
  ソース・ストリーム・ファイル                                                  
                                                                                
  生成重大度レベル  . . . . . . .   10            0-20                          
  テキスト ' 記述 ' . . . . . . .   *SRCMBRTXT                                  
                                                                                
  省略時の活動化グループ  . . . . > *NO           *YES, *NO                     
  活動化グループ  . . . . . . . . > *NEW           名前 , QILE, *NEW, *CALLER   
 BINDING ディレクトリー   . . . .   *NONE          名前 , *NONE                 
    ライブラリー  . . . . . . . .                  名前 , *LIBL, *CURLIB...     
                 値の続きは+                                                   
【コンパイル・エラーの抽出】

「コンパイルは正常に実行されなかった。 」

とのコンパイル・エラーが表示されたら
F8キーを押すとコンパイル・エラーを抽出することができる。

 :
  :
0090.00 C                   SETOFF                                       99            
0091.00 C*( CF03 )- 終了                                                               
0092.00 C     *IN03         IFEQ      '1'                                          CF03
0093.00 C   03              SETON                                        LR            
0094.00 C   LR              EXSR      LRRTN                                            
0095.00 C   LR              RETURN                                                     
*RNF7030 30 008200  名前または標識 HEDSTR6 が定義されていない。                        

この例ではステートメント 8200 で未定義ファイールド HEDSTR6 が
見つかったとのエラーであるので修正することができる。
さらに F8キー を押すと次のエラー・メッセージが表示され
最後には

「* * * * * メ ッ セ ー ジ の 要 約 の 終 わ り * * * * 」

としてメッセージの終わりが通知される。
コンパイルが正常に完了すれば先ほどの SEU 編集画面に表示は戻る。

「 プログラム ANS004 がライブラリー QTROBJ に入れられました 」

との表示とともに SEU 編集画面に戻る。
そこでもう一度 F8キー を押すと

                           受注の入力                      
  受注№   00000                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
                                                           
               必要な項目を打鍵して実行キーを押して下さい。
             
             
             
             
             
             
             
             
             
             
             
 F3= 終了    

のようにしてプログラムの実行が開始される。
実行した後でもう一度 F8キーを押せば、今度はデバッグ・モードで
プログラムが次のように起動される。

                           モジュール・ソースの表示                             
                                                                                
 PROGRAM:   ANS004         LIBRARY:   QTROBJ         MODULE:   ANS004           
      1       H DFTNAME(PGMID) DATEDIT(*YMD/)                                   
      2       F**********  受注の入力 ***************************************** 
      3       FANS004FM  CF   E             WORKSTN                             
      4       F                                     SFILE(SFREC01:RRN1)         
      5       F                                     INFDS(INFDS)                
      6       FJUCHU     UF A E           K DISK                                
      7       FTOKMAS    IF   E           K DISK                                
      8       FSHOHIN    IF   E           K DISK                                
      9       F*PRINT  O   F     132            PRINTER                         
     10       F**************************************************************** 
     11       D AR              S              1    DIM(80)                     
     12       D SAVDTA          S              1    DIM(1024)                   
     13       D*                                                                
     14       D*         -( iバヲハィay の ハィay 情報 )-                            
     15       D*                                                                
                                                                       続く ... 
 デバッグ                                                                       
                                                                                
 F3= 終了 プログラム   F6= 停止点の追加/消去   F10=ステップ        F11= 変数の表示   
 F12= 再開          F17= ウォッチ変数   F18= ウォッチの処理   F24=キー の続き     

デバッグを終えてさらに F8キー を押すとリリース・モードでの実行に戻る。
このように F8キー を押すとデバッグ⇔リリース実行を繰り返す。

[まとめ]

説明したように EDTSRC は、ソースをオープンしたままでコンパイル & デバッグ、
実行までを行える開発環境である。
SEU の開始/終了を繰り返すことがないので大幅に無駄な手間は解消されて
開発が大いに快適になるし、何より開発中の無駄な時間や繰返しが無くなる。
まるで新しい開発ツールを手に入れたかのような気分になる。
コンパイル & デバッグ を繰り返す開発には非常に効果的であり
既に開発用のメニューに組み込んで実際の重要なプログラムの開発に利用している。

くわしくは説明しなかったがもちろん ILE 開発が前提であるので
サービス・プログラム( *SRVPGM )のバインドや印刷ファイル( *PRTF )の開発にも
威力を発揮する。
印刷ファイルの再コンパイルでは元のファイルの設定条件などをいちいち調べて
再コンパイルするのは面倒であるし何より正確であるとは言えない。

この EDTSRC は多くの IBM ユーザーに無償で提供したいと考えている。
現在、次のセミナーに向けて実際の運用を通じての検証を続けているので
お待ち頂きたい。