FBI Times

記事

FFRPGでのプログラムの呼び出し方

執筆者プロフィール

皆さまこんにちは!
株式会社福岡情報ビジネスセンターの江口です。
今回からFREE FORM RPG(以降、FFRPG)について、あれこれ書かせて頂きます。
簡単な経歴ですが、入社(1987)から1年間はCOBOLプログラムの開発、その後2年ほどバロースBASIC、PROGRESS/2を経てS/36での開発に携わりました。RPG2です。後はS/38(RPG3)、AS/400(RPG3・ILERPG)と順当にアップデートして現在のIBMiへと続いているので、30年ほどRPG関係の開発を行っています。

<前回の記事>

FFRPGの仕様を解説!

今回はFFRPGのインターフェイス定義、プロトタイプ定義について調べていきます。

プログラムのつながり

プログラムを作成しているとプログラムから共通使用できる機能を呼び出して実行することがあります。例えば消費税計算や、営業日日数カウントなどがあります。プログラム間はパラメータで情報のやり取りを行いますが、自由形式構文ではPLIST(パラメータ・リストの識別)やCALL命令(プログラム呼び出し)が使用できません。

それではどのようにしてプログラムの呼び出しや情報の受け渡しを行うのでしょうか。

 

インターフェイス定義(呼び出される側)

呼び出される側の受取りパラメータはインターフェイス定義で記述します。定義するパラメータをdcl-pi~end-piでくくります。

例では受取りパラメータを2つ定義しています。
パラメータ名 タイプ 桁数
p#char1 文字 10
p#char2 文字 10
定義したパラメータはプログラム中で使用できます。
サンプルプログラムでは、受け取ったパラメータを連結して表示します。
※サンプルプログラムソース(TEST002)

実行

結果

 

プロトタイプ定義(呼び出す側)

呼び出す側はプロトタイプ定義で受け渡しを行うパラメータの定義を行います。パラメータをdcl-pr~end-prでくくり、dcl-prの後に呼び出しプログラム名を記述します。パラメータ情報は呼び出されるプログラムと合わせます。

パラメータ名  タイプ   桁数
p#char1     文字    10
p#char2     文字    10
ここで注意ですが、プロトタイプ定義で定義したパラメータ名はプログラムで使用できません。プログラムの呼び出しにはCALLP命令を使用します。

※サンプルプログラムソース(TEST001)

実行

結果

 

まとめ

いかがでしたでしょうか。プロトタイプ定義やプロシージャー呼び出しはRPGⅢにはなかったので面倒に感じるかもしれませんが、プログラム/プロシージャーの呼び出し前にパラメータの定義を行うのは、多くのプログラム言語で採用されている記述方法なのでこれを機会に身につけてください。

次はRPGⅢとILERPG・FFRPGの命令について調べてみます。追加された命令、使えなくなった命令、代わりに追加された関数を深堀していきます。(江口)

そんなご質問・ご相談でも大歓迎です!

ITの力で企業の未来を支える

お気軽にお問い合わせください。
お客様のご要望に合わせて、最適なシステムをご提案いたします。

お問い合わせ