サポート情報

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

掲載日:2026/02/12

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

AIにあるデータ・ベースのDDSソースを示して
そのデータ・ベースを保守するための
DSPFソースを生成させる実験です。
 
 
社内にある既存のDSPFソースを参考に示して
それをモデルとして完全に実行可能な
DSPFソースを生成させることに成功しました。

■ 最初からは成功しない

 
 
AIと言えども最初から完璧なDSPFソースを
作ることはできません。
何度か誤りを訂正することによって
正しいソースを生成させることが
できるようになります。
ということは最初から誤りやすい点を注意しておいて
模範となるソースを示してやれば
最初の生成で正しいソースを生成することができます。

■ データ・ベースのDDSソースを提示

 
 
マスターテァイルの保守の対象とするデータ・ベースの
DDSソースをAIに教えます。
今回は商品マスターの保守の作成を指示します。

①商品マスター(QTRFIL/SHOHIN)のDDSソースを示す。

 商品マスターを保守するためのDSPFを作成することを
AIに宣言します。

     A**********************************************                      
     A*   SHOHIN  :  商品マスターファイル          *                      
     A**********************************************                      
     A                                      UNIQUE                        
     A          R SHOHINR                   TEXT(' 商品マスターレコード ')
     A*                                                                   
     A            SHCODE        10A         COLHDG(' 商品コード ')        
     A            SHNAME        24O         COLHDG(' 商品名 ')            
     A            SHTANK         7S 0       COLHDG(' 単価 ')              
     A                                      EDTCDE(1)                     
     A            SHSCOD         4A         COLHDG(' 品種コード ')        
     A*                                                                   
     A          K SHCODE                                                  
 

AIはこの商品マスターを保守するためのDSPFソースの生成を
目的として認識します。
 
 
②次に参考DSPFソースを模範として示してこれに
 従って生成するように指示します。
参考モデルとして指示したのは次の「品種マスターの登録」のための
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                                           

[解説]

 
 
AIは参考として提示したDSPFソースのどこが見出しやデータ部分であるかを読み取って
理解して正確にDSPFソースを生成しました。
まるで優秀な生徒のように正確に位置も計算しますので
適切なモデルさえ与えてやれば正確なDDSソースを生成してくれます。
このようにサンプル・ソースを教えてやることで
AIは非常に目的を具体的に理解したようです。

■ 今回のAI生成実験で重要なのは

 
 
DDSの仕様やDSPFソースの構造を事細かに指定しなくても
お手本となるソースを示して「このとおりに」と
人間に指示するようにAIに指示するだけで
AIは正しく生成することができることです。
つまり
①AIが間違いやすいエラーをあらかじめ警告して
 注意しておく。何度かの生成の実験でAIがどのような
間違いを起こすのかをわく理解した上で
注意と警告を促しておきます。
②模範とするモデルのソースを示してやることで
書き方を理解して学習させる。
の二つの点を抑えておけばAIは正しいソースを
生成できることがわかりました。

■ 模範となるモデル・サンプル・ソースを示してやれば

 
 
これまでリリースされてきた生成ツールや
簡易言語では生成せのためのパラメータなどの
指示はすべてユーザーが入力して指示する必要が
ありました。
つまりすべてツールに指示を与える必要が
ありましたし結果として生成されるソースは
そのツールの規定どおりのものしか生成することは
できませんでした。
しかし今回のAIへの指示は先輩プログラマーが
後輩の新人プログラマーにやるように
参考とするソースをAIに程場するだけの指示です。
さらにAIが間違いそうな箇所だけは
AIに注意しておきます。

■ 社内ルールに従って生成可能

 
 
このように参考書としての既存のDSPFソースを
示すだけでAIはそのとおりに真似てソースを
生成してくれました。
このようにこの技術を製品化すれば
お客さまもAIを使って指示するときは
社内ルールに基づいたいつものDSPFソースを
AIに示せばAIはそのお手本どおりに作ってくれることに
なります。
つまりこれまでの社内規則を模倣して正確に
作ってくれる正確で優秀な新入社員が増えたことになります。

■ 人手不足、退職者に伴う人員不足などにもAIが解決

_

これまで人手不足に派遣社員や社外の協力会社などで
補おうとしてきましたがAIならば短期間のうちに
社内ルールを理解して社内規則や慣習のとおりの
プログラム開発を行うことができます。

ある会社ではフィールドをひとつ増やすときも
協力会社に依頼するために毎月高額な保守料を
払っていると聞いたことがあります。

AIを利用すればこんな無駄な費用は必要ありません。

■ IBM i開発の将来は

AIまかせでプログラムを生成したり修正することが
できるようになればプログラムを知らない担当者であっても
AIを使えるのであればRPGソースは大した問題ではなくなります。
ソースをくわしく追跡しなくてもAIに適切な指示を出せれば
十分です。
このようにAIを十分活用できる企業は競争力が高まり
利益率も大幅に向上することでしょう。
AIの活用なくては今後のIBM iの開発も考えられなくなります。

■ IBM iの歴史の転換点

今回のAIによる自動生成は長いIBM iの開発歴史の
転換点です。
RPGソースの生成実験も既に行っています。
AIはILE-RPG, フリー・フォーマットやRPG IIIであっても
生成することができます。
しかも標準的なRPGソースだけでなく
お客さまの社内でこれまで使用しているRPGソースの書き方に
従った書き方をそのまま踏襲してくれます。
社内はまだRPG IIIで開発しているというお客さまでも
違和感なくAIが生成したRPGソースを利用することができます。
もちろんCOBOLやCLP, CMD の生成も可能です。

このようにIBM iの世界でも急速にAIの利用が進んでいます。
人手不足や教育問題もAIで急速に解決することができる
時代になりました。

この成果は次回の技術ショート・セミナーで発表致します。
お見逃しのないようにお申込みください。

― 新しい技術はいつもオフィスクアトロから ―