我正在尝试通过 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 { 公共静态无效主要(字符串 [] 参数) { 尝试 { Process 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 = new BufferedReader(new 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.