Tools

68. OUTQ のスプールをまとめて一括変換する CHGOUTQF

印刷スプールを保存するのにある OUTQ にまとめて保管している例がある。
Spool ライターVer5.0 でまとめて PDF に変換して別の PC サーバーへ Ftp 転送すれば
高価な IBM i の HDD に長期保存しなくて済む。
何より PDF にして PC サーバーに保存すれば社内全員がいつでも参照することが
できるし保存コストも安くて済む。
PC サーバーの耐久性も心配のない時代にはなっているが
PC サーバーが不安であればクラウドに保存すればよい。

と、いうことで PDF ドライバーに連携した PDFDEV という名前の OUTQ に
現在、保管されているスプールをすべて移せばよいところまでわかった。

ところが保管用のスプール・ファイルは

  • 別のある OUTQ に状況: *HLD として保管されている。

しかも保管済みのスプールは 5000 個以上ある。
手動ではとても 5000 個のスプールを CHGOUTQ することはできない。
そこで作成したのがここに紹介する CHGOUTQF : OUTQ のスプール属性変更
( CHGOUTQF ) である。

                       OUTQ のスプール属性変更  (CHGOUTQF)                 
                                                                           
  選択項目を入力して,実行キーを押してください。                           
                                                                           
  出力待ち行列  . . . . . . . . . > IPPOUTQ        名前                    
    ライブラリー  . . . . . . . . >   SPOOLWTR     名前 , *LIBL, *CURLIB   
  状況 (STS)  . . . . . . . . . . > *READY         *SAME, *READY, *HELD     
 TO 出力待ち行列  . . . . . . . . > PDFDEV        名前 , *SAME            
    ライブラリー  . . . . . . . . >   QUSRSYS     名前 , *LIBL, *CURLIB   




【 解説 】

現在の OUTQ を「出力待ち行列」パラメータとして指定する。
状況( STS )を *READY として指定すると *HLD 状態のスプールがあれば
RLSPLF コマンドによってリリース・モードに戻してくれる。
「 TO 出力待ち行列 」に PDFDEV として PDF 変換する OUTQ を指定すれば
指定した OUTQ に一括して変更が行われる。
実行後には変更したスプールの個数が報告される。

【 コマンド: CHGOUTQF 】
0001.00              CMD        PROMPT('OUTQ のスプール属性変更 ')            
0002.00              PARM       KWD(OUTQ) +                                   
0003.00                         TYPE(OUTQ) +                                  
0004.00                         PROMPT(' 出力待ち行列 ')                      
0005.00  OUTQ:       QUAL       TYPE(*NAME) LEN(10)                           
0006.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +              
0007.00                           SPCVAL((*LIBL) (*CURLIB '*CURLIB   ')) +    
0008.00                           EXPR(*YES) PROMPT(' ライブラリー ')         
0009.00              PARM       KWD(STS) TYPE(*CHAR) LEN(10) RSTD(*YES) +     
0010.00                           DFT(*SAME) VALUES(*READY *HELD) +           
0011.00                           SPCVAL((*SAME)) PROMPT(' 状況 (STS)')       
0012.00              PARM       KWD(TOOUTQ) TYPE(TOOUTQ) +                    
0013.00                           PROMPT('TO 出力待ち行列 ')                  
0014.00  TOOUTQ:     QUAL       TYPE(*NAME) LEN(10) DFT(*SAME) SPCVAL((*SAME))
0015.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +              
0016.00                           SPCVAL((*LIBL) (*CURLIB '*CURLIB   ')) +    
0017.00                           EXPR(*YES) PROMPT(' ライブラリー ')         
[ コンパイル ]
CRTCMD CMD(MYLIB/CHGOUTQF) PGM(MYLIB/CHGOUTQFCL) SRCFILE(MYSRCLIB/QCMDSRC) AUT(*ALL)
【 CLP: CHGOUTQFCL 】
0001.00              PGM        PARM(&OUTQQLIB &STS &TOOUTQQLIB)                     
0002.00 /*-------------------------------------------------------------------*/      
0003.00 /*   CHGOUTQFCL : OUTQ のスプール属性変更                            */      
0004.00 /*                                                                   */      
0005.00 /*   2018/11/16  作成                                                */      
0006.00 /*-------------------------------------------------------------------*/      
0007.00              DCL        VAR(&OUTQQLIB) TYPE(*CHAR) LEN(20)                   
0008.00              DCL        VAR(&OUTQ) TYPE(*CHAR) LEN(10)                       
0009.00              DCL        VAR(&OUTQLIB) TYPE(*CHAR) LEN(10)                    
0010.00              DCL        VAR(&STS) TYPE(*CHAR) LEN(10)                        
0011.00              DCL        VAR(&TOOUTQQLIB) TYPE(*CHAR) LEN(20)                 
0012.00              DCL        VAR(&TOOUTQ) TYPE(*CHAR) LEN(10)                     
0013.00              DCL        VAR(&TOOUTQLIB) TYPE(*CHAR) LEN(10)                  
0014.00              DCL        VAR(&STSMSG) TYPE(*CHAR) LEN(132)                    
0015.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(132)                       
0016.00              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)                       
0017.00              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)                       
0018.00              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)                    
0019.00              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)                    
0020.00              DCL        VAR(&TYPE) TYPE(*CHAR) LEN(1)                        
0021.00              DCL        VAR(&TOPGMQ) TYPE(*CHAR) LEN(10)                     
0022.00              DCL        VAR(&MSGTYPE) TYPE(*CHAR) LEN(10) +                  
0023.00                           VALUE('*ESCAPE   ')                                
0024.00              DCL        VAR(&APIERR) TYPE(*CHAR) LEN(116) +                   
0025.00                           VALUE(X'000074') /* 2 進数  */                      
0026.00              DCL        VAR(&NULL4) TYPE(*CHAR) LEN(4) +                      
0027.00                           VALUE(X'00000000')                                  
0028.00              /*( QUSRTVUS 用の変数 )*/                                        
0029.00              DCL        VAR(&STRPOS) TYPE(*CHAR) LEN(4) +                     
0030.00                           VALUE(X'0000007D') /* 2 進数開始位置  : +           
0031.00                           125 */                                              
0032.00              DCL        VAR(&LENDTA) TYPE(*CHAR) LEN(4) +                     
0033.00                           VALUE(X'00000010') /* 2 進数受取長さ  : 16 */       
0034.00              DCL        VAR(&RCVVAR) TYPE(*CHAR) LEN(16) +                    
0035.00                           VALUE(X'0000000000000000')                          
0036.00              DCL        VAR(&OFFSET) TYPE(*CHAR) LEN(4) /* +                  
0037.00                           2 進数 オフセット */                                     
0038.00              DCL        VAR(&NOENTR) TYPE(*CHAR) LEN(4) /* +                  
0039.00                           2 進数項目数  */                                    
0040.00              DCL        VAR(&LSTSIZ) TYPE(*CHAR) LEN(4) /* +                  
0041.00                           2 進数リストサイズ  */                              
0042.00              DCL        VAR(&DEC08) TYPE(*DEC) LEN(8 0) /* WORK */            
0043.00              DCL        VAR(&ADDLEN) TYPE(*DEC) LEN(8 0) /* WORK */           
0044.00              DCL        VAR(&NOENT) TYPE(*DEC) LEN(8 0) /* WORK */            
0045.00              DCL        VAR(&N) TYPE(*DEC) LEN(8 0) VALUE(1) /* WORK */       
0046.00              DCL        VAR(&RCVDTA) TYPE(*CHAR) LEN(256) /* +                
0047.00                            受取データ  */                                     
0048.00              DCL        VAR(&JOBINFO) TYPE(*CHAR) LEN(16) /* +            
0049.00                           JOB 内部識別コード  */                          
0050.00              DCL        VAR(&SPLINFO) TYPE(*CHAR) LEN(16) /* +            
0051.00                           SPL 内部識別コード  */                          
0052.00              DCL        VAR(&UPDSUR) TYPE(*DEC) LEN(5 0) VALUE(0)         
0053.00              DCL        VAR(&CHAR5) TYPE(*CHAR) LEN(5)                    
0054.00              /*( QUSRSPLA : スプールの属性用変数 )*/                      
0055.00              DCL        VAR(&SPLVAR) TYPE(*CHAR) LEN(5000)                
0056.00              DCL        VAR(&SPLLEN) TYPE(*CHAR) LEN(4) +                 
0057.00                           VALUE(X'00001388')                              
0058.00              DCL        VAR(&JOBID) TYPE(*CHAR) LEN(16)                   
0059.00              DCL        VAR(&SPLID) TYPE(*CHAR) LEN(16)                   
0060.00              DCL        VAR(&JOB)  TYPE(*CHAR) LEN(10)                    
0061.00              DCL        VAR(&USER) TYPE(*CHAR) LEN(10)                    
0062.00              DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6)                   
0063.00              DCL        VAR(&SPLF) TYPE(*CHAR) LEN(10)                    
0064.00              DCL        VAR(&SPLNBR) TYPE(*DEC) LEN(8 0)                  
0065.00              DCL        VAR(&FLD4) TYPE(*CHAR) LEN(4)                     
0066.00              DCL        VAR(&STATUS) TYPE(*CHAR) LEN(10)                  
0067.00              DCL        VAR(&UPD) TYPE(*CHAR) LEN(1)                      
0068.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))           
0069.00                                                                           
0070.00 /*( 環境の取得 )*/                                                        
0071.00              RTVJOBA    TYPE(&TYPE)                                       
0072.00              IF         COND(&TYPE *EQ '0') THEN(DO) /*  バッチ  */        
0073.00              CHGVAR     VAR(&TOPGMQ) VALUE('*SYSOPR   ')                   
0074.00              ENDDO      /*  バッチ  */                                     
0075.00              ELSE       CMD(DO) /*  対話式  */                             
0076.00              CHGVAR     VAR(&TOPGMQ) VALUE('*TOPGMQ   ')                   
0077.00              ENDDO      /*  対話式  */                                     
0078.00                                                                            
0079.00 /*( パラメータの取得 )*/                                                   
0080.00              CHGVAR     VAR(&OUTQ) VALUE(%SST(&OUTQQLIB 01 10))            
0081.00              CHGVAR     VAR(&OUTQLIB) VALUE(%SST(&OUTQQLIB 11 10))         
0082.00              IF         COND(%SST(&OUTQLIB 1 1) *EQ '*') THEN(DO)          
0083.00              RTVOBJD    OBJ(&OUTQLIB/&OUTQ) OBJTYPE(*OUTQ) +               
0084.00                           RTNLIB(&OUTQLIB)                                 
0085.00              ENDDO                                                         
0086.00              CHGVAR     VAR(&TOOUTQ) VALUE(%SST(&TOOUTQQLIB 01 10))        
0087.00              CHGVAR     VAR(&TOOUTQLIB) VALUE(%SST(&TOOUTQQLIB 11 10))     
0088.00              IF         COND(&TOOUTQ *NE '*SAME     ') THEN(DO)            
0089.00              CHKOBJ     OBJ(&TOOUTQLIB/&TOOUTQ) OBJTYPE(*OUTQ)             
0090.00              MONMSG     MSGID(CPF9800) EXEC(GOTO CMDLBL(ERROR))            
0091.00              IF         COND((&TOOUTQ *EQ &OUTQ) *AND (&TOOUTQLIB +        
0092.00                           *EQ &OUTQLIB)) THEN(DO)                          
0093.00              CHGVAR     VAR(&MSG) +                                        
0094.00                           VALUE(' 変更後の OUTQ が変更前と同じです。 ')    
0095.00              GOTO       SNDMSG                                             
0096.00              ENDDO                                                           
0097.00              ENDDO                                                           
0098.00                                                                              
0099.00 /*( ユーザー・スペースの作成 )*/                                             
0100.00              CALL       PGM(QUSCRTUS) PARM('QUSLSPL   +                      
0101.00                           QTEMP     ' 'PF        ' 1000 ' ' +                
0102.00                           '*ALL      ' 'QUSLSPL 用ユーザー空間 ' +           
0103.00                           '*YES      ' &APIERR)                              
0104.00              MONMSG     CPF9870                                              
0105.00 /*( 状況メッセージの表示 )*/                                                 
0106.00              CHGJOB     STSMSG(*NORMAL)                                      
0107.00              CHGVAR     VAR(&STSMSG) VALUE(' 印刷待ち行列 ' *CAT +           
0108.00                           &OUTQLIB *TCAT '/' *CAT &OUTQ *TCAT +              
0109.00                           ' を検索中。 ')                                    
0110.00              SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&STSMSG) +       
0111.00                           TOPGMQ(*EXT) MSGTYPE(*STATUS)                      
0112.00 /*( 印刷スプールの一覧 )*/                                                   
0113.00              CALL       PGM(QUSLSPL) PARM('QUSLSPL   QTEMP     ' +           
0114.00                           'SPLF0100' '*ALL      ' &OUTQQLIB +                
0115.00                           '*ALL      ' '*ALL      ' &APIERR)                 
0116.00              IF         COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO)          
0117.00              SNDPGMMSG  +                                                    
0118.00                           MSG('API: QUSLSPL の実行で次のエラーが発生 +       
0119.00                            しました。 ') MSGTYPE(*DIAG)                      
0120.00              GOTO       APIERR                                       
0121.00              ENDDO                                                   
0122.00 /*( リストAPIで作成されたユーザー空間の検索 )*/                   
0123.00      /*( リストデータセクションのオフセットを検索 )*/                
0124.00              CALL       PGM(QUSRTVUS) PARM('QUSLSPL   QTEMP     ' +  
0125.00                           &STRPOS &LENDTA &RCVVAR)                   
0126.00              CHGVAR     VAR(&OFFSET) VALUE(%SST(&RCVVAR 1 4))        
0127.00              CHGVAR     VAR(&NOENTR) VALUE(%SST(&RCVVAR 9 4))        
0128.00              CHGVAR     VAR(&LSTSIZ) VALUE(%SST(&RCVVAR 13 4))       
0129.00                                                                      
0130.00          /*( RCVVAR によって OFFSET,LSTSIZ を受取った )*/            
0131.00              CHGVAR     VAR(&STRPOS) VALUE(&OFFSET)                  
0132.00              CHGVAR     VAR(&DEC08) VALUE(%BIN(&STRPOS))             
0133.00              CHGVAR     VAR(&DEC08) VALUE(&DEC08 + 1)                
0134.00              CHGVAR     VAR(%BIN(&STRPOS)) VALUE(&DEC08)             
0135.00              CHGVAR     VAR(&LENDTA) VALUE(&LSTSIZ)                  
0136.00              CHGVAR     VAR(&ADDLEN) VALUE(%BIN(&LENDTA))            
0137.00              CHGVAR     VAR(&NOENT) VALUE(%BIN(&NOENTR))             
0138.00 NXTRTV:                                                              
0139.00              CALL       PGM(QUSRTVUS) PARM('QUSLSPL   QTEMP     ' +  
0140.00                           &STRPOS &LENDTA &RCVDTA)                   
0141.00              /*( 処理の開始 )*/                                      
0142.00              CHGVAR     VAR(&UPD) VALUE(' ')                         
0143.00              CHGVAR     VAR(&JOBINFO) VALUE(%SST(&RCVDTA 51 16))     
0144.00              CHGVAR     VAR(&SPLINFO) VALUE(%SST(&RCVDTA 67 16))           
0145.00 /*( スプールの属性 )*/                                                     
0146.00              CALL       PGM(QUSRSPLA) PARM(&SPLVAR &SPLLEN +               
0147.00                           'SPLA0100' '*INT                      ' +        
0148.00                           &JOBINFO &SPLINFO '*INT      ' 0 &APIERR)        
0149.00              IF         COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO)        
0150.00              SNDPGMMSG  +                                                  
0151.00                           MSG('API: QUSRSPLA の実行で次のエラーが発生 +    
0152.00                            しました。 ') MSGTYPE(*DIAG)                    
0153.00              GOTO       APIERR                                             
0154.00              ENDDO                                                         
0155.00              CHGVAR     VAR(&JOB) VALUE(%SST(&SPLVAR 41 10))               
0156.00              CHGVAR     VAR(&USER) VALUE(%SST(&SPLVAR 51 10))              
0157.00              CHGVAR     VAR(&JOBNBR) VALUE(%SST(&SPLVAR 61 6))             
0158.00              CHGVAR     VAR(&SPLF) VALUE(%SST(&SPLVAR 67 10))              
0159.00              CHGVAR     VAR(&FLD4) VALUE(%SST(&SPLVAR 77 4))               
0160.00              CHGVAR     VAR(&SPLNBR) VALUE(%BIN(&FLD4))                    
0161.00              CHGVAR     VAR(&STATUS) VALUE(%SST(&SPLVAR 101 10))           
0162.00              /*( OUTQ の変更 )*/                                           
0163.00              IF         COND(&TOOUTQ *NE '*SAME     ') THEN(DO) /* +       
0164.00                           OUTQ の変更  */                                  
0165.00              CHGSPLFA   FILE(&SPLF) JOB(&JOBNBR/&USER/&JOB) +              
0166.00                           SPLNBR(&SPLNBR) OUTQ(&TOOUTQLIB/&TOOUTQ)         
0167.00              CHGVAR     VAR(&UPD) VALUE('*')                               
0168.00              ENDDO      /* OUTQ の変更  */                                
0169.00              /*( STAUS の変更 )*/                                         
0170.00              IF         COND(&STS *NE '*SAME     ') THEN(DO) /* +         
0171.00                           STS の変更  */                                  
0172.00              IF         COND((&STS *EQ '*READY    ') *AND (&STATUS +      
0173.00                           *NE '*READY    ')) THEN(DO)                     
0174.00              RLSSPLF    FILE(&SPLF) JOB(&JOBNBR/&USER/&JOB) +             
0175.00                           SPLNBR(&SPLNBR)                                 
0176.00              CHGVAR     VAR(&UPD) VALUE('*')                              
0177.00              ENDDO                                                        
0178.00              IF         COND((&STS *EQ '*HELD     ') *AND (&STATUS +      
0179.00                           *NE '*HELD     ')) THEN(DO)                     
0180.00              HLDSPLF    FILE(&SPLF) JOB(&JOBNBR/&USER/&JOB) +             
0181.00                           SPLNBR(&SPLNBR)                                 
0182.00              CHGVAR     VAR(&UPD) VALUE('*')                              
0183.00              ENDDO                                                        
0184.00              ENDDO      /* STS の変更  */                                 
0185.00              IF         COND(&UPD *EQ '*') THEN(DO) /*  更新マーク  */    
0186.00              CHGVAR     VAR(&UPDSUR) VALUE(&UPDSUR + 1)                   
0187.00              ENDDO      /*  更新マーク  */                                
0188.00              /*( 処理の終了 )*/                                           
0189.00 PASS:                                                                     
0190.00              IF         COND(&N < &NOENT) THEN(DO)                        
0191.00              CHGVAR     VAR(&N) VALUE(&N + 1)                             
0192.00              CHGVAR     VAR(&DEC08)  VALUE(%BIN(&STRPOS))                 
0193.00              CHGVAR     VAR(&DEC08) VALUE(&DEC08 + &ADDLEN)               
0194.00              CHGVAR     VAR(%BIN(&STRPOS)) VALUE(&DEC08)                  
0195.00              GOTO       NXTRTV                                            
0196.00              ENDDO                                                        
0197.00                                                                           
0198.00              /*( 更新した個数の先行ゼロ消去 )*/                           
0199.00              IF         COND(&UPDSUR > 0) THEN(DO)                        
0200.00              CHGVAR     VAR(&CHAR5) VALUE(&UPDSUR)                        
0201.00  ZERO:       IF         COND(%SST(&CHAR5 1 1) *EQ '0') THEN(DO)           
0202.00              CHGVAR     VAR(&CHAR5) VALUE(%SST(&CHAR5 2 4))               
0203.00              GOTO       ZERO                                              
0204.00              ENDDO                                                        
0205.00              CHGVAR     VAR(&MSG) VALUE(&CHAR5 *TCAT +                    
0206.00                           ' 個のスプール・ファイルを更新しました。 '+     
0207.00                           )                                               
0208.00              ENDDO                                                        
0209.00              ELSE       CMD(DO)                                           
0210.00              CHGVAR     VAR(&MSG) +                                       
0211.00                           VALUE(' 更新されたスプール・ファイルはあり +    
0212.00                            ません。 ')                                    
0213.00              ENDDO                                                        
0214.00              CHGVAR     VAR(&MSGTYPE) VALUE('*DIAG     ')                 
0215.00              GOTO       SNDMSG                                            
0216.00                                                                           
0217.00  APIERR:                                                                  
0218.00              CHGVAR     VAR(&MSGID) VALUE(%SST(&APIERR 9 7))              
0219.00              CHGVAR     VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100))          
0220.00              CHGVAR     VAR(&MSGF) VALUE('QCPFMSG   ')                    
0221.00              CHGVAR     VAR(&MSGFLIB) VALUE('QSYS      ')                 
0222.00              GOTO       SNDMSG                                            
0223.00                                                                           
0224.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +               
0225.00                           MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +     
0226.00                           MSGFLIB(&MSGFLIB)                               
0227.00  SNDMSG:     IF         COND(&MSGID *EQ ' ') THEN(DO)                     
0228.00              SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) +       
0229.00                           TOMSGQ(&TOPGMQ) MSGTYPE(&MSGTYPE)               
0230.00              MONMSG     MSGID(CPF2400) EXEC(RETURN)                       
0231.00              ENDDO                                                        
0232.00              ELSE       CMD(DO)                                           
0233.00              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +              
0234.00                           MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) +               
0235.00                           MSGTYPE(&MSGTYPE)                               
0236.00              MONMSG     MSGID(CPF2400) EXEC(RETURN)                       
0237.00              ENDDO                                                        
0238.00              ENDPGM                                                       
[ コンパイル ]
CRTCLPGM PGM(MYLIB/CHGOUTQFCL) SRCFILE(MYSRCLIB/QCLSRC) AUT(*ALL)
【 解説 】

最初にユーザー・スペース QUSLSPL をライブラリー: QTEMP に次のように
作成する。

0099.00 /*( ユーザー・スペースの作成 )*/                                             
0100.00              CALL       PGM(QUSCRTUS) PARM('QUSLSPL   +                      
0101.00                           QTEMP     ' 'PF        ' 1000 ' ' +                
0102.00                           '*ALL      ' 'QUSLSPL 用ユーザー空間 ' +           
0103.00                           '*YES      ' &APIERR) 

次に指定した OUTQ のスプールの一覧を次のようにしてユーザー・スペースに
出力する。

0112.00 /*( 印刷スプールの一覧 )*/                                                   
0113.00              CALL       PGM(QUSLSPL) PARM('QUSLSPL   QTEMP     ' +           
0114.00                           'SPLF0100' '*ALL      ' &OUTQQLIB +                
0115.00                           '*ALL      ' '*ALL      ' &APIERR) 

API : QUSRTVUS によってユーザー・スペースを LOOP して検索して
各レコード: &RCVDTA を取得する。
&RCVDTA からジョブ属性、スプール属性が取得できるので

API: 
0145.00 /*( スプールの属性 )*/                                                     
0146.00              CALL       PGM(QUSRSPLA) PARM(&SPLVAR &SPLLEN +               
0147.00                           'SPLA0100' '*INT                      ' +        
0148.00                           &JOBINFO &SPLINFO '*INT      ' 0 &APIERR) 

によってスプール属性を取得する。

CHGSPLFA または RLSSPLFA の実行によってスプールの *HLD/*READY を
切替える。
OUTQ の変更の指定があれば CHGSPLFA ... OUTQ(...) によって
OUTQ を変更する。
変更のあったスプールの数だけが最後にメッセージとして報告される。