1

创建假脱机文件时有没有办法指定 JOB 名称?这样我创建的 sf 就没有默认的“QPRTJOB”。

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


   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;
   }  
4

2 回答 2

3

ATTR_JOBUSER 和 ATTR_JOBNAME 是假脱机文件的只读属性。我注意到,每当我的 Java 程序与 AS/400 通信时——即使是那些在 AS/400 上本地运行的程序——它们都会与主机服务器作业进行通信,而不必与提交 Java 调用的作业通信。在这种情况下,您正在与 400 上的打印服务器作业对话,并且所有假脱机文件都将获得一个 QPRTJOB 作业名称。

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

于 2009-08-12T19:43:44.403 回答
1

作业、用户和作业编号由系统分配,不能更改。无论如何,据我所知。

于 2009-08-13T02:29:07.703 回答