忙着尝试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:

注意:当程序在主机服务器作业中运行时,库列表将是用户配置文件中作业描述中指定的初始库列表。

10-04 18:03