我试图通过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.
答案 0 :(得分:2)
我应该专注于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”));
答案 1 :(得分:1)
我不是Cobol程序员,但我认为Cobol动词DISPLAY不会写入stdout。查看Cobol手册,但我的猜测是你需要在你的Cobol程序中实际打开stdout并写入它而不是使用DISPLAY。
当我想在IBM i上调用程序时,我使用JTOpen IBM Toolbox for Java。如果您不熟悉Javadoc,则可能很难找到IBM Infocenter。