我正在使用JT400开发Java类,并尝试通过以下命令获取命令“ dspmsg qsysopr”的结果:

AS400 as400 = new AS400(system, user, password);
CommandCall cmd = new CommandCall(as400);
cmd.runCommand("dspmsg qsysopr");


我发现该命令与用户QUSER一起在JOB中运行,但是在实例化对象AS400时,在指定的用户“用户”下生成了带有结果的假脱机文件。

我可以成功运行该命令,但结果却不是队列中的消息:

“打印机输出已创建。”

我得到的结果与代码:

Job job = cmd.getServerJob();
AS400Message[] messageList = cmd.getMessageList();
for (int i = 0; i < messageList.length; i++) {
    System.out.println(messageList[i].getText());
}


问题1:是否有一种方法可以不接收假脱机文件中的消息,而是以AS400Message或类似的形式将其返回给我?

无法执行此操作,我正在使用以下方法来获取假脱机文件:

 public String getSpoolFile  (
         String splfname,     // splf name
         String splfnumbert,        // splf number
         String jobname,      // job name
         String jobuser,      // job user
         String jobfnumber // job number
         ) throws Exception  {

   int splno = Integer.parseInt(splfnumbert);

   SpooledFile sf = new SpooledFile( as400,        // system
                             splfname,     // splf name
                             splno,        // splf number
                             jobname,      // job name
                             jobuser,      // job user
                             jobfnumber               );




   PrintParameterList printParms = new PrintParameterList();
   printParms.setParameter(PrintObject.ATTR_WORKSTATION_CUST_OBJECT, "/QSYS.LIB/QWPDEFAULT.WSCST");
   printParms.setParameter(PrintObject.ATTR_MFGTYPE, "*WSCST");

   // Create a page input stream from the spooled file
   PrintObjectPageInputStream is;
   String data ="";
   String response ="";

    is = sf.getPageInputStream(printParms);
       BufferedReader d = new BufferedReader(new InputStreamReader(is));
       while((data = d.readLine() )!=null)
       {
           response+=data+"\n";
       }

    return response;
 }


问题是:我没有参数来调用方法“ getSpoolFile”。
如果我手动登录AS400,请检查假脱机文件详细信息,并使用手动获取的参数调用该方法,那么我将成功获取假脱机文件。
但是我收到的JOB对象是:

Job job = cmd.getServerJob();


运行后:

cmd.runCommand("dspmsg qsysopr");


与创建假脱机文件的作业不同。例如,如果我检查:

System.out.println(job.getUser());


结果为“ QUSER”,但假脱机文件是在“用户”输出队列下生成的。

问题2:如何获得与该假脱机文件的生成相关的作业?

问题3:我还能获取与生成的假脱机文件相关的参数,例如假脱机文件号和假脱机文件名吗?

我需要以下信息才能调用“ getSpoolFile”方法:


假脱机文件名
假脱机文件编号
工作名称
工作用户
工作编号


谢谢,
卡洛斯

最佳答案

您可能根本不想“打印”消息。一旦获得消息,您就没有说要处理任何消息(首先获取QSYSOPR消息可能不是一个好主意)。

您可以查看AS/400 Message queue filtering - JT400,然后开始思考如何继续。消息可以做很多事情。

09-27 12:17