3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIでFFRPGプログラムは生成できるのか? - ②簡単なプログラムを作成してみる

Last updated at Posted at 2024-10-15

今回の記事では、生成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のソースを生成するにはプロンプトに工夫が必要になりそうです。
3
1
2

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?