今回の記事では、生成AI(ChatGPT/Copilot)に初歩的なプログラムのソースコードをFFRPGを使用し書いてもらうための試行結果を記載します。
Hello World!プログラム
- 要件
画面上にHello World!を出力する。 - プロンプト例
#命令
あなたは優秀なプログラマです。 画面上に"Hello World!"と出力するILE-RPGプログラムを作成してください。
#条件
・他のプログラムを使用しない(callしない)こと
・すべてフリーフォームのILE-RPGで記述すること
・簡潔に記述すること
- 生成されたソース例
コンパイルが通ったものだと以下のようなものを出力できました。
Copilot出力
**free
dcl-s helloWorld char(12) inz('Hello World!');
dsply helloWorld;
*inlr = *on;
ChatGPT出力
**free
// HelloWorld.rpgle
dcl-s message varchar(50) inz('Hello World!');
// プログラムのメイン処理
*inlr = *on; // プログラム終了時にリソースを解放
// メッセージを表示する
dsply message;
// プログラムの終了
return;
一方で下記の様に固定様式のソースが出力されたり、プロンプティングに苦戦した部分もあります。
(下記のソースコードについてはコンパイルは通り、動作はしました)
RPGLE
H DFTACTGRP(*NO) ACTGRP(*NEW)
D HELLOMSG S 20A INZ('Hello World')
C DSPLY HELLOMSG
C SETON LR
ソースのいち部分しか出力されないケース、命令部分を手直ししなければならないケースもありましたが、最終的にはChatGPT/Copilotともに手直しなしでコンパイルできるソース生成ができました。
四則演算プログラム
もう少し難しいプログラムを生成してみようということで、四則演算プログラムの生成にも挑戦してみました。
- 要件
四則演算を行い、画面上に四則演算(足し算、引き算、割り算、掛け算)の計算結果を出力する。 - プロンプト例
足し算
IBMiのFFRPGで足し算のプログラムを作成してください
num1=10、num2=3で作成してください
掛け算
#命令
あなたは優秀なプログラマです。 画面上に以下の計算式の結果を出力するILE-RPGプログラムを作成してください。
#計算式
100*10
#条件
・他のプログラムを使用しない(callしない)こと
・すべてフリーフォームのILE-RPGで記述すること
・簡潔に記述すること
- 生成されたソース例
コンパイルが通ったものだと以下のようなものを出力できました。
Copilot出力 - 足し算
**FREE
//変数の宣言
DCL-S num1 INT (10) INZ(10);
DCL-S num2 INT (10) INZ(5);
DCL-S result INT (10) ;
// 足し算の実行
result= num1 + num2;
// 結果の表示
DSPLY ('num1: ' + %CHAR(num1) + ' + num2: ' + %CHAR(num2) + ' = ' + %CHAR(result));
// プログラムの終了
*INLR = *ON;
ChatGPT出力 - 掛け算
**free
// Free-form RPG IV program
ctl-opt dftactgrp(*no) actgrp(*new);
// Declare variables
dcl-s result int(10);
// Perform the calculation
result = 100 * 10;
// Output the result to the screen
dsply result;
// End the program
*inlr = *on;
return;
まとめ
- 簡単なロジックであればコンパイルが通るソースコードが生成できることがわかりました。
前提条件(使用する変数、コーディングルール等)をしっかり指定することで、もっと複雑なソースも生成できそうです。 - 特段指定しない限り、ChatGPT/Copilotいずれも言語としてのRPG=FFRPGと認識しているようで、ILE-RPGのソースを生成するにはプロンプトに工夫が必要になりそうです。