Я хочу вызывать программы AS/400 RPG из Java, но сталкиваюсь с ошибкой, как показано ниже.
com.ibm.as400.data.PcmlException: получено исключение: [com.ibm.as400.access.ObjectDoesNotExistException] /QSYS.LIB/%LIBL%.LIB/GETKURSJAV.PGM: объект не существует. в com.ibm.as400.data.ProgramCallDocument.callProgram(ProgramCallDocument.java:458) в CallRPG.main(CallRPG.java:34) Причина: com.ibm.as400.access.ObjectDoesNotExistException: /QSYS.LIB/%LIBL %.LIB/GETKURSJAV.PGM: Объект не существует. в com.ibm.as400.access.RemoteCommandImplRemote.runProgramOffThread(RemoteCommandImplRemote.java:595) в com.ibm.as400.access.RemoteCommandImplRemote.runProgram(RemoteCommandImplRemote.java:532) в com.ibm.as400.access.ProgramCall.run (ProgramCall.java:780) по адресу com.ibm.as400.data.PcmlProgram.callProgram(PcmlProgram.java:681) по адресу com.ibm.as400.data.PcmlDocument.callProgram(PcmlDocument.java:462) по адресу com.ibm. as400.data.ProgramCallDocument.callProgram(ProgramCallDocument.java:445) ... еще 1
и это мой java-код
import com.ibm.as400.access.AS400;
import com.ibm.as400.access.AS400Message;
import com.ibm.as400.access.ProgramParameter;
import com.ibm.as400.data.PcmlException;
import com.ibm.as400.data.ProgramCallDocument;
public class CallRPG {
public static void main(String[] args) {
// TODO Auto-generated method stub
AS400 as400 = null;
String host = "10.2.62.7";
String username = "USERNAME";
String password = "PASSWORD";
as400 = new AS400(host, username, password);
if (as400 == null) {
System.out.println("Connection Failed");
} else {
System.out.println("Connection Success");
}
ProgramCallDocument pcml;
try {
pcml = new ProgramCallDocument(as400, "getkursjav.pcml");
pcml.setValue("GETKURSJAV.CCCKRS", "51");
pcml.setValue("GETKURSJAV.IDXKRS", "5");
// call the program
boolean rc = pcml.callProgram("GETKURSJAV");
if (rc == false) {
System.out.println("Program failed");
} else {
int outputData = (int) pcml.getValue("GETKURSJAV.ZRTNKRS");
System.out.println(outputData / 100000);
}
} catch (PcmlException pe) {
System.out.println(" Caught Exception ");
pe.printStackTrace();
} finally {
System.exit(0);
}
}
}
и это мой файл pcml
<pcml version="4.0">
<program name="GETKURSJAV" path="/QSYS.LIB/%LIBL%.LIB/GETKURSJAV.PGM">
<data name="CCCKRS" type="packed" length="2" precision="0" usage="input" />
<data name="IDXKRS" type="packed" length="2" precision="0" usage="input" />
<data name="ZRTNKRS" type="char" length="10" usage="output" />
</program>
</pcml>
что не так с моим кодом? Нужно ли добавлять as400 CURLIB и PRGLIB в мой код Java? если да, как я могу добавить библиотеки?
if (as400 == null)
это невозможно, потому что вы сделалиnew
- person   schedule 07.09.2017