4

Java から V5R4 iSeries マシンで実行されている RPG プログラムに直接話しかけた経験のある人はいますか? もしそうなら、コミュニティの推奨事項は何ですか? また、避けるべき落とし穴は何ですか?

私が試みたさまざまな文献やスパイク ソリューションから、ProgramCallBeans (PCML または xPCML を介して) を使用したり、DataQueues (非同期通信用) と通信したり、JNI を使用したりできるように見えます。

私は、堅牢で、パフォーマンスが高く、開発が速く、保守が簡単で、テストが簡単なものを探しています (私たち全員ではありませんか!?!)。

4

6 に答える 6

10

IBM の Java Toolbox for Java を使用することをお勧めします。JT400.jar をクラスパス (Java が iSeries で実行されている場合は JT400Ntv.jar) に入れます。ProgramCall クラスと CommandCall クラスの両方を使用しました。

com.ibm.as400.access.CommandCall クラスは使いやすいです。これには、com.ibm.as400.access.AS400 クラスを渡す単純なコンストラクターがあります。次に、次のように run メソッドを使用します。

CommandCall command = new CommandCall(as400);
command.run("CPYF FROMFILE(BLAH) TOFILE(BLAHBLAH) CRTFILE(*YES)");

もちろん、その特定の CL コマンドを使用することはありませんが、アイデアは理解できます。CommandCall クラスを使用する場合は、コマンドからのメッセージを処理することを常にお勧めします。これを使用する 1 つのプログラムでは、次のように画面上のテキスト ボックスにユーザーへのメッセージを表示します。

AS400Message[] messageList = command.getMessageList();
for (int i=0;i < messageList.length;i++) {
String sMessageText = messageList[i].getText();
    sMessage+=sMessageText + "\n";
}

com.ibm.as400.access.ProgramCall クラスはより多くの作業を必要としますが、返されたパラメーターにアクセスできます。私は通常、値を返す既存の RPG ワーカー プログラムを呼び出しているため、これをより頻繁に使用します。このために、com.ibm.as400.access.ProgramParameter 配列を定義します。Java からプログラムにパラメーターを渡すときは、com.ibm.as400.access.AS400Text などのクラスを使用して、パラメーターを AS/400 に適した値に変換することを忘れないでください。ProgramCall コマンドの詳細については、IBM のドキュメントを使用してよく調べてください: http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=/rzahh/page1.htm

于 2008-10-21T16:35:04.630 に答える
2

JTOpenを見る必要があります。それを使用して、やりたいことを行うのはかなり簡単です。これは誰かがまとめた例です: jtopen を使用した as400 へのプログラム呼び出し

于 2008-10-10T16:26:30.257 に答える
1

RPG から Java メソッドを直接呼び出すのは非常に簡単です。あなたが何をしようとしているのか正確にはわかりません.Javaメソッドを何度か直接呼び出しました.

これがどのように行われるかの例。RPGMailをご覧ください。ソースを見ると、Aaron がどのように RPG を使用して JavaMail に接続したかがわかります。

于 2008-10-09T13:25:25.377 に答える
1

JDBC とストアド プロシージャのみを使用します。ストアード・プロシージャーは、SQL を実行する代わりに RPG を呼び出します。私は RPG プログラマーではありませんが、非常にシンプルなインターフェイスのようです。DataQueue は問題ありませんが、JMS のようなものほど堅牢ではありません (配信の保証はありません)。

于 2008-10-08T22:24:28.500 に答える
1

私は PCML 文書である程度の成功を収めました。RPG プログラムにパラメーターを渡すときにコマンド呼び出しを文字列にエンコードすると、非常に見苦しくなる可能性があるため、PCML を使用することにしました。

PCML を使用すると、java データ型をパラメーターとして rpg プログラムにある程度透過的に渡すことができます。欠点は、PCML 文書内の xml が静的インターフェースになり、プログラムが更新された場合に更新する必要があることです。適切なビルド ツールがあれば、pcml xml の更新を自動化するのはかなり簡単かもしれませんが、現在は手動で行っています。

このアプローチは、rpg プログラムを Java から呼び出す必要があり、ロジック フローが Java プログラムによって制御される場合に使用しました。

ロジック フローが rpg プログラムによって制御される場合、Java への同期呼び出しと非同期呼び出しの両方にデータキューを使用しました。これには、さまざまなプログラミング言語から調整された方法でデータキューを読み書きする方法を標準化するために、大量のコードを記述する必要がありました。

于 2008-11-04T19:34:05.297 に答える