忙着尝试Call RPG function from Java并从this获得了JamesA示例。但是现在我遇到了麻烦,这是我的代码:
AS400 system = new AS400("MachineName");
ProgramCall program = new ProgramCall(system);
try
{
// Initialise the name of the program to run.
String programName = "/QSYS.LIB/LIBNAME.LIB/FUNNAME.PGM";
// Set up the 3 parameters.
ProgramParameter[] parameterList = new ProgramParameter[2];
// First parameter is to input a name.
AS400Text OperationsItemId = new AS400Text(20);
parameterList[0] = new ProgramParameter(OperationsItemId.toBytes("TestID"));
AS400Text CaseMarkingValue = new AS400Text(20);
parameterList[1] = new ProgramParameter(CaseMarkingValue.toBytes("TestData"));
// Set the program name and parameter list.
program.setProgram(programName, parameterList);
// Run the program.
if (program.run() != true)
{
// Report failure.
System.out.println("Program failed!");
// Show the messages.
AS400Message[] messagelist = program.getMessageList();
for (int i = 0; i < messagelist.length; ++i)
{
// Show each message.
System.out.println(messagelist[i]);
}
}
// Else no error, get output data.
else
{
AS400Text text = new AS400Text(50);
System.out.println(text.toObject(parameterList[1].getOutputData()));
System.out.println(text.toObject(parameterList[2].getOutputData()));
}
}
catch (Exception e)
{
//System.out.println("Program " + program.getProgram() + " issued an exception!");
e.printStackTrace();
}
// Done with the system.
system.disconnectAllServices();
该应用程序挂在此行
if (program.run() != true)
上,我等待约10分钟,然后终止该应用程序。知道我在做什么错吗?
编辑
这是作业日志上的消息:
客户端请求-运行程序QSYS / QWCRTVCA。
客户请求-运行程序LIBNAME / FUNNAME。
找不到库* LIBL中的文件P6CASEL2或缺少内联数据文件。
OPEN期间出现错误消息CPF4101。
无法解析为对象YOBPSSR。 X'0201'授权的类型和子类型
FUNNAME通过称为P6CASEL2的视图在表P6CASEPF中插入一行。 P6CASEL2在另一个库中,可以说LIBNAME2。是否有可能设置JobDescription?
最佳答案
您确定FUNNAME.PGM
正在终止并且未与MSGW挂在一起吗?检查QSYSOPR
是否有任何消息。
Class ProgramCall:
注意:当程序在主机服务器作业中运行时,库列表将是用户配置文件中作业描述中指定的初始库列表。