Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iSeries上使用指定的作业名称从Java创建假脱机文件_Java_Ibm Midrange_Jt400 - Fatal编程技术网

在iSeries上使用指定的作业名称从Java创建假脱机文件

在iSeries上使用指定的作业名称从Java创建假脱机文件,java,ibm-midrange,jt400,Java,Ibm Midrange,Jt400,创建假脱机文件时,是否有方法指定作业名称? 因此,我创建的s.f.没有默认的“QPRTJOB” 使用默认QPRTJOB作业创建假脱机文件的方法: publicstaticspooledfilecreatespoolfile(com.ibm.as400.access.as400-as,PrinterFile-pprinfile, OutputQueue(输出队列,字符串消息){ SpooledFile result=null; 试一试{ PrintParameterList parms=新的Pr

创建假脱机文件时,是否有方法指定作业名称? 因此,我创建的s.f.没有默认的“QPRTJOB”

使用默认QPRTJOB作业创建假脱机文件的方法:


publicstaticspooledfilecreatespoolfile(com.ibm.as400.access.as400-as,PrinterFile-pprinfile,
OutputQueue(输出队列,字符串消息){
SpooledFile result=null;
试一试{
PrintParameterList parms=新的PrintParameterList();
//使用所需的值创建PrintParameterList
//要从默认打印机文件覆盖…我们将覆盖
//输出队列和副本值。
setParameter(PrintObject.ATTR_PRINTER_文件,pprinfile.getPath());
参数(PrintObject.ATTR_JOBUSER,AS400.getUser().getUserProfileName());
参数(PrintObject.ATTR_JOBNAME,“NASAOBRJVA”);
setParameter(PrintObject.ATTR_OUTPUT_QUEUE,outq.getPath());
参数(PrintObject.ATTR_CHAR_ID,“*SYSVAL”);
SpooledFileOutputStream spool=新的SpooledFileOutputStream(as、parms、PPrinfile、,
outq);
SCS5256Writer scsWtr=新的SCS5256Writer(spool,pprinfile.getSystem().getCcsid(),pprinfile.getSystem());
字符串[]redovi=msg.split(“\n”);
for(int i=0;i
ATTR\u JOBUSER和ATTR\u JOBNAME是假脱机文件的只读属性。我注意到,每当我的Java程序与AS/400对话时——即使是在AS/400上本机运行的程序——它们都与主机服务器作业对话,而不一定是提交Java调用的作业。在本例中,您正在与400上的打印服务器作业对话,并且所有假脱机文件都将获得QPRTJOB作业名称


一个复杂的解决方法是让Java程序提交一个名为NASAOBRJVA的新作业,并使用一个命令调用一些简单的RPG程序,并将消息文本作为参数。对于假脱机文件中的作业名称,这可能需要花费大量的精力,但您对项目的了解足以让您知道它是否值得这样做。

ATTR\u JOBUSER和ATTR\u JOBNAME是假脱机文件的只读属性。我注意到,每当我的Java程序与AS/400对话时——即使是在AS/400上本机运行的程序——它们都与主机服务器作业对话,而不一定是提交Java调用的作业。在本例中,您正在与400上的打印服务器作业对话,并且所有假脱机文件都将获得QPRTJOB作业名称


一个复杂的解决方法是让Java程序提交一个名为NASAOBRJVA的新作业,并使用一个命令调用一些简单的RPG程序,并将消息文本作为参数。在假脱机文件中输入作业名称可能需要花费大量的精力,但您对项目的了解足以让您知道是否值得这样做。

作业、用户和作业编号由系统分配,无法更改。就我所知。

作业、用户和作业编号由系统分配,不能更改。就我所知。

您建议RPG程序创建假脱机文件?创建假脱机文件是RPG最初设计的功能。:)您必须使用指定的作业名称将RPG程序提交到新作业。这是一个不雅观的解决方案,但它会给你一个包含你想要的作业名的假脱机文件。我会让我的同事编写一个简单的RPG,并尝试使用Java的命令调用。确保命令调用是一个指定你想要的作业名的SBMJOB命令。我放弃了用这种方式尝试使用相同的作业名。。。我找到了另一种方法:SBMJOB CMD(RUNJVA CLASS('/myJar.jar')PROP((java.version'1.6'))JOB(NASAJAVA)OUTPUT(*PRINT))JOB(NASAJAVA)JOBQ(QBATCH),它在QBATCH子系统上提交两个具有相同jobname的作业。从Java中创建的假脱机文件进入一个约定的输出队列,因此我们在那里查看。您建议RPG程序创建假脱机文件吗?创建假脱机文件RPG最初的设计目的是什么。:)您必须使用指定的作业名称将RPG程序提交到新作业。这是一个不雅观的解决方案,但它会给你一个包含你想要的作业名的假脱机文件。我会让我的同事编写一个简单的RPG,并尝试使用Java的命令调用。确保命令调用是一个指定你想要的作业名的SBMJOB命令。我放弃了用这种方式尝试使用相同的作业名。。。我找到了另一种方法:SBMJOB CMD(RUNJVA CLASS('/myJar.jar')PROP((java.version'1.6'))JOB(NASAJAVA)OUTPUT(*PRINT))JOB(NASAJAVA)JOBQ(QBATCH),它在QBATCH子系统上提交两个具有相同jobname的作业。从Java内部创建的假脱机文件进入一个约定的输出队列,因此我们在那里查看。我发布的代码应该在iSeries上运行,所以我的计划是像这样启动Java程序:RUNJVA CLASS('/home/username/myJar.jar')PROP((Java.version'1.6'))JOB(MYJOBNAME)OUTPUT(*PRINT)因此,我希望我的spool文件获得启动程序的作业的作业名。在本例中,MYJOBNAME我发布的代码应该在iSeries上运行,因此我的计划是像这样启动java程序:RUNJVA CLASS('/home/username/myJar.jar')PROP((java.version'1.6'))JOB(MYJOBNAME)OUTPUT(*PRINT),所以我希望我的spool文件获得启动程序的作业的jobname。在本例中,请注意,在任何时候,您都可以
   public static SpooledFile createSpoolFile( com.ibm.as400.access.AS400 as, PrinterFile pPrinterFile,
         OutputQueue outq, String msg ) {
      SpooledFile result = null;
      try {
         PrintParameterList parms = new PrintParameterList();

         // create a PrintParameterList with the values that we want
         // to override from the default printer file...we will override
         // the output queue and the copies value.
         parms.setParameter( PrintObject.ATTR_PRINTER_FILE, pPrinterFile.getPath() );
         parms.setParameter( PrintObject.ATTR_JOBUSER, AS400.getUser().getUserProfileName() );
         parms.setParameter( PrintObject.ATTR_JOBNAME, "NASAOBRJVA" );
         parms.setParameter( PrintObject.ATTR_OUTPUT_QUEUE, outq.getPath() );
         parms.setParameter( PrintObject.ATTR_CHAR_ID, "*SYSVAL" );

         SpooledFileOutputStream spool = new SpooledFileOutputStream( as, parms, pPrinterFile,
               outq );


         SCS5256Writer scsWtr = new SCS5256Writer( spool, pPrinterFile.getSystem().getCcsid(), pPrinterFile.getSystem() );

         String[] redovi = msg.split( "\n" );
         for ( int i = 0; i < redovi.length; i++ ) {
            if (redovi[i].equals( "" ) || redovi[i].equals( " " )) {
               continue;
            }
            scsWtr.write( redovi[i].trim() );
            if (i < redovi.length - 1) {
               scsWtr.newLine();
            }
         }

         scsWtr.close();
         result = spool.getSpooledFile();
         System.out.println("Spool is in Job: " + result.getJobNumber() + "/" + result.getJobUser() + "/" + result.getJobName());
      }
      catch ( Exception e ) {
         LOG.error( e );
      }
      return result;
   }