Java JT400-获取由命令生成的假脱机文件

Java JT400-获取由命令生成的假脱机文件,java,ibm-midrange,jt400,Java,Ibm Midrange,Jt400,我正在使用JT400开发一个java类,并尝试使用以下命令获得命令“dspmsg qsysopr”的结果: 我发现该命令在带有用户QUSER的作业中运行,但是在实例化对象AS400时,在指定的用户“user”下生成了一个spool文件,其中包含结果 我可以成功运行该命令,但结果不是队列中的消息: “已创建打印机输出。” 我使用以下代码获得此结果: Job job = cmd.getServerJob(); AS400Message[] messageList = cmd.getMessageLi

我正在使用JT400开发一个java类,并尝试使用以下命令获得命令“dspmsg qsysopr”的结果:

我发现该命令在带有用户QUSER的作业中运行,但是在实例化对象AS400时,在指定的用户“user”下生成了一个spool文件,其中包含结果

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

“已创建打印机输出。”

我使用以下代码获得此结果:

Job job = cmd.getServerJob();
AS400Message[] messageList = cmd.getMessageList();
for (int i = 0; i < messageList.length; i++) {
    System.out.println(messageList[i].getText()); 
}
问题是:我没有调用方法“getSpoolFile”的参数。 如果我手动登录AS400,检查spool文件的详细信息,并使用手动获取的参数调用该方法,我将成功获取spool文件。 但我收到的工作对象是:

Job job = cmd.getServerJob();
运行后:

cmd.runCommand("dspmsg qsysopr");
与创建假脱机文件的作业不同。例如,如果我选中:

System.out.println(job.getUser());
结果是“QUSER”,但spool文件是在“user”输出队列下生成的

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

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

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

  • 假脱机文件名
  • 假脱机文件号
  • 职务名称
  • 工作用户
  • 工作编号
谢谢,
Carlos

您可能根本不想“打印”这些消息。您还没有说过在收到任何消息后要对其执行什么操作(而且从一开始获取QSYSOPR消息可能不是一个好主意)


你可能会回顾一下,然后开始思考如何继续。可以对消息做很多事情。

你可能根本不想“打印”消息。你还没有说过在收到消息后要对任何消息做什么(而且从一开始获取QSYSOPR消息可能不是一个好主意)


您可能会回顾并开始思考您希望如何继续。有很多事情可以通过消息来完成。

不具体说明如何检索假脱机文件信息,但如果这是您的最终目标,这将为您提供QSYSOPR消息

AS400 sys = new AS400(as400system,username,password);

//Get the user object for QSYSOPR
User u = new User(sys,"qsysopr");

//Get the path to the user's message queue
String qpath = u.getMessageQueue();

//Retrieve the message queue object
MessageQueue queue = new MessageQueue(sys, qpath);

// Get the list of messages currently in this user's queue.
queue.setListDirection(false);

//Get the first 15 messsages    
QueuedMessage[] qm = queue.getMessages(0,15);


//Loop through the messages
for (int i = qm.length -1; i >=0; i--)
       {

        System.out.println(qm[i].getText());

    }

当然,您可以从QueuedMessage类检索其他属性、日期、回复状态和用户。无需解析。

不具体说明如何检索假脱机文件信息,但如果这是您的最终目标,这将为您获取QSYSOPR消息

AS400 sys = new AS400(as400system,username,password);

//Get the user object for QSYSOPR
User u = new User(sys,"qsysopr");

//Get the path to the user's message queue
String qpath = u.getMessageQueue();

//Retrieve the message queue object
MessageQueue queue = new MessageQueue(sys, qpath);

// Get the list of messages currently in this user's queue.
queue.setListDirection(false);

//Get the first 15 messsages    
QueuedMessage[] qm = queue.getMessages(0,15);


//Loop through the messages
for (int i = qm.length -1; i >=0; i--)
       {

        System.out.println(qm[i].getText());

    }

当然,还有其他属性、日期、回复状态、用户,您可以从QueuedMessage类中检索。无需解析。

感谢您的回复。我尝试的是一个类来运行命令并获取命令结果的回复。它是一个通用类,可用于执行任务,甚至可以执行一些监视操作在系统中。除了“dspmsg”的这个细节外,它工作得很好。当我们运行这个命令时,我们显然不希望结果是“spool file created”,而是队列qsysopr的消息。如果我明白了你的意思,你是在告诉我,对于dspmsg,我应该使用另一种方法来获取消息,而不是使用“runCommand”方法"为了实现这个目标。你是这么说的吗?Ps。我是JT400的真正初学者。我将测试你链接的代码并阅读更多关于它的内容。DSPMSG实际上永远不适合任何批处理过程,无论是Java还是其他,除非出于某种原因明确需要假脱机报告。使用设计用于访问的JTOpen类消息队列对您来说更好。感谢您的回复。我正在尝试的是一个类来运行命令并获得命令结果的回复。它是一个通用类,可用于执行任务,甚至对系统进行一些监视。除了“dspmsg”的这一细节外,它工作得很好。当我们运行此命令时,我们显然不希望结果是“创建假脱机文件”,而是队列qsysopr的消息。如果我明白你的意思,你是在告诉我,对于dspmsg,我应该使用另一种方法来获取消息,而不是使用“runCommand”方法为了实现这个目标。你是这么说的吗?Ps。我是JT400的真正初学者。我将测试你链接的代码并阅读更多关于它的内容。DSPMSG实际上永远不适合任何批处理过程,无论是Java还是其他,除非出于某种原因明确需要假脱机报告。使用设计用于访问的JTOpen类消息队列更适合您。
AS400 sys = new AS400(as400system,username,password);

//Get the user object for QSYSOPR
User u = new User(sys,"qsysopr");

//Get the path to the user's message queue
String qpath = u.getMessageQueue();

//Retrieve the message queue object
MessageQueue queue = new MessageQueue(sys, qpath);

// Get the list of messages currently in this user's queue.
queue.setListDirection(false);

//Get the first 15 messsages    
QueuedMessage[] qm = queue.getMessages(0,15);


//Loop through the messages
for (int i = qm.length -1; i >=0; i--)
       {

        System.out.println(qm[i].getText());

    }