2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

物理ファイルと画面ファイル(DSPF)を作成してみた ~マスタ設計も生成AIにおまかせ~

Last updated at Posted at 2025-10-17

1.はじめに

こちらの記事では、物理ファイル作成と画面ファイル(以降はDSPF)作成について、どのようなことを実施してきたかをまとめています。
(今回実施したことが、テーマであるRPGLEでは無い事には、目をつぶってください。。。)

また、初級者が今ある知識を総動員させて作成した記事となっているため、至らない点あるかと思いますが、何卒ご容赦いただけますと幸いです。

2.準備

開発を行う環境についてですが、当時(2025/4)の最新バージョンはIBM i 7.6でしたが、出荷されて間もないということもあり、IBM i 7.5で進めることにしました。

自社の環境がある人はそれを使い、無い人はPUB400もしくはIBM TechZoneを利用することになりました。
(2025/10/14時点ではどちらも無料で利用できますが、IBM TechZoneのIBM i デモ環境はビジネスパートナー向けしか存在しませんでした)

IBM TechZoneですと環境の維持期間が短いという事もあり、今回の検証ではPUB400を利用することにしました。

環境の借り方などで気になる方がいらっしゃいましたら、下記の記事を参考にしてみてください。

3.取引先マスタの設計

取引先マスタの保守アプリを作成するという事で、マスタの設計をしなければいけませんが、実務経験が浅いため、どのような項目が必要か見当もつきません。。。

先ず生成AIに聞いてみる

見当がつかず悩む前に、先ずは生成AIに聞いてみましょう!

下記のようにプロンプトを作成してみました。
物理ファイルに反映しやすいように、条件も組み込んでいます。

プロンプト
あなたはシステムエンジニアで、データベースの設計のプロフェッショナルです。
「取引先マスタ」のデータベースを作成するのですが、その際の項目を提示してください。

#条件
・項目の物理名の頭2桁をTRに統一して、名称の全体は6文字の制約で作成してください
・論理名、データ型(数値、小数、文字(シングルかマルチ))、文字数、小数桁数を教えてください
・論理名は日本語と英語の2つを提示ください
・金額や数量などの数値を4つ以上盛り込んでみてください

返ってきた結果を表にまとめてみました。
image.png

いい感じですね。必要そうな項目も一通りそろっている感じがします。
マスタの設計レベルであれば、生成AIが簡単にやってくれますね。

4.物理ファイルの作成

続いては取引先マスタの設計から物理ファイルを作成してみます。
こちらも生成AIに聞いてみます。
(長くなってしまったので、興味のある方は「▶」から展開してご確認ください。)

プロンプト
プロンプト
あなたは、IBM i 7.5の技術者でRPGLEを使用してコーディングしています。 
取引先マスタ保守アプリを作成する際の、DDSのソース物理ファイルと取引先マスタの物理ファイルを
作成してください。また、作成する際のコマンドも教えてください。

#注意点
・ライブラリ名は「XXXXXX1」です。
・ファイル名は「TRMAST」です。

#レイアウト
☆Customer CodeとCustomer Branch Codeの複合キーです
☆シングルバイトはSB、ダブルバイトはDBと表記
☆項目名:フィールド名 データ型 桁数 小数点以下 SB/DB
☆レコード名は「TRMASTR」です。

・Customer Code:TRTRCD 文字 10  SB
・Customer Branch Code:TRTRSC 文字 3  SB
・Customer Name:TRNM01 文字 50  DB
・Customer Short Name:TRNM02 文字 20  SB
・Postal Code:TRPOST 文字 8  SB
・Address Line 1:TRADR1 文字 50  DB
・Address Line 2:TRADR2 文字 50  DB
・Address Line 3:TRADR3 文字 50  DB
・Phone Number:TRTELN 文字 15  SB
・Fax Number:TRFAXN 文字 15  SB
・Email Address:TRMAIL 文字 60  SB
・Total Sales Amount:TRURKN 数字 15 2
・Total Purchas Amount:TRSIKN 数字 15 2
・Accounts Receivable:TRURZN 数字 15 2
・Accounts Payable:TRSIZN 数字 15 2
・Bank Name:TRBKNM 文字 30  DB
・Bank Code:TRBKCD 文字 4  SB
・Branch Code:TRBRCD 文字 3  SB
・Account Number:TRACCD 文字 7  SB
・Account Type:TRKUBN 文字 1  SB
・Contact Person:TRTNTM 文字 30  DB
・Created Date:TRRGDT 数字 8 0
・Created Time:TRRGTM 数字 6 0
・Updated Date:TRUPDT 数字 8 0
・Updated Time:TRUPTM 数字 6 0

作成したプロンプトでそれぞれの生成AIに聞いてみる

こちらも長くなっているため、興味のある方は「▶」から展開してご確認ください。

ChatGPT
ソース物理ファイル作成コマンド
CRTSRCPF FILE(XXXXXX1/QDDSSRC) RCDLEN(112)
物理ファイル作成コマンド
CRTPF FILE(XXXXXX1/TRMAST) SRCFILE(XXXXXX1/QDDSSRC)
物理ファイル ソース
      *****************************************************************
      *  File Name   : TRMAST                                         *
      *  Library     : XXXXXX1                                        *
      *  Description : 取引先マスタ                                   *
      *  Record Name : TRMASTR                                        *
      *****************************************************************
     A          R TRMASTR
     A            TRTRCD        10A         COLHDG('Customer' 'Code')
     A            TRTRSC         3A         COLHDG('Customer' 'Branch')
     A            TRNM01        50A         CCSID(5026) COLHDG('Customer' 'Name')
     A            TRNM02        20A         COLHDG('Customer' 'Short Name')
     A            TRPOST         8A         COLHDG('Postal' 'Code')
     A            TRADR1        50A         CCSID(5026) COLHDG('Address' 'Line1')
     A            TRADR2        50A         CCSID(5026) COLHDG('Address' 'Line2')
     A            TRADR3        50A         CCSID(5026) COLHDG('Address' 'Line3')
     A            TRTELN        15A         COLHDG('Phone' 'Number')
     A            TRFAXN        15A         COLHDG('Fax' 'Number')
     A            TRMAIL        60A         COLHDG('Email' 'Address')
     A            TRURKN        15P 2       COLHDG('Total' 'Sales Amount')
     A            TRSIKN        15P 2       COLHDG('Total' 'Purchas Amount')
     A            TRURZN        15P 2       COLHDG('Accounts' 'Receivable')
     A            TRSIZN        15P 2       COLHDG('Accounts' 'Payable')
     A            TRBKNM        30A         CCSID(5026) COLHDG('Bank' 'Name')
     A            TRBKCD         4A         COLHDG('Bank' 'Code')
     A            TRBRCD         3A         COLHDG('Branch' 'Code')
     A            TRACCD         7A         COLHDG('Account' 'Number')
     A            TRKUBN         1A         COLHDG('Account' 'Type')
     A            TRTNTM        30A         CCSID(5026) COLHDG('Contact' 'Person')
     A            TRRGDT         8P 0       COLHDG('Created' 'Date')
     A            TRRGTM         6P 0       COLHDG('Created' 'Time')
     A            TRUPDT         8P 0       COLHDG('Updated' 'Date')
     A            TRUPTM         6P 0       COLHDG('Updated' 'Time')

     A          K TRTRCD
     A          K TRTRSC
Copilot

ソース物理ファイル作成コマンド:なし

物理ファイル作成コマンド
CRTPF FILE(XXXXXX1/TRMAST) SRCFILE(XXXXXX1/QRPGLESRC) SRCMBR(TRMAST)
物理ファイル ソース
     A          R TRMASTR                    TEXT('取引先マスタレコード')
     A            TRTRCD        10A         COLHDG('Customer' 'Code')
     A            TRTRSC         3A         COLHDG('Customer' 'Branch Code')
     A            TRNM01        50A         CCSID(930) COLHDG('Customer' 'Name')
     A            TRNM02        20A         COLHDG('Customer' 'Short Name')
     A            TRPOST         8A         COLHDG('Postal' 'Code')
     A            TRADR1        50A         CCSID(930) COLHDG('Address' 'Line 1')
     A            TRADR2        50A         CCSID(930) COLHDG('Address' 'Line 2')
     A            TRADR3        50A         CCSID(930) COLHDG('Address' 'Line 3')
     A            TRTELN        15A         COLHDG('Phone' 'Number')
     A            TRFAXN        15A         COLHDG('Fax' 'Number')
     A            TRMAIL        60A         COLHDG('Email' 'Address')
     A            TRURKN        15S 2       COLHDG('Total' 'Sales Amount')
     A            TRSIKN        15S 2       COLHDG('Total' 'Purchas Amount')
     A            TRURZN        15S 2       COLHDG('Accounts' 'Receivable')
     A            TRSIZN        15S 2       COLHDG('Accounts' 'Payable')
     A            TRBKNM        30A         CCSID(930) COLHDG('Bank' 'Name')
     A            TRBKCD         4A         COLHDG('Bank' 'Code')
     A            TRBRCD         3A         COLHDG('Branch' 'Code')
     A            TRACCD         7A         COLHDG('Account' 'Number')
     A            TRKUBN         1A         COLHDG('Account' 'Type')
     A            TRTNTM        30A         CCSID(930) COLHDG('Contact' 'Person')
     A            TRRGDT         8S 0       COLHDG('Created' 'Date')
     A            TRRGTM         6S 0       COLHDG('Created' 'Time')
     A            TRUPDT         8S 0       COLHDG('Updated' 'Date')
     A            TRUPTM         6S 0       COLHDG('Updated' 'Time')
     A          K TRTRCD
Perplexity

ソース物理ファイル作成コマンド:なし

物理ファイル作成コマンド
CRTPF FILE(XXXXXX1/TRMAST) SRCFILE(XXXXXX1/QDDSSRC) SRCMBR(TRMAST)
物理ファイル ソース
     A          R TRMASTR                             
     A            TRTRCD       10A         COLHDG('Customer Code')              
     A            TRTRSC        3A         COLHDG('Customer Branch Code')       
     A            TRNM01       50S         COLHDG('Customer Name')              
     A            TRNM02       20A         COLHDG('Customer Short Name')        
     A            TRPOST        8A         COLHDG('Postal Code')                
     A            TRADR1       50S         COLHDG('Address Line 1')             
     A            TRADR2       50S         COLHDG('Address Line 2')             
     A            TRADR3       50S         COLHDG('Address Line 3')             
     A            TRTELN       15A         COLHDG('Phone Number')               
     A            TRFAXN       15A         COLHDG('Fax Number')                 
     A            TRMAIL       60A         COLHDG('Email Address')              
     A            TRURKN       15P 2       COLHDG('Total Sales Amount')         
     A            TRSIKN       15P 2       COLHDG('Total Purchas Amount')       
     A            TRURZN       15P 2       COLHDG('Accounts Receivable')        
     A            TRSIZN       15P 2       COLHDG('Accounts Payable')           
     A            TRBKNM       30S         COLHDG('Bank Name')                  
     A            TRBKCD        4A         COLHDG('Bank Code')                  
     A            TRBRCD        3A         COLHDG('Branch Code')                
     A            TRACCD        7A         COLHDG('Account Number')             
     A            TRKUBN        1A         COLHDG('Account Type')               
     A            TRTNTM       30S         COLHDG('Contact Person')             
     A            TRRGDT        8P 0       COLHDG('Created Date')               
     A            TRRGTM        6P 0       COLHDG('Created Time')               
     A            TRUPDT        8P 0       COLHDG('Updated Date')               
     A            TRUPTM        6P 0       COLHDG('Updated Time')               
     A          K TRTRCD                                                 
     A          K TRTRSC                                                 
GenSpark
ソース物理ファイル作成コマンド
CRTSRCPF FILE(XXXXXX1/QDDSSRC) RCDLEN(112)
物理ファイル作成コマンド
STRSEU SRCFILE(XXXXXX1/QDDSSRC) SRCMBR(TRMAST) TYPE(PF)
物理ファイル ソース
     A*%%TS RD  20240514  123456  USERID    IBM i 7.5 取引先マスタファイル
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A                                      CA03(03 '終了')
     A                                      PRINT
     A          R TRMASTR                   TEXT('取引先マスタレコード')
     A*%%TS SD  20240514  123456  USERID    取引先マスタレコード定義
     A*%%EC
     A            TRTRCD        10A         COLHDG('取引先' 'コード')
     A                                      TEXT('取引先コード')
     A            TRTRSC         3A         COLHDG('支店' 'コード')
     A                                      TEXT('取引先支店コード')
     A            TRNM01        50G         COLHDG('取引先名称')
     A                                      TEXT('取引先名称')
     A            TRNM02        20A         COLHDG('取引先略称')
     A                                      TEXT('取引先略称')
     A            TRPOST         8A         COLHDG('郵便番号')
     A                                      TEXT('郵便番号')
     A            TRADR1        50G         COLHDG('住所1')
     A                                      TEXT('住所1')
     A            TRADR2        50G         COLHDG('住所2')
     A                                      TEXT('住所2')
     A            TRADR3        50G         COLHDG('住所3')
     A                                      TEXT('住所3')
     A            TRTELN        15A         COLHDG('電話番号')
     A                                      TEXT('電話番号')
     A            TRFAXN        15A         COLHDG('FAX番号')
     A                                      TEXT('FAX番号')
     A            TRMAIL        60A         COLHDG('メールアドレス')
     A                                      TEXT('メールアドレス')
     A            TRURKN        15S 2       COLHDG('売上金額')
     A                                      TEXT('売上合計金額')
     A            TRSIKN        15S 2       COLHDG('仕入金額')
     A                                      TEXT('仕入合計金額')
     A            TRURZN        15S 2       COLHDG('売掛金')
     A                                      TEXT('売掛残高')
     A            TRSIZN        15S 2       COLHDG('買掛金')
     A                                      TEXT('買掛残高')
     A            TRBKNM        30G         COLHDG('銀行名')
     A                                      TEXT('銀行名')
     A            TRBKCD         4A         COLHDG('銀行' 'コード')
     A                                      TEXT('銀行コード')
     A            TRBRCD         3A         COLHDG('支店' 'コード')
     A                                      TEXT('支店コード')
     A            TRACCD         7A         COLHDG('口座番号')
     A                                      TEXT('口座番号')
     A            TRKUBN         1A         COLHDG('口座' '区分')
     A                                      TEXT('口座区分')
     A            TRTNTM        30G         COLHDG('担当者名')
     A                                      TEXT('担当者名')
     A            TRRGDT         8S 0       COLHDG('登録日付')
     A                                      TEXT('登録日付')
     A            TRRGTM         6S 0       COLHDG('登録時刻')
     A                                      TEXT('登録時刻')
     A            TRUPDT         8S 0       COLHDG('更新日付')
     A                                      TEXT('更新日付')
     A            TRUPTM         6S 0       COLHDG('更新時刻')
     A                                      TEXT('更新時刻')
     A          K TRTRCD
     A          K TRTRSC

聞き方が悪かったのか、CopilotPerplexityはソース物理ファイル作成コマンドを提示してくれませんでした。ですが、提示されたコマンドに関しては、問題無く使用できそうです。
(一部、QRPGLESRCに作成しようとしていますが。。。)

物理ファイルのソースはそれぞれ特色がありますが、どのソースもエラーが出ます。
ChatGPTCopilotは非常に似ており、CCSIDと付けたことで若干桁数オーバーしています。
image.png

Perplexityに関しては、ほとんどの行で桁ずれを起こしてしまっています。
ソースとしてはきれいに出力されている感覚です。
image.png

GenSparkに関しては、DSPFで見るような記述がありました。
image.png

また、これは指定していないためかもしれませんが、全てのソースにUniqueがありません。

ChatGPTとPerplexityで再チャレンジ

正解に近かった2つのAIに絞って、下記のことを先ほどのプロンプトに続けて聞いてみます。

  • Uniqueを付けてもらう
  • ダブルバイトはデータ・タイプをOにしてもらう
  • ChatGPTはCCSIDの記述を削除してもらう
  • Perplexityは位置などが明記されたIBMドキュメントで学習してから返答してもらう
プロンプト
さきほどのソースに、下記の要件を反映ください。 
・Uniqueにしてください 
・ダブルバイトのデータ・タイプはOで記述ください 
・CCSIDの記述は必要無いので削除ください // ChatGPTの場合
・[URL]のように桁位置を修正ください // Perplexityの場合

下記のように返答がきました。

ChatGPT
物理ファイル ソース
      *****************************************************************
      *  File Name   : TRMAST                                         *
      *  Library     : XXXXXX1                                        *
      *  Description : 取引先マスタ                                   *
      *  Record Name : TRMASTR                                        *
      *****************************************************************
     A          R TRMASTR
     A            TRTRCD        10A         COLHDG('Customer' 'Code')
     A            TRTRSC         3A         COLHDG('Customer' 'Branch')
     A            TRNM01        50O         COLHDG('Customer' 'Name')
     A            TRNM02        20A         COLHDG('Customer' 'Short Name')
     A            TRPOST         8A         COLHDG('Postal' 'Code')
     A            TRADR1        50O         COLHDG('Address' 'Line1')
     A            TRADR2        50O         COLHDG('Address' 'Line2')
     A            TRADR3        50O         COLHDG('Address' 'Line3')
     A            TRTELN        15A         COLHDG('Phone' 'Number')
     A            TRFAXN        15A         COLHDG('Fax' 'Number')
     A            TRMAIL        60A         COLHDG('Email' 'Address')
     A            TRURKN        15P 2       COLHDG('Total' 'Sales Amount')
     A            TRSIKN        15P 2       COLHDG('Total' 'Purchas Amount')
     A            TRURZN        15P 2       COLHDG('Accounts' 'Receivable')
     A            TRSIZN        15P 2       COLHDG('Accounts' 'Payable')
     A            TRBKNM        30O         COLHDG('Bank' 'Name')
     A            TRBKCD         4A         COLHDG('Bank' 'Code')
     A            TRBRCD         3A         COLHDG('Branch' 'Code')
     A            TRACCD         7A         COLHDG('Account' 'Number')
     A            TRKUBN         1A         COLHDG('Account' 'Type')
     A            TRTNTM        30O         COLHDG('Contact' 'Person')
     A            TRRGDT         8P 0       COLHDG('Created' 'Date')
     A            TRRGTM         6P 0       COLHDG('Created' 'Time')
     A            TRUPDT         8P 0       COLHDG('Updated' 'Date')
     A            TRUPTM         6P 0       COLHDG('Updated' 'Time')

     A          K TRTRCD
     A          K TRTRSC

     A          UNIQUE                                               
Perplexity
物理ファイル ソース
A          UNIQUE
A          R TRMASTR               TEXT('取引先マスタ')
A            TRTRCD        10A     COLHDG('Customer Code')
A            TRTRSC         3A     COLHDG('Customer Branch Code')
A            TRNM01        50O     COLHDG('Customer Name')
A            TRNM02        20A     COLHDG('Customer Short Name')
A            TRPOST         8A     COLHDG('Postal Code')
A            TRADR1        50O     COLHDG('Address Line 1')
A            TRADR2        50O     COLHDG('Address Line 2')
A            TRADR3        50O     COLHDG('Address Line 3')
A            TRTELN        15A     COLHDG('Phone Number')
A            TRFAXN        15A     COLHDG('Fax Number')
A            TRMAIL        60A     COLHDG('Email Address')
A            TRURKN        15P 2   COLHDG('Total Sales Amount')
A            TRSIKN        15P 2   COLHDG('Total Purchas Amount')
A            TRURZN        15P 2   COLHDG('Accounts Receivable')
A            TRSIZN        15P 2   COLHDG('Accounts Payable')
A            TRBKNM        30O     COLHDG('Bank Name')
A            TRBKCD         4A     COLHDG('Bank Code')
A            TRBRCD         3A     COLHDG('Branch Code')
A            TRACCD         7A     COLHDG('Account Number')
A            TRKUBN         1A     COLHDG('Account Type')
A            TRTNTM        30O     COLHDG('Contact Person')
A            TRRGDT         8P 0   COLHDG('Created Date')
A            TRRGTM         6P 0   COLHDG('Created Time')
A            TRUPDT         8P 0   COLHDG('Updated Date')
A            TRUPTM         6P 0   COLHDG('Updated Time')
A          K TRTRCD
A          K TRTRSC                                                

ChatGPTは要求したことがしっかりと反映されているように見えますが、Uniqueの部分でエラーが出ます。桁位置と書かれている行が違いそうです。(通常はレコード名の上に書く)
image.png

Perplexityに関しては、桁位置は直らず。。。(惜しくはなっている?)
image.png

ChatGPTで再々チャレンジ

非常に惜しいところまできているChatGPTに、IBMドキュメントで学習させてから返答してもらいます。

プロンプト
さきほどのソースに、下記の要件を反映ください。 
・[URL]のようにUniqueの位置を修正ください

結果は先ほどとはほとんど変わらない答えが返ってきました。

物理ファイル ソース(一部抜粋)
     A            TRUPDT         8P 0       COLHDG('Updated' 'Date')
     A            TRUPTM         6P 0       COLHDG('Updated' 'Time')

     A          K TRTRCD
     A          K TRTRSC

     A          UNIQUE(TRTRCD TRTRSC)

その後も、想定しているような返答は無かったため、結局手で修正をしました。
(最終版のソースは最後にまとめて記載します)

惜しいところまではいきましたが、すべてを生成AIで実装するのは難しそうです

因みにテストデータも作ってもらいましたが、実在する会社名や住所を提示されるので、ご留意ください。(プロンプトに明記しても提示してきます)

5.画面設計と項目定義

次に項目定義を実施しました。それぞれの処理を分担しているので、共通認識を持てるように定義しております。画面毎に必要な項目やファンクションキー、レコード名までイメージするために簡単に画面設計も実施しました。(この章では生成AIを使用しておりません)

以下では画面設計と項目をまとめた表を添付しております。
(興味のある方は「▶」から展開してご確認ください。)

画面設計

image.png

サブファイルでの検索を想定しています
image.png

検索後は取引先名称をマスタから取得して表示する
image.png

image.png

image.png

項目定義

タイプについて:

  • A:文字(シングルバイトのみ)
  • O:文字(ダブルバイト混合)
  • S:符号付き数字(小数点あり)
  • Y:数字のみ

image.png

サブファイルに必要なSFLCLRの標識の指定が抜けてしまっています。。。
(生成AIによる)プログラミングの途中で気づきました
image.png

image.png

image.png

以上のことを踏まえて、次はいよいよDSPFを作成していきます

6.DSPFの作成

画面ごとに小出しで聞くのではなく、一括で聞いてみようと思います。
レコードや項目名、桁数やファンクションキーなど、必要な情報が盛りだくさんなプロンプトを作成しました。
こちらも長くなってしまったので、興味のある方は「▶」から展開してご確認ください。

プロンプト
プロンプト
あなたはIBM iで画面(DSPF)を作成しているエンジニアです。
下記の要件の則り、DSPF画面を作成してください。

ただし、画面上部に画面名とGxDATEの項目を表示、画面下部にファンクションキーの説明を表示してください。
また、項目名があるデータは項目の左隣にその名称を直接画面上に表示させてください。 

#要件
●第一画面
-画面名:取引先マスタ 照会
-レコード名:G1
-項目,桁数,データタイプ,備考,項目名: 
G1TRCD,10,A,エラー標識は30か31, 取引先コード
G1TRSC,3,A,,取引先支店コード 
G1NM01,50,O,,取引先名 
G1DATE,16,O,RPGから値をいれる 
-ファンクションキー,内容:
F3,終了
F5,検索

●第二画面
-画面名:取引先マスタ 保守
-レコード名:G2
-項目,桁数,データタイプ,備考,項目名: 
G2TRCD,10,A,表示のみ,取引先コード  
G2TRSC,3,A,表示のみ,取引先支店コード 
G2NM01,50,O,表示のみ,取引先名 
G2NM02,20,A,, 取引先略称
G2POST,7,A,,郵便番号 
G2ADR1,50,O,,住所1 
G2ADR2,50,O,,住所2 
G2ADR3,50,O,,住所3 
G2TELN,15,A,,電話番号 
G2FAXN,15,A,,FAX番号 
G2MAIL,60,A,,メールアドレス 
G2URKN,15,S,小数点以下2桁,売上金額  
G2SIKN,15,S,小数点以下2桁,仕入金額  
G2URZN,15,S,小数点以下2桁,売掛残高  
G2SIZN,15,S,小数点以下2桁,買掛残高  
G2BKNM,30,O,,銀行名 
G2BKCD,4,A,,銀行コード 
G2BRCD,3,A,,支店コード 
G2ACCD,7,A,,口座番号 
G2KUBN,1,A,,口座区分 
G2TNTM,30,O,,担当者名 
G2DATE,16,O 
-ファンクションキー,内容:
F3,終了
F5,削除
F12,前画面

●第三画面
-画面名:取引先マスタ 確認
-レコード名:G3
-項目,桁数,データタイプ,備考,項目名: 
G3TRCD,10,A,表示のみ,取引先コード  
G3TRSC,3,A,表示のみ,取引先支店コード  
G3NM01,50,O,表示のみ,取引先名  
G3NM02,20,A,表示のみ,取引先略称  
G3POST,7,A,表示のみ,郵便番号  
G3ADR1,50,O,表示のみ,住所1 
G3ADR2,50,O,表示のみ,住所2 
G3ADR3,50,O,表示のみ,住所3 
G3TELN,15,A,表示のみ,電話番号 
G3FAXN,15,A,表示のみ,FAX番号 
G3MAIL,60,A,表示のみ,メールアドレス 
G3URKN,15,S,小数点以下2桁 表示のみ,売上金額 
G3SIKN,15,S,小数点以下2桁 表示のみ,仕入金額 
G3URZN,15,S,小数点以下2桁 表示のみ,売掛残高 
G3SIZN,15,S,小数点以下2桁 表示のみ,買掛残高 
G3BKNM,30,O,表示のみ,銀行名
G3BKCD,4,A,表示のみ,銀行コード 
G3BRCD,3,A,表示のみ,支店コード 
G3ACCD,7,A,表示のみ,口座番号 
G3KUBN,1,A,表示のみ,口座区分 
G3TNTM,30,O,表示のみ,担当者名 
G3DATE,16,O ,表示のみ 
-ファンクションキー,内容:
F3,終了
F12,前画面

●サブファイル
-画面名:取引先マスタ 検索
-レコード名:G1SFL
-コントロール名:G1CTL
-SFLSIZ:11
-SFLPAG:10
-項目,桁数,データタイプ,備考,項目名: 
S1SLCT,1,A,入力可能 
S1TRCD,10,A,表示のみ,取引先コード 
S1TRSC,3,A,表示のみ,取引先支店コード 
S1NM01,50,O,表示のみ,取引先名 
-ファンクションキー,内容:
F3,終了
F12,前画面

作成したプロンプトでそれぞれの生成AIに聞いてみる

こちらも長くなっているため、興味のある方は「▶」から展開してご確認ください。
(CopilotChatGPTと共通することが多いことから今回外しております)

ChatGPT

とてもまとまっているように見えます

物理ファイル ソース

     A                                      DSPSIZ(24 80 *DS3)
     A                                      PRINT
     A                                      INDARA

     *-----------------------------------------------------------------
     * 第一画面  取引先マスタ 照会
     *-----------------------------------------------------------------
     A          R G1
     A                                      CF03(03 '終了')
     A                                      CF05(05 '検索')
     A            G1DATE        16   O  1 60
     A                                  1  2'取引先マスタ 照会'
     A                                  3  2'取引先コード'
     A            G1TRCD        10A  B  3 20
     A                                  4  2'取引先支店コード'
     A            G1TRSC         3A  B  4 20
     A                                  5  2'取引先名'
     A            G1NM01        50O  O  5 20
     A                                  22  2'F3=終了  F5=検索'

     *-----------------------------------------------------------------
     * 第二画面  取引先マスタ 保守
     *-----------------------------------------------------------------
     A          R G2
     A                                      CF03(03 '終了')
     A                                      CF05(05 '削除')
     A                                      CF12(12 '前画面')
     A            G2DATE        16   O  1 60
     A                                  1  2'取引先マスタ 保守'
     A                                  3  2'取引先コード'
     A            G2TRCD        10A  O  3 20
     A                                  4  2'取引先支店コード'
     A            G2TRSC         3A  O  4 20
     A                                  5  2'取引先名'
     A            G2NM01        50O  O  5 20
     A                                  6  2'取引先略称'
     A            G2NM02        20A  B  6 20
     A                                  7  2'郵便番号'
     A            G2POST         7A  B  7 20
     A                                  8  2'住所1'
     A            G2ADR1        50O  B  8 20
     A                                  9  2'住所2'
     A            G2ADR2        50O  B  9 20
     A                                 10  2'住所3'
     A            G2ADR3        50O  B 10 20
     A                                 11  2'電話番号'
     A            G2TELN        15A  B 11 20
     A                                 12  2'FAX番号'
     A            G2FAXN        15A  B 12 20
     A                                 13  2'メールアドレス'
     A            G2MAIL        60A  B 13 20
     A                                 14  2'売上金額'
     A            G2URKN        15S 2B 14 20
     A                                 15  2'仕入金額'
     A            G2SIKN        15S 2B 15 20
     A                                 16  2'売掛残高'
     A            G2URZN        15S 2B 16 20
     A                                 17  2'買掛残高'
     A            G2SIZN        15S 2B 17 20
     A                                 18  2'銀行名'
     A            G2BKNM        30O  B 18 20
     A                                 19  2'銀行コード'
     A            G2BKCD         4A  B 19 20
     A                                 20  2'支店コード'
     A            G2BRCD         3A  B 20 20
     A                                 21  2'口座番号'
     A            G2ACCD         7A  B 21 20
     A                                 22  2'口座区分'
     A            G2KUBN         1A  B 22 20
     A                                 23  2'担当者名'
     A            G2TNTM        30O  B 23 20
     A                                 24  2'F3=終了  F5=削除  F12=前画面'

     *-----------------------------------------------------------------
     * 第三画面  取引先マスタ 確認
     *-----------------------------------------------------------------
     A          R G3
     A                                      CF03(03 '終了')
     A                                      CF12(12 '前画面')
     A            G3DATE        16   O  1 60
     A                                  1  2'取引先マスタ 確認'
     A                                  3  2'取引先コード'
     A            G3TRCD        10A  O  3 20
     A                                  4  2'取引先支店コード'
     A            G3TRSC         3A  O  4 20
     A                                  5  2'取引先名'
     A            G3NM01        50O  O  5 20
     A                                  6  2'取引先略称'
     A            G3NM02        20A  O  6 20
     A                                  7  2'郵便番号'
     A            G3POST         7A  O  7 20
     A                                  8  2'住所1'
     A            G3ADR1        50O  O  8 20
     A                                  9  2'住所2'
     A            G3ADR2        50O  O  9 20
     A                                 10  2'住所3'
     A            G3ADR3        50O  O 10 20
     A                                 11  2'電話番号'
     A            G3TELN        15A  O 11 20
     A                                 12  2'FAX番号'
     A            G3FAXN        15A  O 12 20
     A                                 13  2'メールアドレス'
     A            G3MAIL        60A  O 13 20
     A                                 14  2'売上金額'
     A            G3URKN        15S 2O 14 20
     A                                 15  2'仕入金額'
     A            G3SIKN        15S 2O 15 20
     A                                 16  2'売掛残高'
     A            G3URZN        15S 2O 16 20
     A                                 17  2'買掛残高'
     A            G3SIZN        15S 2O 17 20
     A                                 18  2'銀行名'
     A            G3BKNM        30O  O 18 20
     A                                 19  2'銀行コード'
     A            G3BKCD         4A  O 19 20
     A                                 20  2'支店コード'
     A            G3BRCD         3A  O 20 20
     A                                 21  2'口座番号'
     A            G3ACCD         7A  O 21 20
     A                                 22  2'口座区分'
     A            G3KUBN         1A  O 22 20
     A                                 23  2'担当者名'
     A            G3TNTM        30O  O 23 20
     A                                 24  2'F3=終了  F12=前画面'

     *-----------------------------------------------------------------
     * サブファイル  取引先マスタ 検索
     *-----------------------------------------------------------------
     A          R G1SFL                   SFL
     A            S1SLCT         1A  B  5  2
     A            S1TRCD        10A  O  5  5
     A            S1TRSC         3A  O  5 16
     A            S1NM01        50O  O  5 20

     A          R G1CTL                   SFLCTL(G1SFL)
     A                                      CF03(03 '終了')
     A                                      CF12(12 '前画面')
     A                                      SFLPAG(10)
     A                                      SFLSIZ(11)
     A            G1DATE        16   O  1 60
     A                                  1  2'取引先マスタ 検索'
     A                                  4  2'選択'
     A                                  4  5'取引先コード'
     A                                  4 16'支店コード'
     A                                  4 20'取引先名'
     A                                 24  2'F3=終了  F12=前画面'

Perplexity

これもまとまっているように見えます

物理ファイル ソース

     *-------------------------------------------------------------------
     * ファイル: TRKMNUDSPF
     * 機能 : 取引先マスタ 画面 (照会・保守・確認・検索)
     *-------------------------------------------------------------------
     A                                      DSPSIZ(24 80 *DS3)
     A                                      CA03(03 '終了')
     A                                      CA05(05)
     A                                      CA12(12)

     *-------------------------------------------------------------------
     * 第一画面 : 取引先マスタ 照会
     *-------------------------------------------------------------------
     A          R G1
     A                                      CF05(05 '検索')
     A                                  1  2'取引先マスタ 照会'
     A                                  1 60'日付:'
     A            G1DATE       16O      1 66
     A                                  3  2'取引先コード'
     A            G1TRCD       10A  B   3 20
     A                                  4  2'取引先支店コード'
     A            G1TRSC        3A  B   4 20
     A                                  5  2'取引先名'
     A            G1NM01       50A  O   5 20
     A                                  23  2'F3=終了'
     A                                  23 20'F5=検索'

     *-------------------------------------------------------------------
     * 第二画面 : 取引先マスタ 保守
     *-------------------------------------------------------------------
     A          R G2
     A                                      CF05(05 '削除')
     A                                  1  2'取引先マスタ 保守'
     A                                  1 60'日付:'
     A            G2DATE       16O      1 66
     
     A                                  3  2'取引先コード'
     A            G2TRCD       10A  O   3 20
     A                                  4  2'取引先支店コード'
     A            G2TRSC        3A  O   4 20
     A                                  5  2'取引先名'
     A            G2NM01       50A  O   5 20
     A                                  6  2'取引先略称'
     A            G2NM02       20A  B   6 20
     A                                  7  2'郵便番号'
     A            G2POST        7A  B   7 20
     A                                  8  2'住所1'
     A            G2ADR1       50A  O   8 20
     A                                  9  2'住所2'
     A            G2ADR2       50A  O   9 20
     A                                 10  2'住所3'
     A            G2ADR3       50A  O  10 20
     A                                 11  2'電話番号'
     A            G2TELN       15A  B  11 20
     A                                 12  2'FAX番号'
     A            G2FAXN       15A  B  12 20
     A                                 13  2'メールアドレス'
     A            G2MAIL       60A  B  13 20
     A                                 14  2'売上金額'
     A            G2URKN       15S 2B  14 20
     A                                 15  2'仕入金額'
     A            G2SIKN       15S 2B  15 20
     A                                 16  2'売掛残高'
     A            G2URZN       15S 2B  16 20
     A                                 17  2'買掛残高'
     A            G2SIZN       15S 2B  17 20
     A                                 18  2'銀行名'
     A            G2BKNM       30A  O  18 20
     A                                 19  2'銀行コード'
     A            G2BKCD        4A  B  19 20
     A                                 20  2'支店コード'
     A            G2BRCD        3A  B  20 20
     A                                 21  2'口座番号'
     A            G2ACCD        7A  B  21 20
     A                                 22  2'口座区分'
     A            G2KUBN        1A  B  22 20
     A                                 23  2'担当者名'
     A            G2TNTM       30A  O  23 20

     A                                 24  2'F3=終了  F5=削除  F12=前画面'

     *-------------------------------------------------------------------
     * 第三画面 : 取引先マスタ 確認
     *-------------------------------------------------------------------
     A          R G3
     A                                  1  2'取引先マスタ 確認'
     A                                  1 60'日付:'
     A            G3DATE       16O      1 66

     A                                  3  2'取引先コード'
     A            G3TRCD       10A  O   3 20
     A                                  4  2'取引先支店コード'
     A            G3TRSC        3A  O   4 20
     A                                  5  2'取引先名'
     A            G3NM01       50A  O   5 20
     A                                  6  2'取引先略称'
     A            G3NM02       20A  O   6 20
     A                                  7  2'郵便番号'
     A            G3POST        7A  O   7 20
     A                                  8  2'住所1'
     A            G3ADR1       50A  O   8 20
     A                                  9  2'住所2'
     A            G3ADR2       50A  O   9 20
     A                                 10  2'住所3'
     A            G3ADR3       50A  O  10 20
     A                                 11  2'電話番号'
     A            G3TELN       15A  O  11 20
     A                                 12  2'FAX番号'
     A            G3FAXN       15A  O  12 20
     A                                 13  2'メールアドレス'
     A            G3MAIL       60A  O  13 20
     A                                 14  2'売上金額'
     A            G3URKN       15S 2O  14 20
     A                                 15  2'仕入金額'
     A            G3SIKN       15S 2O  15 20
     A                                 16  2'売掛残高'
     A            G3URZN       15S 2O  16 20
     A                                 17  2'買掛残高'
     A            G3SIZN       15S 2O  17 20
     A                                 18  2'銀行名'
     A            G3BKNM       30A  O  18 20
     A                                 19  2'銀行コード'
     A            G3BKCD        4A  O  19 20
     A                                 20  2'支店コード'
     A            G3BRCD        3A  O  20 20
     A                                 21  2'口座番号'
     A            G3ACCD        7A  O  21 20
     A                                 22  2'口座区分'
     A            G3KUBN        1A  O  22 20
     A                                 23  2'担当者名'
     A            G3TNTM       30A  O  23 20

     A                                 24  2'F3=終了  F12=前画面'

     *-------------------------------------------------------------------
     * サブファイル : 取引先マスタ 検索
     *-------------------------------------------------------------------
     A          R G1SFL                    SFL
     A            S1SLCT        1A  B   5  2
     A            S1TRCD       10A  O   5  6
     A            S1TRSC        3A  O   5 18
     A            S1NM01       50A  O   5 22

     A          R G1CTL                    SFLCTL(G1SFL)
     A                                      SFLSIZ(11)
     A                                      SFLPAG(10)
     A                                      OVERLAY
     A                                  1  2'取引先マスタ 検索'
     A                                  1 60'日付:'
     A            G1DATE       16O      1 66
     A                                  3  2'選択'
     A                                  3  6'取引先コード'
     A                                  3 18'取引先支店コード'
     A                                  3 22'取引先名'
     A                                 24  2'F3=終了  F12=前画面'

GenSpark

ご丁寧にWebページを作成してくれました
出力されたWebページを確認したい場合はこちらをクリックしてください
image.png

ソースは見慣れない書き方をされています

物理ファイル ソース

     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A*%%EC
     A            DSPSIZ(24 80 *DS3)
     A            CA03(03 '終了')
     A            CA05(05 '検索')
     A            PRINT
     A*%%
     A          R SFL1FMT
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            OVERLAY
     A                                     1  2'取引先マスタ 照会'
     A            GXDATE        R        O  1 65REFFLD(QSYS/QWCRSYS/DATE)
     A                                     3  2'取引先コード . . .'
     A            G1TRCD       10A  B  8 30DSPATR(UL)
     A N30N31                              DSPATR(BL)
     A  30                                 DSPATR(BL)
     A  31                                 DSPATR(RI)
     A                                     5  2'取引先支店コード . . .'
     A            G1TRSC        3A  B  8 42DSPATR(UL)
     A                                     7  2'取引先名 . . . . . . .'
     A            G1NM01       50A  O  7 25DSPATR(HI)
     A            G1DATE       16A  O  9 25DSPATR(HI)
     A                                    23  2'F3=終了   F5=検索'
     A          R G1
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            OVERLAY
     A          R SFL2FMT
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            OVERLAY
     A                                     1  2'取引先マスタ 保守'
     A            GXDATE        R        O  1 65REFFLD(QSYS/QWCRSYS/DATE)
     A                                     3  2'取引先コード . . .'
     A            G2TRCD       10A  O  3 25DSPATR(HI)
     A                                     3 40'取引先支店コード'
     A            G2TRSC        3A  O  3 60DSPATR(HI)
     A                                     4  2'取引先名 . . . . . . .'
     A            G2NM01       50A  O  4 25DSPATR(HI)
     A                                     5  2'取引先略称 . . . . . .'
     A            G2NM02       20A  B  8 25DSPATR(UL)
     A                                     6  2'郵便番号 . . . . . . .'
     A            G2POST        7A  B  8 25DSPATR(UL)
     A                                     7  2'住所1 . . . . . . . .'
     A            G2ADR1       50A  B  8 25DSPATR(UL)
     A                                     8  2'住所2 . . . . . . . .'
     A            G2ADR2       50A  B  8 25DSPATR(UL)
     A                                     9  2'住所3 . . . . . . . .'
     A            G2ADR3       50A  B  8 25DSPATR(UL)
     A                                    10  2'電話番号 . . . . . . .'
     A            G2TELN       15A  B  8 25DSPATR(UL)
     A                                    11  2'FAX番号 . . . . . . . .'
     A            G2FAXN       15A  B  8 25DSPATR(UL)
     A                                    12  2'メールアドレス . . . .'
     A            G2MAIL       60A  B  8 25DSPATR(UL)
     A                                    13  2'売上金額 . . . . . . .'
     A            G2URKN       15S 2B  8 25EDTCDE(3) DSPATR(UL)
     A                                    14  2'仕入金額 . . . . . . .'
     A            G2SIKN       15S 2B  8 25EDTCDE(3) DSPATR(UL)
     A                                    15  2'売掛残高 . . . . . . .'
     A            G2URZN       15S 2B  8 25EDTCDE(3) DSPATR(UL)
     A                                    16  2'買掛残高 . . . . . . .'
     A            G2SIZN       15S 2B  8 25EDTCDE(3) DSPATR(UL)
     A                                    17  2'銀行名 . . . . . . . .'
     A            G2BKNM       30A  B  8 25DSPATR(UL)
     A                                    18  2'銀行コード . . . . . .'
     A            G2BKCD        4A  B  8 25DSPATR(UL)
     A                                    18 35'支店コード'
     A            G2BRCD        3A  B  8 50DSPATR(UL)
     A                                    19  2'口座番号 . . . . . . .'
     A            G2ACCD        7A  B  8 25DSPATR(UL)
     A                                    19 35'口座区分'
     A            G2KUBN        1A  B  8 50DSPATR(UL)
     A                                    20  2'担当者名 . . . . . . .'
     A            G2TNTM       30A  B  8 25DSPATR(UL)
     A            G2DATE       16A  O 21 25DSPATR(HI)
     A                                    23  2'F3=終了   F5=削除   F12=前画面'
     A          R G2
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            OVERLAY
     A          R SFL3FMT
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            OVERLAY
     A                                     1  2'取引先マスタ 確認'
     A            GXDATE        R        O  1 65REFFLD(QSYS/QWCRSYS/DATE)
     A                                     3  2'取引先コード . . .'
     A            G3TRCD       10A  O  3 25DSPATR(HI)
     A                                     3 40'取引先支店コード'
     A            G3TRSC        3A  O  3 60DSPATR(HI)
     A                                     4  2'取引先名 . . . . . . .'
     A            G3NM01       50A  O  4 25DSPATR(HI)
     A                                     5  2'取引先略称 . . . . . .'
     A            G3NM02       20A  O  5 25DSPATR(HI)
     A                                     6  2'郵便番号 . . . . . . .'
     A            G3POST        7A  O  6 25DSPATR(HI)
     A                                     7  2'住所1 . . . . . . . .'
     A            G3ADR1       50A  O  7 25DSPATR(HI)
     A                                     8  2'住所2 . . . . . . . .'
     A            G3ADR2       50A  O  8 25DSPATR(HI)
     A                                     9  2'住所3 . . . . . . . .'
     A            G3ADR3       50A  O  9 25DSPATR(HI)
     A                                    10  2'電話番号 . . . . . . .'
     A            G3TELN       15A  O 10 25DSPATR(HI)
     A                                    11  2'FAX番号 . . . . . . . .'
     A            G3FAXN       15A  O 11 25DSPATR(HI)
     A                                    12  2'メールアドレス . . . .'
     A            G3MAIL       60A  O 12 25DSPATR(HI)
     A                                    13  2'売上金額 . . . . . . .'
     A            G3URKN       15S 2O 13 25EDTCDE(3) DSPATR(HI)
     A                                    14  2'仕入金額 . . . . . . .'
     A            G3SIKN       15S 2O 14 25EDTCDE(3) DSPATR(HI)
     A                                    15  2'売掛残高 . . . . . . .'
     A            G3URZN       15S 2O 15 25EDTCDE(3) DSPATR(HI)
     A                                    16  2'買掛残高 . . . . . . .'
     A            G3SIZN       15S 2O 16 25EDTCDE(3) DSPATR(HI)
     A                                    17  2'銀行名 . . . . . . . .'
     A            G3BKNM       30A  O 17 25DSPATR(HI)
     A                                    18  2'銀行コード . . . . . .'
     A            G3BKCD        4A  O 18 25DSPATR(HI)
     A                                    18 35'支店コード'
     A            G3BRCD        3A  O 18 50DSPATR(HI)
     A                                    19  2'口座番号 . . . . . . .'
     A            G3ACCD        7A  O 19 25DSPATR(HI)
     A                                    19 35'口座区分'
     A            G3KUBN        1A  O 19 50DSPATR(HI)
     A                                    20  2'担当者名 . . . . . . .'
     A            G3TNTM       30A  O 20 25DSPATR(HI)
     A            G3DATE       16A  O 21 25DSPATR(HI)
     A                                    23  2'F3=終了   F12=前画面'
     A          R G3
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            OVERLAY
     A          R G1SFL                    SFL
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A            S1SLCT        1A  B  8  2DSPATR(UL)
     A            S1TRCD       10A  O  8  4DSPATR(HI)
     A            S1TRSC        3A  O  8 15DSPATR(HI)
     A            S1NM01       50A  O  8 19DSPATR(HI)
     A          R G1CTL                    SFLCTL(G1SFL)
     A*%%TS SD 20231201  123456  USERID    REL-V7R5M0  5770-WDS
     A N32                                 SFLSIZ(11)
     A N32                                 SFLPAG(10)
     A                                     CF03(03 '終了')
     A                                     CF12(12 '前画面')
     A N32                                 OVERLAY
     A            SFLRCDNBR     4S 0H      SFLRCDNBR(CURSOR)
     A  32                                 SFLCLR
     A N32                                 SFLDSP
     A N32                                 SFLDSPCTL
     A N32                                 SFLCSRRRN(&SFLRCDNBR)
     A                                     1  2'取引先マスタ 検索'
     A            GXDATE        R        O  1 65REFFLD(QSYS/QWCRSYS/DATE)
     A                                     6  2'選択'
     A                                     6  4'取引先コード'
     A                                     6 15'支店'
     A                                     6 19'取引先名'
     A                                     7  2'----'
     A                                     7  4'----------'
     A                                     7 15'---'
     A                                     7 19'--------------------------------------------------'
     A                                    23  2'F3=終了   F12=前画面'

ChatGPTはそのまま貼り付けても、ほとんどエラーが出ませんでした。桁位置を1~2桁ずらすだけの軽微な修正で済んでいます。

Perplexityは予想していましたが、桁位置がほとんど合わないです。(惜しいですが。。。)
文字でも小数部(?)に0が付いています。
image.png

GenSparkも桁位置がほとんど合わず、修正にはそれなりに時間を要します。
image.png

とりあえずChatGPTのソースが最も軽微な修正で済んでいるため、このソースでコンパイルを実施していきます。

7.動作確認

ChatGPTで生成したソースをコンパイルしてみます。パラメータは何も指定せずにコンパイルします。

14を入力して実行します。
image.png

[Errors in DDS not allowed with specified GENLVL.]というエラーメッセージが表示されます。
エラーが出てしまったので、スプールを確認してみます。

私は[WRKJOB] > で確認しています。
image.png

スプールの一番下まで行くと、エラーの原因が書いてあります。
何となくサブファイル関連のエラーであることは読み取れましたが、、、
image.png

分からないときはとりあえず生成AIに聞いてみる

下記のようにプロンプトを作成して、ChatGPTに聞いてみます

プロンプト
コンパイルをしたときに、下記のようなエラーが出ました
見当は付きますか?

* CPD7564      20        1      Message . . . . :   SFLSIZ, SFLPAG, and SFLDSP keywords required.             
* CPD7571      20        2      Message . . . . :   Indicated keyword requires SFLCTL keyword.                
* CPD7836      30        1      Message . . . . :   Subfile control record not found.                         
* CPD7866      10        6      Message . . . . :   Field overlaps another field with no conditions specified.
* CPD7892      10        1      Message . . . . :   Indicator ignored because of error on field or keyword.   

ChatGPTからエラー毎の原因候補ということで、返答がありました。

ChatGPTの返答

1.CPD7564 : SFLSIZ, SFLPAG, and SFLDSP keywords required
→ サブファイルコントロールレコード(G1CTL)に必要なキーワードが足りていません。

SFLDSP(サブファイル表示許可)

SFLDSPCTL(サブファイルコントロール表示許可)

SFLCLR(サブファイルクリア)
このあたりを追加する必要があります。

2.CPD7571 : Indicated keyword requires SFLCTL keyword
→ SFLCTL(G1SFL) の関連付けが正しく認識されていません。SFLDSPCTL や SFLCLR を付けないとこのエラーが出ます。

3.CPD7836 : Subfile control record not found
→ SFLCTL(G1SFL) の指定はあるが、G1SFL レコードが DDS に定義されていないように見えている状態。
 実際は順番の問題で、DDSでは「サブファイルレコード(G1SFL)」を先に定義 → その後にコントロールレコード(G1CTL)を書く必要があります。
 私の例では順番は正しかったはずですが、もしかするとコピペ時に入れ替わったか、誤字(G1SFL と G1Sfl の大小文字違いなど)かもしれません。

4.CPD7866 : Field overlaps another field with no conditions specified
→ 同じ行・列に項目を配置してしまっている箇所があります。たとえば:

A            S1TRSC         3A  O  5 16
A            S1NM01        50O  O  5 20

この場合、S1TRSC (列16~18) と S1NM01 (列20~69) はギリギリセーフですが、別の画面で微妙にかぶっている可能性があります。
修正案:列位置を少し離す。

5.CPD7892 : Indicator ignored because of error on field or keyword
→ 上記エラーに引きずられて出ている二次的なエラーです。1〜4を直せば消えます。 

この返答に続いてサブファイルの修正案を提示してくれました。
(ここでSFLCLRが必要であることを思い出します)

修正案

     A          R G1SFL                   SFL
     A            S1SLCT         1A  B  5  2
     A            S1TRCD        10A  O  5  6
     A            S1TRSC         3A  O  5 18
     A            S1NM01        50O  O  5 24

     A          R G1CTL                   SFLCTL(G1SFL)
     A                                      CF03(03 '終了')
     A                                      CF12(12 '前画面')
     A                                      SFLDSP
     A                                      SFLDSPCTL
     A  32                                  SFLCLR
     A                                      SFLPAG(10)
     A                                      SFLSIZ(11)
     A            G1DATE        16   O  1 60
     A                                  1  2'取引先マスタ 検索'
     A                                  4  2'選択'
     A                                  4  6'取引先コード'
     A                                  4 18'支店コード'
     A                                  4 24'取引先名'
     A                                 24  2'F3=終了  F12=前画面'

早速、反映してコンパイルしてみます。
が、再びコンパイルエラーが出ました。

同じ手順でエラーを確認してみます。嬉しいことにエラーは減っております。
しかし、新たなエラーが出てきました。
image.png

ChatGPTに同じように聞いてみます。

プロンプト
コンパイルをしたときに、下記のようなエラーが出ました
見当は付きますか?

* CPD7812      30        1      Message . . . . :   Subfile control record overlaps subfile record.           
* CPD7866      10        6      Message . . . . :   Field overlaps another field with no conditions specified. 

下記のように、エラー内容の意味を教えてくれました。

ChatGPTの返答
⚠️CPD7812

Subfile control record overlaps subfile record
→ 「サブファイル制御レコード (SFLCTL) がサブファイル本体 (SFL) と表示領域で重なっている」

修正案として、G1SFLの最初の行位置を直すように言われましたが、同様のエラーが出ました。ChatGPTに聞いても同じような返答しかないため、自力で解決しようと思いましたが、ここから時間が掛かりました。

行をコメントアウトしたりして、サブファイルに記述しているフッター部分が悪さをしていることが分かりました。

どうやら、サブファイルの明細部分を、SFLCTLの同一レコード内で上下に挟むことができないようです。そのため、フッター部分を別レコードにすることでコンパイルが通るようになりました。

知識不足で時間が掛かってしまいましたが、0ベースから作成するよりは楽な気がしました。コンパイルエラーの意味や修正案なども提示されるので比較的楽でした。

また、今回作成した画面をSDAで表示した画像を下記に添付します。
どのような形になったか気になる方は「▶」から展開してご確認ください。

画面 SDA

レコード:G1
image.png

レコード:G2
image.png

レコード:G3
image.png

レコード:G1SFL
image.png

8.まとめ

今回、生成AIを使用して設計からDSPF作成まで実施してみましたが、想定より精度が良く、ついにここまで来たかと感心しました。

担当割の都合上、RPGLEに触れることはできなかったのが非常に残念ですが、設計、物理ファイル、DSPFと多くの事を経験することができ、得られたものは多かったと思います。

さて、今回のテーマは初級者のサポートを生成AIができるか検証ということでしたが、今回実施した作業については充分サポートできると思います。
白紙の状態からやろうとすると分からないことが多かったのですが、エラーはあれど形にしてくれることは、非常に頼れるとは思いました。(Uniqueやエラーの標識など要望を聞いてくれないときもありますが。。。)

ただ、知識が全くないような初級者の方だと、苦戦はするかなと思います。
基礎的な技術、知識があれば非常に便利で、使いやすいと思います。

個人的にはChatGPTがより精度が高く、使いやすかったと思いますが、知識の無い初級者が安心して使用するにはまだまだ至らない部分が多いとは思います。
そのため、 IBMから発表されている Project BobIBM i コード・アシスタント には、より期待が高まりました。

実施できなかったこと

話は変わりますが、今回の活動で惜しくも実施できなかったことがあります。
(活動外で今度、試してみます!)

  • 設計した画面を画像として生成AIになげるとどのようになるか
  • 担当した処理の結合テスト

ここまでできればよかったのですが、時間の都合上叶いませんでした。

今回作成したソース

最後に最終のソースを添付します。
興味のある方は「▶」から展開してご確認ください。

物理ファイル
TRMAST
      *****************************************************************    
      *  FILE NAME   : TRMAST                                         *    
      *  LIBRARY     : XXXXXX1                                        *    
      *  DESCRIPTION :                                          *          
      *  RECORD NAME : TRMASTR                                        *    
      *****************************************************************    
     A                                      UNIQUE                         
     A          R TRMASTR                                                  
     A            TRTRCD        10A         COLHDG('CUSTOMER' 'CODE')      
     A            TRTRSC         3A         COLHDG('CUSTOMER' 'BRANCH')    
     A            TRNM01        50O         COLHDG('CUSTOMER' 'NAME')      
     A            TRNM02        20A         COLHDG('CUSTOMER' 'SHORT NAME')
     A            TRPOST         8A         COLHDG('POSTAL' 'CODE')        
     A            TRADR1        50O         COLHDG('ADDRESS' 'LINE1')      
     A            TRADR2        50O         COLHDG('ADDRESS' 'LINE2')      
     A            TRADR3        50O         COLHDG('ADDRESS' 'LINE3')      
     A            TRTELN        15A         COLHDG('PHONE' 'NUMBER')       
     A            TRFAXN        15A         COLHDG('FAX' 'NUMBER')         
     A            TRMAIL        60A         COLHDG('EMAIL' 'ADDRESS')    
     A            TRURKN        15P 2       COLHDG('TOTAL' 'SALES AMOUNT')  
     A            TRSIKN        15P 2       COLHDG('TOTAL' 'PURCHAS AMOUNT')
     A            TRURZN        15P 2       COLHDG('ACCOUNTS' 'RECEIVABLE') 
     A            TRSIZN        15P 2       COLHDG('ACCOUNTS' 'PAYABLE')    
     A            TRBKNM        30O         COLHDG('BANK' 'NAME')           
     A            TRBKCD         4A         COLHDG('BANK' 'CODE')           
     A            TRBRCD         3A         COLHDG('BRANCH' 'CODE')         
     A            TRACCD         7A         COLHDG('ACCOUNT' 'NUMBER')      
     A            TRKUBN         1A         COLHDG('ACCOUNT' 'TYPE')        
     A            TRTNTM        30O         COLHDG('CONTACT' 'PERSON')      
     A            TRRGDT         8P 0       COLHDG('CREATED' 'DATE')        
     A            TRRGTM         6P 0       COLHDG('CREATED' 'TIME')        
     A            TRUPDT         8P 0       COLHDG('UPDATED' 'DATE')        
     A            TRUPTM         6P 0       COLHDG('UPDATED' 'TIME')        
                                                                            
     A          K TRTRCD                                                    
     A          K TRTRSC                                                    
DSPF
DSPF
     A                                      DSPSIZ(24 80 *DS3)            
     A                                      PRINT                         
     A                                      INDARA                        
                                                                          
      *------------------------------------------------------------------ 
      * 第一画面  取引先マスタ 照会                                 
      *------------------------------------------------------------------ 
     A          R G1                                                      
     A                                      CF03(03 '終了')             
     A                                      CF05(05 '検索')             
     A            G1DATE        16   O  1 60                              
     A                                  1  2'取引先マスタ 照会'        
     A                                  3  2'取引先コード'              
     A            G1TRCD        10A  B  3 20                              
     A                                  4  2'取引先支店コード'          
     A            G1TRSC         3A  B  4 20                              
     A                                  5  2'取引先名'                  
     A            G1NM01        50O  O  5 20                              
     A                                 22  2'F3=終了  F5=検索'    
      *------------------------------------------------------------------
      * 第二画面  取引先マスタ 保守                                
      *------------------------------------------------------------------
     A          R G2                                                     
     A                                      CF03(03 '終了')            
     A                                      CF05(05 '削除')            
     A                                      CF12(12 '前画面')          
     A            G2DATE        16   O  1 60                             
     A                                  1  2'取引先マスタ 保守'       
     A                                  3  2'取引先コード'             
     A            G2TRCD        10A  O  3 20                             
     A                                  4  2'取引先支店コード'         
     A            G2TRSC         3A  O  4 20                             
     A                                  5  2'取引先名'                 
     A            G2NM01        50O  O  5 20                             
     A                                  6  2'取引先略称'               
     A            G2NM02        20A  B  6 20                             
     A                                  7  2'郵便番号'                 
     A            G2POST         7A  B  7 20                             
     A                                  8  2'住所1'       
     A            G2ADR1        50O  B  8 20                   
     A                                  9  2'住所2'         
     A            G2ADR2        50O  B  9 20                   
     A                                 10  2'住所3'         
     A            G2ADR3        50O  B 10 20                   
     A                                 11  2'電話番号'       
     A            G2TELN        15A  B 11 20                   
     A                                 12  2'FAX番号'        
     A            G2FAXN        15A  B 12 20                   
     A                                 13  2'メールアドレス' 
     A            G2MAIL        60A  B 13 20                   
     A                                 14  2'売上金額'       
     A            G2URKN        15S 2B 14 20                   
     A                                 15  2'仕入金額'       
     A            G2SIKN        15S 2B 15 20                   
     A                                 16  2'売掛残高'       
     A            G2URZN        15S 2B 16 20                   
     A                                 17  2'買掛残高'       
     A            G2SIZN        15S 2B 17 20                   
     A                                 18  2'銀行名'         
     A            G2BKNM        30O  B 18 20                                     
     A                                 19  2'銀行コード'                       
     A            G2BKCD         4A  B 19 20                                     
     A                                 20  2'支店コード'                       
     A            G2BRCD         3A  B 20 20                                     
     A                                 21  2'口座番号'                         
     A            G2ACCD         7A  B 21 20                                     
     A                                 22  2'口座区分'                         
     A            G2KUBN         1A  B 22 20                                     
     A                                 23  2'担当者名'                         
     A            G2TNTM        30O  B 23 20                                     
     A                                 24  2'F3=終了  F5=削除  F12=前画面' 
                                                                                 
      *------------------------------------------------------------------        
      * 第三画面  取引先マスタ 確認                                        
      *------------------------------------------------------------------        
     A          R G3                                                             
     A                                      CF03(03 '終了')                    
     A                                      CF12(12 '前画面')                  
     A            G3DATE        16   O  1 60                                     
     A                                  1  2'取引先マスタ 確認'   
     A                                  3  2'取引先コード'         
     A            G3TRCD        10A  O  3 20                         
     A                                  4  2'取引先支店コード'     
     A            G3TRSC         3A  O  4 20                         
     A                                  5  2'取引先名'             
     A            G3NM01        50O  O  5 20                         
     A                                  6  2'取引先略称'           
     A            G3NM02        20A  O  6 20                         
     A                                  7  2'郵便番号'             
     A            G3POST         7A  O  7 20                         
     A                                  8  2'住所1'               
     A            G3ADR1        50O  O  8 20                         
     A                                  9  2'住所2'               
     A            G3ADR2        50O  O  9 20                         
     A                                 10  2'住所3'               
     A            G3ADR3        50O  O 10 20                         
     A                                 11  2'電話番号'             
     A            G3TELN        15A  O 11 20                         
     A                                 12  2'FAX番号'              
     A            G3FAXN        15A  O 12 20                   
     A                                 13  2'メールアドレス' 
     A            G3MAIL        60A  O 13 20                   
     A                                 14  2'売上金額'       
     A            G3URKN        15S 2O 14 20                   
     A                                 15  2'仕入金額'       
     A            G3SIKN        15S 2O 15 20                   
     A                                 16  2'売掛残高'       
     A            G3URZN        15S 2O 16 20                   
     A                                 17  2'買掛残高'       
     A            G3SIZN        15S 2O 17 20                   
     A                                 18  2'銀行名'         
     A            G3BKNM        30O  O 18 20                   
     A                                 19  2'銀行コード'     
     A            G3BKCD         4A  O 19 20                   
     A                                 20  2'支店コード'     
     A            G3BRCD         3A  O 20 20                   
     A                                 21  2'口座番号'       
     A            G3ACCD         7A  O 21 20                   
     A                                 22  2'口座区分'       
     A            G3KUBN         1A  O 22 20                               
     A                                 23  2'担当者名'                   
     A            G3TNTM        30O  O 23 20                               
     A                                 24  2'F3=終了  F12=前画面'      
                                                                           
      *------------------------------------------------------------------  
      * サブファイル  取引先マスタ 検索                              
      *------------------------------------------------------------------  
     A          R G1SFL                     SFL                            
     A            S1SLCT         1A  B  6  2                               
     A            S1TRCD        10A  O  6  6                               
     A            S1TRSC         3A  O  6 18                               
     A            S1NM01        50O  O  6 24                               
                                                                           
     A          R G1CTL                     SFLCTL(G1SFL)                  
     A                                      CF03(03 '終了')              
     A                                      CF12(12 '前画面')            
     A                                      SFLDSP                         
     A                                      SFLDSPCTL                      
     A  32                                  SFLCLR                         
     A                                      SFLPAG(10)                 
     A                                      SFLSIZ(11)                 
     A            G1DATE        16   O  1 60                           
     A                                  1  2'取引先マスタ 検索'     
     A                                  5  2'選択'                   
     A                                  5  6'取引先コード'           
     A                                  5 18'支店コード'             
     A                                  5 24'取引先名'               
      *----------------------------------------------------------------- 
      * フッター                                                       
      *----------------------------------------------------------------- 
     A          R FTR                                                    
     A                                 24  2'F3=終了  F12=前画面'    

☆☆ 最後まで読んでいただきありがとうございます。他の方の担当記事も是非読んでみてください!! ☆☆


■ 当記事の著作権はIBMに帰属します。詳細はこちらを参照ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?