Java ProgramCall.run挂起

798qvoo8  于 2023-10-14  发布在  Java
关注(0)|答案(3)|浏览(69)

忙碌忙着尝试Call RPG function from Java,并从JamesA得到this示例。但现在我遇到了麻烦,这是我的代码:

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分钟,然后终止了应用程序。
知道我哪里做错了吗

编辑

以下是作业日志上的消息:
客户端请求-运行程序QRST/QWCRTVCA。
客户端请求-运行程序LIBNAME/FUNNAME。
库中的文件P6 CASEL 2 *LIBL未找到或缺少内联数据文件。打开期间出现错误消息CPF 4101。
无法解析为对象YOBPSSR。类型和子类型X '0201'权限
FUNNAME通过名为P6 CASEL 2的视图将行插入表P6 CASEPF。P6 CASEL 2在不同的库中,比如说LIBNAME 2。有没有办法设置JobDescription?

a1o7rhls

a1o7rhls1#

您确定FUNNAME.PGM正在终止并且没有挂起MSGW吗?检查QSYSOPR是否有任何消息。
Class ProgramCall
注:当程序在主机服务器作业中运行时,库列表将是用户配置文件中作业描述中指定的初始库列表。

roqulrg3

roqulrg32#

所以我看到我的问题是我的库列表没有设置,并且由于某种原因,我们正在使用的用户没有职位描述。为了克服这个问题,我在调用program.run()之前添加了以下代码:

CommandCall command = new CommandCall(system);
command.run("ADDLIBLE LIB(LIBNAME)");
command.run("ADDLIBLE LIB(LIBNAME2)");

这只是将这个LIBNAME和LIBNAME2添加到用户的库列表中。

ecbunoof

ecbunoof3#

哦,是的,问题是图书馆列表没有设置...看看www.example.com上的讨论Midrange.com,有不同的解决方法. http://archive.midrange.com/java400-l/200909/msg00032.html
德佩

相关问题