[英]MalformedInputException while streaming results from Runtime process execution(cobol obj) via Java on AS400
我正在嘗試通過java調用一個簡單的Hello World Cobol程序。 Java代碼采用IFS文件結構,並且cobol對象停放在庫中。 我面臨多個問題:
當獨立調用時,cobol代碼有效。 我已經嘗試編碼UTF8,UTF16,Cp943和默認值。 當我使用UTF8,UTF16時,會收到MalformedInputException,否則為垃圾值。
Java代碼:(@ AS 400本身編譯-java 1.5)
import java.io.*; public class CallCLPgm { public static void main(String[] args) { try { Process theProcess = Runtime.getRuntime().exec("system CALL PROG6"); //error stream BufferedReader inStream1 = new BufferedReader(new InputStreamReader (theProcess.getErrorStream(),"UTF8")); System.out.println(inStream1.readLine()); inStream1.close(); //input stream BufferedReader inStream = new BufferedReader(new InputStreamReader (theProcess.getInputStream())); System.out.println(inStream.readLine()); inStream.close(); System.out.println("termination : "+theProcess.waitFor());
//Cobol code
PROCEDURE DIVISION.
PROGRAM-BEGIN.
DISPLAY "Hello World".
STOP RUN.
我應該專注於IBM編碼格式http://publib.boulder.ibm.com/html/as400/v4r5/ic2924/index.htm?info/java/rzaha/fileenc.htm
我在美國使用的是“ Cp037”,而不是UTF8和其他格式。
BufferedReader inStream1 = new BufferedReader(new InputStreamReader(theProcess.getErrorStream(),“ Cp037”));
我不是Cobol程序員,但我認為Cobol動詞DISPLAY不會寫入stdout。 請查閱Cobol手冊,但我想您將需要在Cobol程序中實際打開stdout並對其進行寫入,而不是使用DISPLAY。
當我想在IBM i上調用程序時,請使用JTOpen IBM Toolbox for Java 。 如果您不熟悉IBM Infocenter,可能很難找到Javadoc 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.