PCML の使用による Java からの RPG プログラムの呼び出し

Java から RPG プログラムまたはプロシージャーを呼び出す場合には、 RPG プログラムまたはプロシージャーのパラメーターを記述したプログラム呼び出しマークアップ言語 (PCML) ソース・ファイルを使用することができます。 Java アプリケーションは、 PCML ソース・ファイルの参照を持つ ProgramCallDocument オブジェクトを作成することで PCML を使用することができます。

INFOSTMF コンパイラー・パラメーターと一緒に PGMINFO(*PCML) コンパイラー・パラメーターを指定して、 生成された PCML を受け取る IFS 出力ファイルの名前を指定すると、 ILE RPG コンパイラーは、ILE RPG プログラムまたはモジュールの PCML ソースを生成します。 CRTBNDRPG の場合、 PCML は *ENTRY PLIST つまりメイン・プロシージャーの「プロシージャー・インターフェース」の内容に基づいて生成されます。 CRTRPGMOD の場合も、 PCML はエクスポート・サブプロシージャー (Java 固有のメソッドは除く) の「プロシージャー・インターフェース」に基づいて生成されます。

CRTRPGMOD を使用し、サービス・プログラムを作成する場合は、 ProgramCallDocument クラスの setPath(String) メソッドを使用して、 Java コードでサービス・プログラムを指定します。 次に、例を示します。

     AS400 as400;
     ProgramCallDocument pcd;
     String path = "/QSYS.LIB/MYLIB.LIB/MYSRVPGM.SRVPGM";
     as400 = new AS400 ();
     pcd = new ProgramCallDocument (as400, "myModule");
     pcd.setPath ("MYFUNCTION", path);
     pcd.setValue ("MYFUNCTION.PARM1", "abc");
     rc = pcd.callProgram("MYFUNCTION");

PCML の制約事項

PCML では、パラメーターおよび戻り値の型について、次の制約事項が適用されます。

上記制約条件のいずれかに違反するプログラムまたはモジュールで PCML を生成すると、 コンパイルは失敗します。 PCML は生成されますが、コメントとしてエラー・メッセージが含まれます。 例えば、パラメーターとして Date フィールドを使用すると、 そのパラメーターに対する PCML は次のようになります。

<data name="DATE" type="   " length="10" usage="input" />
<!-- Error: unsupported data type -->