フリー・フォーマットが導入されてから確かに RPG は進化した。
特に算術演算は数学の数式に近い記述ができるので
直感的でわかりやすくなった。
最近ではフリー・フォーマットによる記述の割合が増えてきた。
そこで RPG 内から別のサブ・プログラムの呼出しも
プロシージャーのような呼出しはできないものか ?
フリー・フォーマット中でのプロシージャーの呼出しであれば
CALLP
や CALLB
は必要なく、そのままプロシージャーを
あたかも新しい命令のようにして使用することができて
見た目にもわかりやすく洗練されたソースになる。
ここでは外部プログラムを CALL
で呼び出すのではなく
プロシージャー化して呼び出す方法を紹介しよう。
* コマンドの実行: constant Type D QCMDEXC PR EXTPGM('QCMDEXC') D CMDSTR 1024 CONST D CMDLEN 15 5 CONST D : /FREE : QCMDEXC(CMD:CMDLEN); /END-FREE :
お馴染みの QCMDEXC
をプロシージャーとして
D QCMDEXC PR EXTPGM('QCMDEXC')
によってプロシージャーのプロトタイプを宣言している。
これが外部プログラムであることを示すのは
EXTPGM('QCMDEXC')
の部分である。
これによって QCMDEXC
の実行は
QCMDEXC(CMD:CMDLEN);
だけであるから何とシンプルで見やすくわかりやすいものだろうか ?
一昔前の CALL
による呼出しに比べればはるかに RPG は進化している。