Domanda

C'è un modo per specifiy il nome del lavoro durante la creazione di un file di spool? In modo che il mio s.f. creato non ha il valore di default "QPRTJOB".

Il mio metodo che crea un file di spool con il lavoro di default 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;
   }  
È stato utile?

Soluzione

ATTR_JOBUSER e ATTR_JOBNAME sono di sola lettura attributi per un file di spool. Ho notato che ogni volta che i miei programmi Java parlare con l'AS / 400 - anche quelli che sono in esecuzione in modo nativo su AS / 400 - Parlano di ospitare i lavori del server e non necessariamente il lavoro che ha presentato la chiamata Java. In questo caso, si sta parlando di un lavoro di server di stampa sulla 400 e tutti i tuoi file di spool otterrà un nome lavoro QPRTJOB.

Un work-around elaborato sarebbe quello di avere il programma Java presentare un nuovo lavoro denominato NASAOBRJVA con un comando per richiamare qualche semplice programma RPG con il testo del messaggio come parametro. Questo è probabilmente un grande sforzo per un nome di lavoro su un file di spool, ma sai che il tuo progetto abbastanza per sapere se vale la pena questo sforzo.

Altri suggerimenti

Job, utente e il numero di posti di lavoro vengono assegnati dal sistema e non possono essere cambiati. Per quanto a mia conoscenza, in ogni caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top