Q9:MZ Platform(MEMSシステム)から外部アプリケーションを起動して、その外部アプリケーションから処理結果情報(ステータスだけでOK)を(ファイル経由で受け取る方法ではなく)直接受け取りたい。
Q9-1:
具体的には次のような処理をMZ Platformで行いたい。
Process pr = Runtime.getRuntime().exec(cmd);
pr.waitFor();
status = pr.exitValue();
<MZ Platformの「外部プログラム通信」の使用方法>
@「外部プログラム通信」で“通信先プログラム設定”を行う。
A「外部プログラム通信」で“モード指定での通信先プログラムの起動”(true)を行う。
B「外部プログラム通信」の処理完了イベントで、「外部プログラム通信」の“最後のコマンド実行結果の取得”を行い、メソッド処理結果を得る(イベント番号:2)。
あるいは
B' 「外部プログラム通信」の処理完了イベントで、イベント内包で“処理結果データ”(外部プログラムの出力結果)を得る(イベント番号:5)。
(イベント番号5は、非対話モードの外部プログラム終了なので・・・?)
あるいは
B”外部プログラム通信」のデータ生成イベントで、イベント内包で“イベント対象データ”(受信内容を示す文字列)を得る。
いろいろ試してみましたが、どのようにすればやりたいことができるのか、よくわかりませんでした。
A9-1:
1.申し訳ございませんが、現在のところ[外部プログラム通信]では、exitValue()で得られるような、プロセスの終了コードを取得できるようにはなっていません。改善を検討することもできますので、ご要望がありましたら大変お手数ですが、お知らせ頂ければ幸いです。
2.実行したいプログラムで処理結果を標準出力している、あるいは標準出力するよう変更できる場合、以下の方法で可能かと思います。
> @「外部プログラム通信」で“通信先プログラム設定”を行う。
> A「外部プログラム通信」で“モード指定での通信先プログラムの起動”(flase)を行う。←(対話モードでなく、非対話モードとしたい)
> B' 「外部プログラム通信」の処理完了イベントで、イベント内包で“処理結果データ”(外部プログラムの出力結果)を得る(イベント番号:5)。
> @「外部プログラム通信」で“通信先プログラム設定”を行う。
> A「外部プログラム通信」で“モード指定での通信先プログラムの起動”(true)を行う。(または“対話モードでの通信先プログラムの起動()”)
> B”外部プログラム通信」のデータ生成イベントで、イベント内包で“イベント対象データ”(受信内容を示す文字列)を得る。