RPG

542. AIによるDSPFソースの自動生成に成功

AIを教育してDSPFソースを設計させることに
成功した。

AIにあるデータ・ベースのDDSソースを示して
そのデータ・ベースを保守するための
DSPFソースを生成させる実験である。

AIにいきなりマスターファイル保守のための
DSPFソースを作れと指示しても
かなり文法的な間違いをして
それらを訂正するのに時間がかかる。
例えば
 
 
・コメントの開始位置を1桁目から始めてしまう。
・文字フィールドであるのに小数= 0を記述してしまう。
・数字フィールドのタイプに S を記述してしまう。
( DSPFのDDSでは数字フィールドのタイプは
Y しか記述することはできない。)

・大幅に出力の記述位置がずれてしまう。
・固定情報の記述にVALUEキー・ワードを使う。
 (固定情報はDFTキー・ワードを使うのが正しいが
  実際にはほとんど使わない)

というような人間ではやらないような間違いを
たくさんするのでどこから直していいのやら
わからないほどたくさんの間違った記述を行う。
そこで

①AIが間違いそうなミスをやらないように
 最初に注意を重ねておく。

②正しいDSPFソースのモデルを示して与える。

ことによって最初から文法ミスのないDSPFソースを
AIは生成することができる。
ただし模範とするモデルのDSPFソースもある一定の
書き方をしておかないとAIはそれを見逃して
しまうことがある。

これらに注意してAIにDSPFソースを生成させることに
成功した。
以下はAIが自動生成したDSPFソースであり
一切人手による修正は加えていない。

     A                                      DSPSIZ(27 132 *DS4 24 80 *DS3)
     A  *DS3                                MSGLOC(24)
     A  *DS4                                MSGLOC(27)
     A                                      PRINT
     A                                      HELP
     A                                      HLPSCHIDX(*LIBL/QHPW1)
     A                                      ALTHELP(CA01)
     A                                      HLPTITLE(' 商品マスター入力画面 ')
     A                                      HLPPNLGRP('DFU/DESL/GEN' QHDZDF1)
     A          R DSPHEAD                   TEXT(' 初期画面レコード ')
     A                                      CHANGE(01)
     A                                      CF03(03 ' 終了 ')
     A                                      CF05(05 ' 再表示 ')
     A                                      CF06(06 ' 様式の選択 ')
     A                                      CF09(09 ' 挿入 ')
     A                                      CF10(10 ' 入力 ')
     A                                      CF11(11 ' 変更 ')
     A                                      ROLLUP(07 ' ROLLUP')
     A                                      ROLLDOWN(08 'ROLLDWN')
     A                                  1  2' 商品マスターの登録 '
     A* 表示モード記述
     A                                  1 49' モード  . . :'                      
     A            DSPMOD        14A  O  1 66                                     
     A                                  2  2' 様式  . . . . :'                    
     A            RECORD        10A  O  2 21                                     
     A                                  2 49' ファイル  . :'                      
     A            FILE          10A  O  2 66                                     
     A* キー・フィールド記述
     A                                  4  2' 商品コード :'                       
     A            SHCODE        10A  B  4 16                                     
     A  43                                  DSPATR(RI)                            
     A                                      CHECK(FE)                             
     A                                 12 14' 必要な項目を入力して,実行キーを +  
     A                                       押してください。 ' COLOR(BLU)        
     A* 機能キーの記述
     A                                 22  2'F3= 終了 ' COLOR(BLU)                
     A                                 22 26'F5= 最新表示 ' COLOR(BLU)            
     A                                 22 51'F9= 挿入  ' COLOR(BLU)                
     A                                 22 71'F10= 入力 ' COLOR(BLU)                
     A                                 23  2'F11= 変更 ' COLOR(BLU)                

     A          R DSPDTA01                  TEXT(' 明細画面レコード 01')          
     A                                      CHANGE(01)                            
     A                                      CF03(03 ' 終了 ')                     
     A                                      CF05(05 ' 再表示 ')                   
     A                                      CF09(09 ' 挿入 ')                     
     A                                      CF10(10 ' 入力 ')                     
     A                                      CF11(11 ' 変更 ')                     
     A                                      CF12(12 ' 前画面 ')                   
     A                                      CF23(23 ' 削除 ')                     
     A                                      ROLLUP(07 ' ROLLUP')                  
     A                                      ROLLDOWN(08 'ROLLDWN')                
     A                                      SETOF(99)                             
     A                                  1  2' 商品マスターの登録 '               
     A* 表示モード記述
     A                                  1 49' モード  . . :'                      
     A            DSPMOD        14A  O  1 66                                     
     A                                  2  2' 様式  . . . . :'                    
     A            RECORD        10A  O  2 21                                     
     A                                  2 49' ファイル  . :'                      
     A            FILE          10A  O  2 66                                     
     A* フィールド記述
     A                                  4  2' 商品コード :'                       
     A            SHCODE        10A  B  4 16                                     
     A  43                                  DSPATR(RI)                            
     A                                      DSPATR(PR)                            
     A  32                                  DSPATR(UL)                            
     A                                      CHECK(FE)                             
     A                                  5  2' 商品名 :'                           
     A            SHNAME        24A  B  5 16                                     
     A  43                                  DSPATR(RI)                            
     A  30                                  DSPATR(PR)                            
     A N30                                  DSPATR(UL)                            
     A                                      CHECK(FE)                             
     A                                  6  2' 単価 :'                             
     A            SHTANK         7S 0B  6 16                                     
     A  43                                  DSPATR(RI)                            
     A                                      CHECK(FE)                             
     A                                  7  2' 品種コード :'                       
     A            SHSCOD         4A  B  7 16                                     
     A  43                                  DSPATR(RI)                            
     A                                      CHECK(FE)                             
     A* 機能キーの記述
     A                                 22  2'F3= 終了 ' COLOR(BLU)                
     A                                 22 26'F5= 最新表示 ' COLOR(BLU)            
     A                                 22 51'F9= 挿入  ' COLOR(BLU)                
     A                                 22 71'F10= 入力 ' COLOR(BLU)                
     A                                 23  2'F11= 変更 ' COLOR(BLU)               
     A                                 23 26'F23= 削除 ' COLOR(BLU)               
     A                                 23 51'F12= 前画面 ' COLOR(BLU)             

     A          R ENDOPT                     TEXT(' 終了画面 ')                   
     A                                      CSRLOC(LIN POS)                      
     A                                  1 33' データ入力の終了 ' DSPATR(HI)      
     A                                  3  4' 処理されたレコード数 '             
     A  30                                  DSPATR(ND)                           
     A                                  5  6' 追加  . . . . . :'                 
     A  30                                  DSPATR(ND)                           
     A            ADDRCD         5Y 0O  5 35EDTCDE(1)                            
     A  30                                  DSPATR(ND)                           
     A                                  6  6' 変更  . . . . . :'                 
     A  30                                  DSPATR(ND)                           
     A            CHGRCD         5Y 0O  6 35EDTCDE(1)                            
     A  30                                  DSPATR(ND)                           
     A                                  7  6' 削除  . . . . . :'                 
     A  30                                  DSPATR(ND)                           
     A            DLTRCD         5Y 0O  7 35EDTCDE(1)                            
     A  30                                  DSPATR(ND)                           
     A                                 12  2' 選択項目を打鍵して,実行キーを押 + 
     A                                       してください。 ' COLOR(BLU)         
     A                                 14  5' データ入力の終了  . . . . . .'     
     A            ANS            1A  B 14 39VALUES('Y' 'N')                      
     A                                 14 53'Y=YES, N=NO'                        
     A                                 23  2'F3= 終了 ' COLOR(BLU)                
     A                                 23 15'F12= 前画面 ' COLOR(BLU)             
     A            LIN            3S 0H                                           
     A            POS            3S 0H                                           

[解説]

このようにお手本とする社内のDSPFソースを示してやれば
AIはほぼそのとおりのソースを生成してくれる。
これまでの生成ツールは正確無比に指示して
好むと好まざる生成ツールのテンプレートに従ったソースしか
生成することはできなかった。
しかしAIによる生成なら社内でこれまで使用してきたソースを
お手本としてこのとおりに作れと言うことができる。
実は現在、RPGの生成も実験しているが
AIはILE-RPG, RPG/400または RPG IIIでも生成できると豪語している。
社内でいつまでもRPG IIIがかわりやすいと固執している会社では
いいかも知れない。
社内のRPGの書き方は先輩諸氏から受け継いだもので
いろいろ個性的なソースがあるはずだが
社内ルールを継承している書き方のソースが生成されるのは
非常にわかりやすいのではないだろうか?
 
 
定年退職に伴う人手不足や若手の育成問題もあるが
AIの導入はこれらの問題をスムースに解決してくれる。
既存のソフトウェア資産の解説や問題点の定義なども
AIがあれば瞬時に解決する。

年初で宣言したように2026年はAI元年の年であり
IBM ソフトウェア製品もAIアシストのない製品は
考えられない。

これらのAIによるソースの生成は技術ショート・セミナーで
紹介を予定している。