Java を介して単純な Hello World Cobol プログラムを呼び出そうとしています。Java コードは IFS ファイル構造であり、cobol オブジェクトはライブラリにパークされています。私は複数の問題に直面しています:
- プロセスの実行によって返されたエラー ストリームは、読み取り可能な形式ではありません。
- COBOL コードの終了で 0 が返されても、エラー ストリームの結果が返されます。
- プロセスの入力ストリームにcobolの出力結果が見えません。(エラーストリームがわかれば解決するかもしれません)
COBOL コードは、独立して呼び出すと機能します。UTF8、UTF16、Cp943、およびデフォルトのエンコードを試みました。UTF8、UTF16 を使用すると、MalformedInputException が発生します。それ以外の場合はガベージ値です。
Java コード:(コンパイル済み @ AS 400 自体 -java 1.5)
java.io.* をインポートします。 パブリック クラス CallCLPgm { public static void main(String[] args) { 試す { 処理 theProcess = Runtime.getRuntime().exec("system CALL PROG6"); //エラー ストリーム BufferedReader inStream1 = new BufferedReader(new InputStreamReader (theProcess.getErrorStream(),"UTF8")); System.out.println(inStream1.readLine()); inStream1.close(); //入力ストリーム BufferedReader inStream = 新しい BufferedReader(新しい InputStreamReader (theProcess.getInputStream())); System.out.println(inStream.readLine()); inStream.close(); System.out.println("終了 : "+theProcess.waitFor());
//Cobol code
PROCEDURE DIVISION.
PROGRAM-BEGIN.
DISPLAY "Hello World".
STOP RUN.