最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2005.07.03

11.14.複写スプールの作成コマンド(訪問者の方からのフリーソフト)

[ Previous ] [ HOME ] [ Upper ] [ Next ]


 1998/7/4

ここでは、訪問者の方が、送ってくださったスプールコピーのコマンドをご紹介いたします。作者の方からは、フリーソフトで、とのことでしたので、ダウンロードコーナーでも、アップさせていただきます。以下は、その方からのメールをHTMLにそのまま変換したものです。貴重な情報ありがとうございます。また、しっかりした解説や、パネルグループの作成など、完成度の高いコマンドと思います。これからもよろしくお願いします。

b_add.gif (360 バイト) [2000-8-3] 追記:IBM AS/400 Support Line Technical Document : このページの中で、各行の expand.gif (858 バイト)マークをクリックすると、記事が広がります。コマンドのsavfもあるようです。

利用既定


コマンド名

CRTDUPSPL

サイズ 32 KB

ダウンロード

@crtdupspl.lzh

解凍後のファイル名 @crtdupspl.savf

DSPSAVFの結果

 保管されたオブジェクトの表示−保管ファイル             
                                                                                
  保管された ライブラリー. :   @CRTDUPSPL             リリース・レベル  . :   V4R5M0 
  ASP . . . . . . . . :   1                      データの圧縮  . . . :   YES    
  保管ファイル  . . . :   @CRTDUPSPL             表示された オブジェクト :   6      
    ライブラリー  . . :     FTP                  保管された OBJ 数 . :   7      
  レコード  . . . . . :   169                    アクセス・パス  . . :   0      
  保管コマンド  . . . :   SAVLIB                                                
  活動時保管  . . . . :   *NO                                                   
  保管日/時刻  . . . :   04/06/25   12:28:34                                   
                                                                                 
 OPT  オブジェクト           タイプ      属性          所有者           サイズ   データ   
      @CRTDUPSPL         *LIB     PROD          QPGMR            73728   YES    
      CRTDUPINST         *PGM     CLP           QPGMR            40960   YES    
      CRTDUPSPLC         *PGM     CLP           QPGMR            49152   YES    
      CRTDUPSPL          *CMD                   QPGMR             4096   YES    
      AAALIB             *PNLGRP                QPGMR             8192   YES    
      CRTDUPSPLU         *PNLGRP                QPGMR             8192   YES  
      SRC                *FILE    PF            QPGMR            98304   YES    
                                                                                
                                                                                
                                      

 

  • 機能

非公開APIの QSPGETF と QSPPUTF を使用し、スプール・ファイルの 複写を行います。

注 : ライブラリー QTEMP に内部処理用としてファイル ZSPLWRK が 作成されます。

  • 構文およびパラメーター

>>-CRTDUPSPL---FILE(- スプール・ファイル名 -)-------------------------->                               
 >--+------------------------------------------------+---------------->
    |                                                |
    |       +- * --------------------------------+   |
    +--JOB(-+- 番号 / -- USER  名 / -- JOB   名 -+-)-+                          
 >--+-------------------------+--------------------------------------->
    |                         |
    |          +- *LAST -+    |
    +--SPLNBR(-|- *ONLY -|-)--+
               +- 番号 --+
                                                            
 >--+---------------------------------------------------+------------><
    |                                                   |
    |        +- *JOB ------------------------------+    |
    |        | +- *LIBL/ -------+                  |    |
    +--OUTQ(-+-+- LIBRARY 名 / -+- 出力待ち行列名 -+-)--+                           

FILE

複写するスプール・ファイルの名前を指定します。 これは必須パラメーターです。

JOB

複写するスプール・ファイルを作成したジョブの名前を指定します。

指定できる値は次のとおりです。

*

このコマンドを出したジョブが,そのスプール・ファイルを作成したジョブです。(省略時の値)

ジョブ名

スプール・ファイルを作成したジョブの名前を指定してください。

ユーザー名

そのもとでジョブが実行されるユーザー・プロフィールを識別する ユーザー名を指定してください。

番号

システム割当てジョブ番号を指定してください。

SPLNBR

複写するジョブのスプール・ファイルの番号を指定します。

指定できる値は次のとおりです。

*LAST

最高の番号および指定されたファイル名のスプール・ファイルが 使用されます。(省略時の値)

*ONLY

ジョブ内の1つのスプール・ファイルだけが指定されたファイル名をもっています。したがって,スプール・ファイルの番号は不要です。

スプール・ファイル番号

複写する指定されたファイル名のスプール・ファイルの番号を指定してください。

OUTQ

複写されたスプールが入る待ち行列の名前を指定します。

指定できる値は次のとおりです。

*JOB

現行ジョブの出力待ち行列が使用されます。(省略時の値)

出力待ち行列

出力待ち行列の名前を指定します。

指定できるライブラリー値は次の通りです。

*LIBL

ライブラリーリストが使用されます。(省略時の値)

ライブラリー名

ライブラリー名を指定します。

  • 構成オブジェクト

オブジェクト タイプ 属性 原始ファイル
CRTDUPSPL *CMD   ZTOOL/QCMDSRC(CRTDUPSPL)
CRTDUPSPLC *PGM CLP ZTOOL/QCLSRC(CRTDUPSPLC)
CRTDUPSPLU *PNLGRP   ZTOOL/QPNLSRC(CRTDUPSPLU)
  • 使用上の注意

    • どうも常に QSPPUTF から CPI3485 が出るようなので、完全に複写されているかどうかは保証できません。 (V2R3M0)V3R7M0 では出なくなりました。

    • このコマンドではワーク・ファイルとして QTEMP/ZSPLWRK を使用します。もし同名のファイルが存在した場合は CPP の冒頭で削除されます。但しコマンド終了時点では削除されませんので、あとで検査することが可能です。絶対に QSPGETF で作成される様式と違う QTEMP/ZSPLWRK が存在しないことが保証されているなら、このインプリメントを省略することが可能です。 CPP の原始メンバーCRTDUPSPLC の冒頭でこの処理を行っていますので、その部分を削除し再コンパイルして下さい。続けてこのコマンドを実行するときのパフォーマンスの向上になります。

    • 将来 QSPPUTF と QSPGETF がサポートされなくなる可能性もありますので注意が必要です。

  • 技術情報

非公開APIの QSPGETF と QSPPUTF のパラメータは次の通りです。

QSPGETF

1 *CHAR 10 スプール・ファイル名
2 *CHAR 20 データを複写する物理ファイル名とライブラリー名
3 *CHAR 26 スプールを作成した JOB(10), USER(10), NBR(6)
4 *CHAR 2 スプール番号の BIN2
5 *CHAR 10 データを複写する物理ファイルのメンバー名

QSPPUTF

1 *CHAR 20 データが複写された物理ファイル名とライブラリー名
2 *CHAR 20 複写スプールを作成する OUTQ とそのライブラリー名
3 *CHAR 10 データが複写された物理ファイルのメンバー名
  1. 物理ファイルは自動的に作成されます。

  2. JOB, USER, NBR には '*' が使用できます。

  3. スプール番号に X'FFFF' を指定すると *LAST になります。また X'0000' を指定すると *ONLY になります。

  4. メンバー名には *FIRST, *LAST 等は使用できません。正しい *NAME タイプのストリングスが必要です。

  5. このコマンドでは物理ファイルに QTEMP/ZSPLWRK メンバー名にZSPLWRK を CRTDUPSPLC 内で固定で持っています。

  • 補足

  1. 作成される物理ファイルは MAXMBRS = *NOMAXの属性を持っています。別のメンバー名  を付ければ、同じファイルに追加できます。

  2. 作成されるメンバーのテキストには結構役に立つ情報が記載されます。固定長で左からスプール名、スプール番号、作成ジョブ、頁数です。

  3. 作成された物理ファイルはSAV***/RST***はできますが、どういうわけかCPYFやCRTDUPOBJでエラーになります。(V3R7M0の時点で)

Command source (type:CMD

    /*****************************************************************/
    /***  TITLE: 複写スプールの作成               ( CMD:CRTDUPSPL) ***/
    /***  USER : **********   AUTHOR:STDIO.H      CREATE:95/05/24  ***/
    /*****************************************************************/
 CRTDUPSPL:  CMD        PROMPT(' 複写スプールの作成 ')
 FILE:       PARM       KWD(FILE) TYPE(*NAME) LEN(10) MIN(1) +
                          PROMPT(' 複写元スプール・ファイル ')
 JOB:        PARM       KWD(JOB) TYPE(QUAL1) DFT(*) SNGVAL((*)) +
                          PROMPT(' スプール作成ジョブ名 ')
 SPLNBR:     PARM       KWD(SPLNBR) TYPE(*DEC) LEN(6) DFT(*LAST) +
                          RANGE(1 9999) SPCVAL((*LAST -1) (*ONLY +
                          0)) PROMPT(' スプール・ファイル番号 ')
 OUTQ:       PARM       KWD(OUTQ) TYPE(QUAL2) DFT(*JOB) +
                          SNGVAL((*JOB)) FILE(*OUT) +
                          PROMPT(' 複写先出力待ち行列 ')
 QUAL1:      QUAL       TYPE(*NAME) LEN(10)
             QUAL       TYPE(*NAME) LEN(10) PROMPT(' ユーザー ')
             QUAL       TYPE(*CHAR) LEN(6) RANGE(000000 999999) +
                          PROMPT(' 番号 ')
 QUAL2:      QUAL       TYPE(*NAME) LEN(10) MIN(1)
             QUAL       TYPE(*CHAR) LEN(10) DFT(*LIBL) +
                          SPCVAL((*LIBL)) PROMPT(' ライブラリー ')                           

CPP source (type:CLP)

    /*****************************************************************/
    /***  TITLE: コマンド CRTDUPSPL の CPP        ( CLP:CRTDUPSPLC)***/
    /***  USER : **********   AUTHOR:STDIO.H      CREATE:95/05/24  ***/
    /*****************************************************************/
         PGM    PARM(&P#SPLNM &P#JOB &P#SPLNBR &P#OUTQ)
         DCL    &P#SPLNM  *CHAR  10                   /* SPL NAME    */
         DCL    &P#JOB    *CHAR  26                   /* QUAL JOB    */
         DCL    &P#SPLNBR *DEC    6                   /* SPL NBR     */
         DCL    &P#OUTQ   *CHAR  20                   /* QUAL OUTQ   */
         DCL    &WRKFILE  *CHAR  20                   /* QUAL WRKF   */
         DCL    &WRKMBR   *CHAR  10                   /* WRKMBR      */
         DCL    &WRKF     *CHAR  10 'ZSPLWRK'         /* WRKF        */
         DCL    &WRKLIB   *CHAR  10 'QTEMP'           /* WRKF LIB    */
         DCL    &EXIST    *LGL    1 '1'               /* WRKF EXIST? */
         DCL    &SPLNBR   *CHAR   2                   /* BIN2 SPLNBR */
         DCL    &OUTQ     *CHAR  10                   /* JOB OUTQ    */
         DCL    &OUTQLIB  *CHAR  10                   /* JOB OUTQLIB */
         DCL    &PRTDEV   *CHAR  10                   /* JOB PRTDEV  */
         DCL    &ERRORSW  *LGL                        /* STD ERR     */
         DCL    &MSGID    *CHAR   7                   /* STD ERR     */
         DCL    &MSGDTA   *CHAR 100                   /* STD ERR     */
         DCL    &MSGF     *CHAR  10                   /* STD ERR     */
         DCL    &MSGFLIB  *CHAR  10                   /* STD ERR     */
         MONMSG MSGID(CPF0000) EXEC(GOTO STDERR1)     /* STD ERR     */

    /* ワーク・ファイルの削除 */
         CHGVAR  &WRKFILE (&WRKF || &WRKLIB)
         CHGVAR  &WRKMBR   &WRKF
         CHKOBJ  &WRKLIB/&WRKF *FILE
         MONMSG  MSGID(CPF0000) EXEC(CHGVAR &EXIST '0')
         IF (&EXIST)  (DLTF (&WRKLIB/&WRKF))

    /* スプール番号の変換 (DEC6 TO BIN2) */
         CHGVAR  %BIN(&SPLNBR) &P#SPLNBR

    /* OUTQ の処理 */
         IF (%SST(&P#OUTQ 1 10) = '*JOB') DO
             RTVJOBA  OUTQ(&OUTQ) OUTQLIB(&OUTQLIB) PRTDEV(&PRTDEV)
             IF (&OUTQ = '*DEV') DO
                 CHGVAR  &OUTQ    &PRTDEV
                 CHGVAR  &OUTQLIB '*LIBL'
             ENDDO
             CHGVAR  &P#OUTQ (&OUTQ || &OUTQLIB)
         ENDDO
         ELSE DO
             CHGVAR  &OUTQ    %SST(&P#OUTQ  1 10)
             CHGVAR  &OUTQLIB %SST(&P#OUTQ 11 10)
             CHKOBJ  &OUTQLIB/&OUTQ *OUTQ
         ENDDO

    /* スプール・ファイルをワークへ (API:QSPGETF) */
         CALL  QSPGETF (&P#SPLNM &WRKFILE &P#JOB &SPLNBR &WRKMBR)

    /* ワークから出力待ち行列へ (API:QSPPUTF) */
         CALL  QSPPUTF (&WRKFILE &P#OUTQ &WRKMBR)

    /* 完了メッセージ */
         SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                      MSGDTA(' スプール・ファイルの複写が完了し +
                       た。 ') MSGTYPE(*COMP)

 RETURN: RETURN

 /* 標準エラー処理 */
 STDERR1:IF         COND(&ERRORSW) THEN(SNDPGMMSG MSGID(CPF9999) +
                      MSGF(QCPFMSG) MSGTYPE(*ESCAPE))
         CHGVAR     VAR(&ERRORSW) VALUE('1')
 STDERR2:RCVMSG     MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                      MSGF(&MSGF) MSGFLIB(&MSGFLIB)
         IF         COND(&MSGID *EQ '       ') THEN(GOTO CMDLBL(STDERR3))
         SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                      MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
         GOTO       CMDLBL(STDERR2)
 STDERR3:RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                      MSGF(&MSGF) MSGFLIB(&MSGFLIB)
         SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                      MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
         ENDPGM                                                            

Help Panelgroup source (type:PNLGRP)

.*   *****************************************************************
.*   ***  TITLE: CMD   CRTDUPSPL の HLPMDL      (PNLGRP:CRTDUPSPLU)***
.*   ***  USER : **********   AUTHOR:STDIO.H      CREATE:95/05/24  ***
.*   *****************************************************************
:PNLGRP TXTMODE = DBCS.
:IMPORT PNLGRP  ='AAALIB' NAME='LIBL4'.
.*********************************************************************
.* 拡張援助 
.*********************************************************************
:HELP   NAME='CRTDUPSPL/ALL'.
:IMHELP NAME='CRTDUPSPL'.
:IMHELP NAME='CRTDUPSPL/FILE'.
:IMHELP NAME='CRTDUPSPL/JOB'.
:IMHELP NAME='CRTDUPSPL/SPLNBR'.
:IMHELP NAME='CRTDUPSPL/OUTQ'.
:EHELP.
.*********************************************************************
.* 機能説明 
.*********************************************************************
:HELP NAME='CRTDUPSPL'. 複写スプールの作成 (CRTDUPSPL) −操作援助 
:P. 非公開APIの QSPGETF と QSPPUTF を使用し、スプール・ファイルの 
 複写を行います。 
:NT. ライブラリー QTEMP に内部処理用としてファイル ZSPLWRK が作成 
 されます。 :ENT.
:EHELP.
.*********************************************************************
.* パラメータ:FROMFILE 
.*********************************************************************
:HELP NAME='CRTDUPSPL/FILE'.
 複写元スプール・ファイル (FILE) −操作援助 
:XH3. 複写元スプール・ファイル (FILE)
:P. 複写するスプール・ファイルの名前を指定します。 
:P. これは必須パラメーターです。 
:EHELP.
.*********************************************************************
.* パラメータ:JOB 
.*********************************************************************
:HELP NAME='CRTDUPSPL/JOB'.
 ジョブ名 (JOB) −操作援助 
:XH3. ジョブ名 (JOB)
:P. 複写するスプール・ファイルを作成したジョブの名前を指定します。 
:P. 指定できる値は次のとおりです。 
:PARML.
:PT.:PK DEF.*:EPK.
:PD. このコマンドを出したジョブが,そのスプール・ファイルを作成した 
 ジョブです。 
:PT.:PK. ジョブ名 :EPK.
:PD. スプール・ファイルを作成したジョブの名前を指定してください。 
:PT.:PK. ユーザー名 :EPK.
:PD. そのもとでジョブが実行されるユーザー・プロフィールを識別する 
 ユーザー名を指定してください。 
:PT.:PK. 番号 :EPK.
:PD. システム割当てジョブ番号を指定してください。 
:EPARML.
:EHELP.
.*********************************************************************
.* パラメータ:SPLNBR 
.*********************************************************************
:HELP NAME='CRTDUPSPL/SPLNBR'.
 スプール・ファイル番号 (SPLNBR) −操作援助 
:XH3. スプール・ファイル番号 (SPLNBR)
:P. 複写するジョブのスプール・ファイルの番号を指定します。 
:P. 指定できる値は次のとおりです。 
:PARML.
:PT.:PK DEF.*LAST:EPK.
:PD. 最高の番号および指定されたファイル名のスプール・ファイルが使用 
 されます。 
:PT.:PK.*ONLY:EPK.
:PD. ジョブ内の1つのスプール・ファイルだけが指定されたファイル名を 
 もっています。したがって,スプール・ファイルの番号は不要です。 
:PT.:PK. スプール・ファイル番号 :EPK.
:PD. 複写する指定されたファイル名のスプール・ファイルの番号を指定し 
 てください。 
:EPARML.
:EHELP.
.*********************************************************************
.* パラメータ:OUTQ 
.*********************************************************************
:HELP NAME='CRTDUPSPL/OUTQ'.
 複写先出力待ち行列 (OUTQ) −操作援助 
:XH3. 複写先出力待ち行列 (OUTQ)
:P. 複写されたスプールが入る待ち行列の名前を指定します。 
:P. 指定できる値は次のとおりです。 
:PARML.
:PT.:PK DEF.*JOB:EPK.
:PD. 現行ジョブの出力待ち行列が使用されます。 
:PT.:PK. 出力待ち行列 :EPK.
:PD. 出力待ち行列の名前を指定します。 
:EPARML.
:IMHELP NAME='LIBL4'.
:EHELP.
.*********************************************************************
:EPNLGRP.                                                            

Import Panelgroup source (type:PNLGRP)

.*   *****************************************************************
.*   ***  TITLE: ライブラリー説明用モジュール     ( PNLGRP:AAALIB) ***
.*   ***  USER : **********   AUTHOR:STDIO.H      CREATE:94/07/29  ***
.*   *****************************************************************
:PNLGRP TXTMODE = DBCS.
.*********************************************************************
.* ライブラリー指定1 
.*********************************************************************
:HELP NAME='LIBL1'.
:P. 指定できるライブラリー値は次の通りです。 
:PARML.
:PT.:PK DEF. *LIBL:EPK.
:PD. ライブラリーリストが使用されます。 
:PT.:PK. *CURLIB:EPK.
:PD. 現行ライブラリーが使用されます。 
:PT.:PK. ライブラリー名 :EPK.
:PD. ライブラリー名を指定します。 
:EPARML.
:EHELP.
.*********************************************************************
.* ライブラリー指定2 
.*********************************************************************
:HELP NAME='LIBL2'.
:P. 指定できるライブラリー値は次の通りです。 
:PARML.
:PT.:PK DEF. *CURLIB:EPK.
:PD. 現行ライブラリーが使用されます。 
:PT.:PK. ライブラリー名 :EPK.
:PD. ライブラリー名を指定します。 
:EPARML.
:EHELP.
.*********************************************************************
.* ライブラリー指定3 
.*********************************************************************
:HELP NAME='LIBL3'.
:P. 指定できるライブラリー値は次の通りです。 
:PARML.
:PT.:PK DEF. *LIBL:EPK.
:PD. ライブラリーリストが使用されます。 
:PT.:PK. *CURLIB:EPK.
:PD. 現行ライブラリーが使用されます。 
:PT.:PK. *USRLIBL:EPK.
:PD. ジョブのライブラリー・リストのユーザー部分にリストされているラ 
 イブラリーだけが探索されます。 
:PT.:PK. *ALL:EPK.
:PD.QSYS を含むシステム上のすべてのライブラリーが探索されます。 
:PT.:PK. *ALLUSR:EPK.
:PD. すべてのユーザー・ライブラリーが探索されます。 
:PT.:PK. ライブラリー名 :EPK.
:PD. ライブラリー名を指定します。 
:EPARML.
:EHELP.
.*********************************************************************
.* ライブラリー指定4 
.*********************************************************************
:HELP NAME='LIBL4'.
:P. 指定できるライブラリー値は次の通りです。 
:PARML.
:PT.:PK DEF. *LIBL:EPK.
:PD. ライブラリーリストが使用されます。 
:PT.:PK. ライブラリー名 :EPK.
:PD. ライブラリー名を指定します。 
:EPARML.
:EHELP.
.*********************************************************************
:EPNLGRP.                                                            
 

[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送