0

Java を介して単純な Hello World Cobol プログラムを呼び出そうとしています。Java コードは IFS ファイル構造であり、cobol オブジェクトはライブラリにパークされています。私は複数の問題に直面しています:

  1. プロセスの実行によって返されたエラー ストリームは、読み取り可能な形式ではありません。
  2. COBOL コードの終了で 0 が返されても、エラー ストリームの結果が返されます。
  3. プロセスの入力ストリームに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.  
4

2 に答える 2

2

IBMのエンコード形式http://publib.boulder.ibm.com/html/as400/v4r5/ic2924/index.htm?info/java/rzaha/fileenc.htmに焦点を当てるべき でした

米国では、UTF8やその他の形式の代わりに「Cp037」を使用しました。

BufferedReader inStream1 = new BufferedReader(new InputStreamReader(theProcess.getErrorStream()、 "Cp037"));

于 2012-07-27T18:02:34.413 に答える
1

私は Cobol プログラマーではありませんが、Cobol 動詞 DISPLAY は stdout に書き込まないと思います。Cobol のマニュアルを確認してください。ただし、DISPLAY を使用するのではなく、実際に Cobol プログラムで stdout を開いて書き込みを行う必要があると思います。

IBM i でプログラムを呼び出したい場合は、JTOpen IBM Toolbox for Javaを使用します。IBM Infocenterに慣れていないと、Javadocを見つけるのが難しい場合があります。

于 2012-07-27T18:07:19.073 に答える