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 ジョブ名を取得します。

複雑な回避策は、メッセージ テキストをパラメーターとして使用して単純な RPG プログラムを呼び出すコマンドを使用して、NASAOBRJVA という名前の新しいジョブを Java プログラムに送信させることです。スプール・ファイルにジョブ名を付けるのはおそらく大変な作業ですが、その作業に見合うだけの価値があるかどうかを知るには、プロジェクトについて十分に理解しているはずです。

于 2009-08-12T19:43:44.403 に答える
1

ジョブ、ユーザー、およびジョブ番号はシステムによって割り当てられ、変更できません。とにかく私の知る限りでは。

于 2009-08-13T02:29:07.703 に答える