AutoWeb

65. RPGソースを自動生成するには

AutoWebのApp.Wizard(=Application Wizard)を使えばRPGソースも
自動生成することができます。
社内でのテンプレート・ソースをコピーして開発するよりは
やはりソースを自動生成したほうが

・圧倒的に開発時間が早い

・高品質のソースを生成できる

・社内でのパターンを標準化できる

という利点があります。
いくら腕のいい開発者でもWizardにはかないません。
しかもWizardであれば品質に優れたソースを短時間のうちに
生成することができるのです。

先に紹介したDSPF: TEST01FM を使って新しいRPGソース: TEST01を
次のように生成します。
GO AUTOWEBの「43. RPG ソースの生成」( CRTRPGSRC )を選択してください。

                          RPG ソースの作成  (CRTRPGSRC)                         
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  原始ファイル  . . . . . . . . .   QRPGLESRC      名前                         
    ライブラリー  . . . . . . . .     QTRSRC       名前 , *LIBL, *CURLIB        
  原始メンバー  . . . . . . . . .   TEST01         名前 , *SRCMBR               
  テキスト  . . . . . . . . . . .    商品マスターの登録                         
                                                                                
  基礎ファイル  . . . . . . . . .   SHOHIN         名前 , *NONE                 
    ライブラリー  . . . . . . . .     QTRFIL       名前 , *LIBL, *CURLIB        
  表示装置/印刷装置ファイル  . .   TEST01FM       名前                         
    ライブラリー  . . . . . . . .     QTROBJ       名前 , *LIBL, *CURLIB        
 5250 ハンドラーの追加  . . . . .   *NO           *YES, *NO                     
  レコードの置き換えまたは追加      *ADD          *NONE, *ADD, *REPLACE         
                                                                                

[解説]

ソース・ファイルは QTRSRC/QRPGLESRC でRPGソース・メンバー名として
TEST01 を指定します。

テキストは「商品マスターの登録」とします。

基礎ファイルというのは保守するターゲットになるファイル名のことで
QTRFO+/SHOHINとして商品マスターを指定します。
 
表示装置/印刷装置ファイルは策ほど生成した QTROBJ/TEST01FM です。

レコードの置き換えまたは追加は初めての作成なので *ADD と指定します。

これで実行キーを押して生成を開始します。


QTRSRC/QRPGLESRC(TEST01) を生成しました 

と完了メッセージが報告されれば生成の成功です。
次は生成されたRPGソースです。

[ RPG: TEST01 ]

ソースはこちらから

0001.00 H DFTNAME(TEST01) DATEDIT(*YMD/)BNDDIR('QC2LE')                                       
0002.00 F********  商品マスターの登録 ************************************                    
0003.00 FTEST01FM  CF   E             WORKSTN                                                 
0004.00 FSHOHIN    UF A E           K DISK                                                    
0005.00 F                                     INFDS(INFDSF)                                   
0006.00 F*****************************************************************                    
0007.00  *    QTRSRC/QRPGLESRC(TEST01)                                                        
0008.00  *     使用目的    :   更新 (*UPDATE)                                                 
0009.00  *     作成日      :  2021/08/07         14:44:45                                     
0010.00  *     作成者      :  QTR                                                             
0011.00                                                                                       
0012.00 D INFDSF          DS                  QUALIFIED                                       
0013.00  * オープン・フィードバック域   160 BYTES 81-240                                      
0014.00 D  OPNFBK                81    240                                          ファイル名
0015.00 D   ODP_TYPE             81     82                                         ODP タイプ 
0016.00 D   FILE_NAME            83     92                                         ODP タイプ 
0017.00 D   LIBRARY              93    102                                         ODP タイプ 
0018.00 D   MEMBER              129    138                                          メンバー名
0019.00                                                                                       
0020.00 D*( WORK 日付 YYMMDD データ 構造  )                                                     
0021.00 D DATEDS          DS                                                                  
0022.00 D  SRY                    1      2  0                                                 
0023.00 D  SRYMD                  1      8  0                                                 
0024.00 D  YYMMDD                 3      8  0                                                
0025.00 D  YYMM                   3      6  0                                                
0026.00 D  MMDD                   5      8  0                                                
0027.00 D  YY                     3      4  0                                                
0028.00 D  MM                     5      6  0                                                
0029.00 D  DD                     7      8  0                                                
0030.00                                                                                      
0031.00 D SAVEDS        E DS                  EXTNAME(SHOHIN)                                
0032.00 D  DSPDTA                 1   1024                                                   
0033.00 D                                     DIM(1024)                             入力 データ
0034.00                                                                                      
0035.00  *[ 注意 ]                                                                           
0036.00  * このプログラムはパラメータつきで呼び出すことができます。                          
0037.00  * パラメータなしで呼び出された場合は単独で動作します。                              
0038.00 C*----------------------------------------------------+                              
0039.00 C     *ENTRY        PLIST                                                  |         
0040.00 C                   PARM                    SEL001                                   
0041.00 C*----------------------------------------------------+                              
0042.00 C     *LIKE         DEFINE    SHCODE        SEL001                                   
0043.00 C                   IF        %PARMS > 0                                             
0044.00 C                   MOVE      SEL001        SHCODE                                   
0045.00 C                   GOTO      GET_RECORD                                             
0046.00 C                   ENDIF                                                            
0047.00 C*----------------------------------------------------+                              
0048.00 C     RECKEY        KLIST                                                       
0049.00 C                   KFLD                    SHCODE                              
0050.00 C*----------------------------------------------------+                         
0051.00 C*( 初期画面 )                                                                  
0052.00 C*----------------------------------------------------+                         
0053.00 C     START         TAG                                                    |    
0054.00 C                   EXFMT     DSPHEAD                                      |    
0055.00 C*----------------------------------------------------+                         
0056.00 C                   SETOFF                                       99             
0057.00 C*( CF03 )- 終了                                                                
0058.00 C     *IN03         IFEQ      *ON                                          CF03 
0059.00 C                   SETON                                        LR             
0060.00 C   LR              EXSR      LRRTN                                             
0061.00 C   LR              RETURN                                                      
0062.00 C                   GOTO      START                                             
0063.00 C                   ENDIF                                                       
0064.00 C*( ROLLUP )                                                                    
0065.00 C     *IN07         IFEQ      *ON                                          CF03 
0066.00 C                   EXSR      ROLLUP                                            
0067.00 C   99              GOTO      START                                             
0068.00 C                   ENDIF                                                       
0069.00 C*( ROLLDWN )                                                                   
0070.00 C     *IN08         IFEQ      *ON                                          CF03 
0071.00 C                   EXSR      ROLLDWN                                           
0072.00 C   99              GOTO      START                                             
0073.00 C                   ENDIF                                                       
0074.00 C*( 実行キー )                                                                  
0075.00 C     GET_RECORD    TAG                                                         
0076.00 C     *NOKEY        CLEAR                   SHOHINR                             
0077.00 C                   SETOFF                                       90             
0078.00 C     RECKEY        CHAIN     SHOHIN                             90             
0079.00 C  N90              MOVEL     ' 変更 '      DSPMSG                              
0080.00 C   90              MOVEL     ' 入力 '      DSPMSG                              
0081.00 C                   EXSR      CHECK                                             
0082.00 C   99              GOTO      START                                             
0083.00 C*( 明細画面 )                                                                  
0084.00 C*----------------------------------------------------+                         
0085.00 C     DSPLY         TAG                                                    |    
0086.00 C                   EXFMT     DSPDTA01                                     |    
0087.00 C*----------------------------------------------------+                         
0088.00 C                   SETOFF                                       99             
0089.00 C*( CF03 )- 終了                                                                
0090.00 C     *IN03         IFEQ      *ON                                          CF03 
0091.00 C                   SETON                                        LR             
0092.00 C   LR              EXSR      LRRTN                                             
0093.00 C   LR              RETURN                                                      
0094.00 C                   GOTO      DSPLY                                             
0095.00 C                   END                                                    CF03 
0096.00 C*( CF12 )- 前画面                                                                 
0097.00 C     *IN12         IFEQ      *ON                                          CF12    
0098.00 C                   SETOFF                                       12                
0099.00 C                   GOTO      START                                                
0100.00 C                   END                                                    CF12    
0101.00 C*( CF10 )- 更新                                                                   
0102.00 C     *IN10         IFEQ      *ON                                          CF10    
0103.00 C                   SETOFF                                       10                
0104.00 C                   EXSR      CHECK                                                
0105.00 C   99              GOTO      DSPLY                                                
0106.00 C*----------------------------------------------------+                            
0107.00 C   90              WRITE     SHOHINR                                      |       
0108.00 C  N90              UPDATE    SHOHINR                                      |       
0109.00 C*----------------------------------------------------+                            
0110.00 C   90              ADD       1             ADDREC                                 
0111.00 C  N90              ADD       1             CHGREC                                 
0112.00 C                   GOTO      START                                                
0113.00 C                   END                                                    CF10    
0114.00 C*( CF23 )- 削除                                                                   
0115.00 C     *IN23         IFEQ      *ON                                          CF23    
0116.00 C                   SETOFF                                       23                
0117.00 C*----------------------------------------------------+                            
0118.00 C  N90              DELETE    SHOHINR                                      |       
0119.00 C*----------------------------------------------------+                            
0120.00 C  N90              ADD       1             DLTREC                              
0121.00 C                   GOTO      START                                             
0122.00 C                   END                                                    CF23 
0123.00 C*( ROLLUP )                                                                    
0124.00 C     *IN07         IFEQ      *ON                                          CF03 
0125.00 C                   EXSR      ROLLUP                                            
0126.00 C   99              GOTO      DSPLY                                             
0127.00 C                   ENDIF                                                  CF12 
0128.00 C*( ROLLDWN )                                                                   
0129.00 C     *IN08         IFEQ      *ON                                          CF03 
0130.00 C                   EXSR      ROLLDWN                                           
0131.00 C   99              GOTO      DSPLY                                             
0132.00 C                   ENDIF                                                       
0133.00 C*( 実行キー )                                                                  
0134.00 C                   GOTO      DSPLY                                             
0135.00 C*                                                                              
0136.00 C     END           TAG                                                         
0137.00 C******************************************************                         
0138.00 C     *INZSR        BEGSR                                                       
0139.00 C******************************************************                         
0140.00 C*  初期サイクルのみの実行                                                      
0141.00  /FREE                                                                          
0142.00    MSGDTA =  INFDSF.MEMBER +  INFDSF.FILE_NAME +  INFDSF.LIBRARY;               
0143.00  /END-FREE                                                                      
0144.00 C     INZEND        ENDSR                                                      
0145.00 C******************************************************                        
0146.00 C     CHECK         BEGSR                                                      
0147.00 C******************************************************                        
0148.00 C*( 明細チエック )                                                             
0149.00 C*                                                                             
0150.00 C     CHKEND        ENDSR                                                      
0151.00 C******************************************************                        
0152.00 C     LRRTN         BEGSR                                                      
0153.00 C******************************************************                        
0154.00 C                   MOVE      'Y'           ANS                                
0155.00 C*----------------------------------------------------+                        
0156.00 C     ENDDSP        TAG                                                    |   
0157.00 C                   EXFMT     ENDOPT                                       |   
0158.00 C*----------------------------------------------------+                        
0159.00 C*( CF03 )- 終了                                                               
0160.00 C     *IN03         IFEQ      *ON                                          CF03
0161.00 C                   SETON                                        LR            
0162.00 C                   RETURN                                                     
0163.00 C                   END                                                    CF03
0164.00 C*( CF12 )- 前画面                                                             
0165.00 C     *IN12         IFEQ      *ON                                          CF03
0166.00 C                   SETOFF                                       LR            
0167.00 C                   LEAVESR                                                    
0168.00 C                   END                                                 
0169.00 C*( 実行キー )                                                          
0170.00 C                   SETON                                        LR     
0171.00 C                   RETURN                                              
0172.00 C                   ENDSR                                               
0173.00 C******************************************************                 
0174.00 C     ROLLUP        BEGSR                                               
0175.00 C******************************************************                 
0176.00 C                   SETOFF                                       07     
0177.00 C     RECKEY        SETGT     SHOHIN                                    
0178.00 C                   READ      SHOHIN                                 61 
0179.00 C   61              SETON                                        99     
0180.00 C                   ENDSR                                               
0181.00 C******************************************************                 
0182.00 C     ROLLDWN       BEGSR                                               
0183.00 C******************************************************                 
0184.00 C                   SETOFF                                       07     
0185.00 C     RECKEY        SETLL     SHOHIN                                    
0186.00 C                   READP     SHOHIN                                 61 
0187.00 C   61              SETON                                        99     
0188.00 C                   ENDSR    


                                             

[解説]

このRPGソースはいろいろな用途にも使えるように考慮されており
汎用的に作られています。

まず初めに

0038.00 C*----------------------------------------------------+                              
0039.00 C     *ENTRY        PLIST                                                  |         
0040.00 C                   PARM                    SEL001                                   
0041.00 C*----------------------------------------------------+                              
0042.00 C     *LIKE         DEFINE    SHCODE        SEL001                                   
0043.00 C                   IF        %PARMS > 0                                             
0044.00 C                   MOVE      SEL001        SHCODE                                   
0045.00 C                   GOTO      GET_RECORD                                             
0046.00 C                   ENDIF

としてパラメータつきでもパラメータなしでも呼び出すことが
できます。
外部からパセメータつきで商品コードを指定して呼び出された場合は
初期画面を表示せずに指定された商品レコードを取り出して
明細画面を表示します。
 
パラメータの指定がない場合は商品コードを指定させるために
初期画面を表示して商品コードの似有力を求めます。

つまりサブ・プログラムとして用途も兼ね備えたプログラムとして
生成されています。

0141.00  /FREE                                                                          
0142.00    MSGDTA =  INFDSF.MEMBER +  INFDSF.FILE_NAME +  INFDSF.LIBRARY;               
0143.00  /END-FREE

 

には FREEフォーマットの使い方も示しています。
すべてFREEフォーマットにする必要はありませんが
少しずつFREEフォーマットに慣れていくと便利な場面が多くなります。

[コンパイル]

CRTBNDRPG PGM(QTROBJ/TEST01) SRCFILE(QTRSRC/QRPGLESRC) DFTACTGRP(*NO) ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)

[実行]

CALL QTROBJ/TEST01 + [実行]

[初期画面]

TEST01                    商品マスターの登録                                   
                                                               日付  2021/08/07
 商品コード  NV-CF1                                            時刻  16:00:15  
                                                                             
                                                                               
                                                                               
              必要な項目を打鍵して実行キーを押して下さい。                     
                                                                               
                                                                        
                                                                               
                                                                               
                                                                               
F3= 終了                                                 ROLL UP/DOWN          

[解説]

商品コードに NV-CF1 と入力して実行キーを押すと次のように明細画面が表示される。

[明細画面]

TEST01                    商品マスターの登録                           変更    
                                                               日付  2021/08/07
 商品コード  NV-CF1                                            時刻  16:12:16  
                                                                               
 商品名       Cカセット編集ビデオ                                             
 単価           58,000                                                         
 品種コード  0002                                                              
 品種名                                                                        
                                                                      
                                                                               
                                                                ROLL UP/DOWN   
F3= 終了          F10= 更新            F12= 前画面              F23= 削除      

[解説]

品種名が表示されていませんがこれは品種マスターとの結合記述は自動生成されていないからです。

0002.00 F********  商品マスターの登録 ************************************
0003.00 FTEST01FM  CF   E             WORKSTN                             
0004.00 FSHOHIN    UF A E           K DISK                                
0005.00 F                                     INFDS(INFDSF)               
0006.00 FHINSHU    IF   E           K DISK                                
0007.00 F*****************************************************************

0146.00 C******************************************************              
0147.00 C     CHECK         BEGSR                                            
0148.00 C******************************************************              
0149.00 C*( 明細チエック )                                                   
0150.00 C     SHSCOD        CHAIN     HINSHU                               99
0151.00 C*                                                                   
0152.00 C     CHKEND        ENDSR                                            

のように追加するだけで

 TEST01                    商品マスターの登録                           変更    
                                                                日付  2021/08/07
  商品コード  NV-CF1                                            時刻  16:21:18  
                                                                                
  商品名       Cカセット編集ビデオ                                             
  単価           58,000                                                         
  品種コード  0002                                                              
  品種名       ビデオデッキ                                                     
                                                                            
                                                                                
                                                                 ROLL UP/DOWN   
 F3= 終了          F10= 更新            F12= 前画面              F23= 削除      

[解説]

このように品種名「ビデオデッキ」が表示されます。