MOVOBJでは、総称名を指定できませんが以下のコマンドを利用すれば可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
/*===================================================================*/ /* 総称名によるオブジェクト移動 */ /*===================================================================*/ 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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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= キーの続き |