ID #1115

総称名によるオブジェクト移動

MOVOBJでは、総称名を指定できませんが以下のコマンドを利用すれば可能です。

  /*===================================================================*/
 /* 総称名によるオブジェクト移動                                                      */
  /*===================================================================*/
              CMD        PROMPT('MOVE GENERIC OBJECT')
                         PARM       KWD(OBJ) TYPE(Q1) MIN(1) PROMPT('OBJECT')
  Q1:         QUAL       TYPE(*GENERIC) LEN(10) MIN(1) EXPR(*YES)
              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +
                           SPCVAL((*LIBL) (*CURLIB)) EXPR(*YES) +
                           PROMPT('LIBRARY')

              PARM       KWD(OBJTYPE) TYPE(*CHAR) LEN(7) RSTD(*YES) +
                           VALUES(*ALRTBL *BNDDIR *CHTFMT *CLD *CLS +
                           *CMD *CRQD *CSI *CSPMAP *CSPTBL *DTAARA +
                           *DTAQ *FCT *FILE *FNTRSC *FNTTBL *FORMDF +
                           *FTR *GSS *JOBD *JOBQ *JRN *JRNRCV +
                           *LOCALE *MENU *MODULE *MSGF *MSGQ *M36 +
                           *M36CFG *NODGRP *NODL *OUTQ *OVL *PAGDFN +
                           *PAGSEG *PDG *PGM *PNLGRP *PRDAVL *PRDDFN +
                           *PRDLOD *PSFCFG *QMFORM *QMQRY *QRYDFN +
                           *RCT *SBSD *SCHIDX *SPADCT *SRVPGM *SSND +
                           *SVRSTG *TBL *USRIDX *USRQ *USRSPC +
                           *WSCST) MIN(1) EXPR(*YES) PROMPT('OBJECT +
                           TYPE')

              PARM       KWD(TOLIB) TYPE(*NAME) LEN(10) +
                           SPCVAL((*CURLIB)) MIN(1) EXPR(*YES) +
                           PROMPT('TO LIBRARY')

PGM        PARM(&Q_OBJ &OBJTYPE &TOLIB)

   DCL        VAR(&CURLIB)   TYPE(*CHAR) LEN(10)
   DCL        VAR(&IFSOBJ)   TYPE(*CHAR) LEN(512)
   DCL        VAR(&IFSTODIR) TYPE(*CHAR) LEN(512)
   DCL        VAR(&MSGDTA)   TYPE(*CHAR) LEN(256)
   DCL        VAR(&MSGF)     TYPE(*CHAR) LEN(10)
   DCL        VAR(&MSGFLIB)  TYPE(*CHAR) LEN(10)
   DCL        VAR(&MSGID)    TYPE(*CHAR) LEN(7)
   DCL        VAR(&OBJ)      TYPE(*CHAR) LEN(10)
   DCL        VAR(&OBJLIB)   TYPE(*CHAR) LEN(10)
   DCL        VAR(&OBJTYPE)  TYPE(*CHAR) LEN(7)
   DCL        VAR(&Q_OBJ)    TYPE(*CHAR) LEN(20)
   DCL        VAR(&TOLIB)    TYPE(*CHAR) LEN(10)

   MONMSG     MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR))

   CHGVAR     VAR(&OBJ)    VALUE(%SST(&Q_OBJ 1 10))
   CHGVAR     VAR(&OBJLIB) VALUE(%SST(&Q_OBJ 11 10))

   RTVJOBA    CURLIB(&CURLIB)
   IF         (&CURLIB *EQ '*NONE') THEN(DO)
     CHGVAR     VAR(&CURLIB) VALUE('QGPL')
   ENDDO

   IF         (&OBJLIB *EQ '*CURLIB') THEN(DO)
     CHGVAR     VAR(&OBJLIB) VALUE(&CURLIB)
   ENDDO
   ELSE       CMD(IF COND(&OBJLIB *EQ '*LIBL') THEN(DO))
     RTVOBJD    OBJ(&OBJLIB/&OBJ) OBJTYPE(&OBJTYPE) +
                  RTNLIB(&OBJLIB)
   ENDDO

   IF         (&TOLIB *EQ '*CURLIB') THEN(DO)
     CHGVAR     VAR(&TOLIB) VALUE(&CURLIB)
   ENDDO

   IF         COND(&OBJLIB *EQ &TOLIB) THEN(DO)
     SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('SOURCE +
                  AND TARGET LIBRARIES CANNOT BE THE SAME') +
                  MSGTYPE(*ESCAPE)
   ENDDO

   CHGVAR     VAR(&IFSOBJ) VALUE('/QSYS.LIB/' *CAT &OBJLIB +
                *TCAT '.LIB/' *CAT &OBJ *TCAT '.' *CAT +
                %SST(&OBJTYPE 2 6))
   CHGVAR     VAR(&IFSTODIR) VALUE('/QSYS.LIB/' *CAT +
                &TOLIB *TCAT '.LIB')
   MOV        OBJ(&IFSOBJ) TODIR(&IFSTODIR)

   RCVMSG     MSGTYPE(*LAST) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB)
   MONMSG     MSGID(CPF0000)
   SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                MSGDTA(&MSGDTA) MSGTYPE(*COMP)
   MONMSG     MSGID(CPF0000)

   RETURN

 ERROR:
   RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB)
   MONMSG     MSGID(CPF0000)
   SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
   MONMSG     MSGID(CPF0000)

 ENDPGM


                         MOVE GENERIC OBJECT (MOVGENOBJ)                        
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
 OBJECT . . . . . . . . . . . . . > TEST*          名前,総称*                 
   LIBRARY  . . . . . . . . . . . >   LIB1         名前 , *LIBL, *CURLIB        
 OBJECT TYPE  . . . . . . . . . . > *PGM          *ALRTBL, *BNDDIR, *CHTFMT...  
 TO LIBRARY . . . . . . . . . . . > LIB2           名前 , *CURLIB               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         終り   
 F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取消し    F13= この画面の使用法  
 F24= キーの続き                                                         
   

タグ: -

関連エントリー: -

最終更新: 2011-10-29 09:59
製作者:
改訂: 1.0

Digg it! Share on Facebook このレコードを印刷する 友達に教える PDF ファイルで表示する
Propose a translation for Propose a translation for
この FAQ を評価してください:

評価点数: 0 (0 件の投票)

完全に役に立たない 1 2 3 4 5 最も価値がある

このエントリーにコメントできません。