//BCHJOB JOB(JPDMOPT) JOBD(NERONI2/NERONI2) OUTQ(QPRINT) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Open source from www.neroni.it */ /* LA JOB DESCRIPTION "NERONI2/NERONI2" DEVE PREESISTERE. PUO' ESSERE */ /* IDENTICA A QBATCH E PUO' ESSERE SOSTITUITA DA QBATCH O SIMILE. */ /* From System: "DEV720" */ /* From Library: "NERONI2" */ /* Unload Time: 2016-03-22 17:00 */ /* To File : "JPDMOPT" */ /* To Library : "NERONI2" */ /* To Text : "Pdm Option. Src" */ /********* INIZIO ISTRUZIONI *******************************************/ /* LE SUCCESSIVE ISTRUZIONI PERMETTONO DI RICARICARE I SORGENTI. */ /* 1) DA UN VIDEO COMANDI DELL'AS400 RICEVENTE */ /* CREARE UN FILE SORGENTE DI LUNGHEZZA RECORD 112: */ /* CRTSRCPF FILE(NERONI2/STRINGHE) RCDLEN(112) */ /* 2) SPOSTARE IL FILE "JPDMOPT.txt" NELL'INDIRIZZARIO */ /* DI UN PC CONNESSO IN RETE CON L'AS400 RICEVENTE */ /* (AD ES.: "c:ç"). */ /* 3) DAL VIDEO COMANDI DEL PC CHIAMARE FTP: */ /* ftp nomeas400 */ /* 4) DIGITARE UTENTE E PASSWORD. */ /* 5) ESEGUIRE IL COMANDO DI COPIA DA FILE PC A MEMBRO AS400: */ /* put "c:çJPDMOPT.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JPDMOPT.mbr" */ /* 6) ABBANDONARE FTP: */ /* quit */ /* 7) DA UN VIDEO COMANDI DELL'AS400 RICEVENTE */ /* ESEGUIRE LA STRINGA COPIATA NEL MEMBRO SORGENTE: */ /* SBMDBJOB FILE(NERONI2/STRINGHE) MBR(JPDMOPT) JOBQ(QBATCH) */ /* LE SUCCESSIVE ISTRUZIONI PERMETTONO DI CREARE L'UTILITY. */ /* 8) DA UN VIDEO COMANDI DELL'AS400 RICEVENTE */ /* ESEGUIRE LA STRINGA O LE STRINGHE SORGENTE DI TIPO SEU "CL" */ /* (IL CUI NOME TERMINA SEMPRE CON ".") */ /* PRESENTI NEL FILE RICARICATO "NERONI2/JPDMOPT" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JPDMOPT) MBR(JPDMOPT.) JOBQ(QBATCH) */ /********* FINE ISTRUZIONI *********************************************/ /* Crea la libreria. */ MKDIR DIR('/qsys.lib/NERONI2.lib') CHGLIB LIB(NERONI2) TEXT('Claudio Neroni Utility') /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP NERONI2 QGPL) /* Crea il file sorgente. */ DLTF FILE(NERONI2/JPDMOPT) CRTSRCPF FILE(NERONI2/JPDMOPT) RCDLEN(112) + TEXT('Pdm Option. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMDFTR) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMDFTR) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMDFTR) + SRCTYPE(RPGLE) + TEXT('Pdm Default. Retrieve Default. SfrugugliaMaNonVa') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMDFT1) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMDFT1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMDFT1) + SRCTYPE(CLLE) + TEXT('Pdm Default. Retrieve Default. Dump&Msg') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMDFT2) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMDFT2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMDFT2) + SRCTYPE(RPGLE) + TEXT('Pdm Default. Retrieve Default. Read') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPT) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPT) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPT) + SRCTYPE(CMD) + TEXT('Pdm Option. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPT.) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPT.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPT.) + SRCTYPE(CL) + TEXT('Pdm Option. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPT.T) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPT.T) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPT.T) + SRCTYPE(CL) + TEXT('Pdm Option. TestStream') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPTC) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPTC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPTC) + SRCTYPE(CLLE) + TEXT('Pdm Option. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPTD) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPTD) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPTD) + SRCTYPE(RPGLE) + TEXT('Pdm Option. Write') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPTP) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPTP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPTP) + SRCTYPE(PNLGRP) + TEXT('Pdm Option. Help VUOTO') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPTRGC) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPTRGC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPTRGC) + SRCTYPE(CLLE) + TEXT('Pdm Option. Reorganize. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPTRGP) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPTRGP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPTRGP) + SRCTYPE(PNLGRP) + TEXT('Pdm Option. Reorganize. Help VUOTO') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPTRGZ) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPTRGZ) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPTRGZ) + SRCTYPE(CMD) + TEXT('Pdm Option. Reorganize. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JPDMOPT2) TOFILE(NERONI2/JPDMOPT) + TOMBR(JPDMOPT2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JPDMOPT) MBR(JPDMOPT2) + SRCTYPE(CMD) + TEXT('Pdm Option. CmdNoStr') /*---------------------------------------------------------------------*/ //DATA FILE(JPDMDFTR) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * http://permalink.gmane.org/gmane.comp.lang.as400.rpg/5903 * Carsten Flensburg H DftActGrp( *No ) ** D pPrf s * ProcPtr D Ctx s 20a Inz D DtaElm c 4 ** D Arg Ds 96 D Key 33a D Key1 1a Inz( x'02' ) D Overlay( Key: 1 ) D Key2 10a Inz( 'QUOPDM ' ) D Overlay( Key: 2 ) D Key3 10a Inz( 'SERVICES ' ) D Overlay( Key: 12 ) D Key4 10a Inz( 'PROFINFO ' ) D Overlay( Key: 22 ) D Key5 5i 0 Inz( 0 ) D Overlay( Key: 32 ) D 15a D Data 48a ** D Opt Ds 14 D RuleOption 5i 0 Inz( 1 ) D ArgLength 5i 0 Inz( %Len( Key )) D ArgOffset 5i 0 Inz( 0 ) D OccurCount 5i 0 Inz( 1 ) D ReturnCount 5i 0 Inz( 0 ) D EntryLength 5i 0 Inz( 0 ) D EntryOffset 5i 0 Inz( 0 ) ** D PdmInfo Ds D 16a D PiSrcLib 10a D PiRplObj 1a D PiCmpBch 1a D PiJobD 10a D PiJobLib 10a D PiChgTyp 1a D PiOptF 10a D PiOptLib 10a D PiOptMbr 10a D PiFulScnMod 1a D PiRunBch 1a D PiLibPdmLib 10a D PiObjPdmLib 10a D PiObjPdm 10a D PiObjTyp 10a D PiObjAtr 10a D PiMbrPdmLib 10a D PiMbrPdmF 10a D PiMbrPdmMbr 10a D PiMbrPdmTyp 10a D PiFlgx 1a D PiLibx 10a D PiObjx 10a ** D PiData 48a Dim( DtaElm ) Overlay( PdmInfo ) ** D Rslvsp2 Pr ExtProc( '_RSLVSP2' ) D * ProcPtr D 34a Const ** D Get Pr ExtProc( '_FNDINXEN' ) D * Value D * ProcPtr D * Value D * Value ** C *Entry Plist C Parm User 10 ** C CallP Rslvsp2( pPrf C : X'0EC4' + User + Ctx + x'0000' C ) ** C For Key5 = 0 to DtaElm - 1 ** C CallP Get( %Addr( Arg ) C : pPrf C : %Addr( Opt ) C : %Addr( Arg ) C ) ** C Eval PiData( Key5 + 1 ) = Data ** C EndFor ** C Eval *InLr = *On ** //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMDFT1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* http://t4388.systems-as400-security.securitytalk.info/ */ /* retrieve-pdm-default-options-f18-using-dmpsysobj-t4388.html */ /* Pdm Option. Retrieve Default. Cpp */ /* Claudio Neroni 10-07-2015 Recuperato da link */ /* Dumpa l'utente e chiama lettura dump per recuperare default PDM. */ /* CL program RTVPDMDFTP */ PGM PARM(&USER) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&OBJLIB) TYPE(*CHAR) LEN(10) DCL VAR(&JOBD) TYPE(*CHAR) LEN(10) DCL VAR(&JOBDL) TYPE(*CHAR) LEN(10) DCL VAR(&FILE) TYPE(*CHAR) LEN(10) DCL VAR(&FILEL) TYPE(*CHAR) LEN(10) DCL VAR(&MBR) TYPE(*CHAR) LEN(10) DLTF FILE(QTEMP/PDMDUMP) MONMSG MSGID(CPF0000) DLTDTAARA DTAARA(QTEMP/$PDMDFTSDA) MONMSG MSGID(CPF0000) OVRPRTF FILE(QPSRVDMP) HOLD(*YES) DMPSYSOBJ OBJ(&USER) CONTEXT(QSYS) TYPE(0E) SUBTYPE(C4) CRTPF FILE(QTEMP/PDMDUMP) RCDLEN(132) MONMSG MSGID(CPF7302) CPYSPLF FILE(QPSRVDMP) TOFILE(QTEMP/PDMDUMP) JOB(*) + SPLNBR(*LAST) DLTOVR FILE(QPSRVDMP) DLTSPLF FILE(QPSRVDMP) JOB(*) SPLNBR(*LAST) CRTDTAARA DTAARA(QTEMP/$PDMDFTSDA) TYPE(*CHAR) + LEN(256) TEXT('PDM Defaults for current + user') MONMSG MSGID(CPF1023) CALL PGM(JPDMDFT2) PARM(&USER &OBJLIB &JOBD + &JOBDL &FILE &FILEL &MBR) SNDPGMMSG MSG('User:' *CAT &USER *CAT ' ObjLib:' *CAT + &OBJLIB *CAT ' JobD:' *CAT &JOBD *CAT ' + JobDLib:' *CAT &JOBDL *CAT ' File:' *CAT + &FILE *CAT ' FileLib:' *CAT &FILEL *CAT ' + Mbr:' *CAT &MBR) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMDFT2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') FPDMDUMP iP f 132 disk IPDMDUMP no 01 I 1 132 dat I 87 98 pdm I 88 92 f088092 I 88 97 f088097 I 93 102 f093102 I 100 109 f100109 I 110 119 f110119 I 105 114 f105114 I 115 119 f115119 I 122 124 f122124 C do C if f122124 = 'PAG' C leave C endif C if pdm = '* QUOPDM ' C add 1 cntQUOPDM 7 0 C endif C IF cntQUOPDM >= 3 C add 1 cnt 7 0 C if cnt=3 C eval OBJLIB = f088097 C eval JOBD = f100109 C eval JOBDL = f110119 C endif C if cnt=6 C eval FILE = f105114 C eval FILEL = f115119 C endif C if cnt=7 C move f088092 FILEL C eval MBR = f093102 C endif C endif C enddo C *inzsr begsr C *entry plist C parm user 10 C parm OBJLIB 10 C parm JOBD 10 C parm JOBDL 10 C parm FILE 10 C parm FILEL 10 C parm MBR 10 C endsr //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPT) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Pdm Option. Cmd */ /* Claudio Neroni 22-06-2015 Creato. */ CMD PROMPT('Pdm Option') PARM KWD(OPT) TYPE(*CHAR) LEN(2) MIN(1) + PROMPT('Option Key') PARM KWD(CMD) TYPE(*CMDSTR) LEN(250) MIN(1) + PROMPT('Command String for Option') PARM KWD(OPTFILE) TYPE(OPTFILE) PROMPT('Option + File') OPTFILE: QUAL TYPE(*NAME) DFT(QAUOOPT) QUAL TYPE(*NAME) DFT(*USER) SPCVAL((*USER) + (*LIBL)) PROMPT('library') PARM KWD(OPTMBR) TYPE(*NAME) DFT(*FIRST) + SPCVAL((*FIRST) (*LIBL)) PROMPT('Option + Member') PARM KWD(RPLCHAR) TYPE(*CHAR) LEN(1) RSTD(*YES) + DFT(*NONE) VALUES(# $ §) SPCVAL((*NONE + *)) PROMPT('Char to be replace with "&"') PARM KWD(PMTRQS) TYPE(*CHAR) LEN(4) RSTD(*YES) + DFT(*NO) VALUES(*NO *YES) PROMPT('Prompt + Requested') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPT.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JPDMOPT.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 22-06-2015 Creato. */ /* JPDMOPT */ /* Pdm Option. CrtJs */ /* Prerequisiti: nessuno */ jmy /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella il file messaggi preesistente. */ DLTMSGF MSGF(NERONI2/JPDMOPT) /* Cancella i testi d'aiuto preesistenti. */ DLTPNLGRP PNLGRP(NERONI2/JPDMOPTP) DLTPNLGRP PNLGRP(NERONI2/JPDMOPTRGP) /* Cancella i logici preesistenti. */ /* Cancella i fisici preesistenti. */ /* Cancella i comandi preesistenti. */ DLTCMD CMD(NERONI2/JPDMOPT) DLTCMD CMD(NERONI2/JPDMOPT2) DLTCMD CMD(NERONI2/JPDMOPTRGZ) /* Cancella i programmi preesistenti. */ DLTPGM PGM(NERONI2/JPDMOPTC) DLTPGM PGM(NERONI2/JPDMOPTD) /*DFT*/ DLTPGM PGM(NERONI2/JPDMDFTR) DLTPGM PGM(NERONI2/JPDMDFT1) DLTPGM PGM(NERONI2/JPDMDFT2) /* Crea i file fisici. */ /* Crea i file logici. */ /* Crea i comandi. */ CRTCMD CMD(NERONI2/JPDMOPT) PGM(JPDMOPTC) SRCFILE(JPDMOPT) + HLPPNLGRP(JPDMOPTP) HLPID(CMD) PRDLIB(NERONI2) CRTCMD CMD(NERONI2/JPDMOPT2) PGM(JPDMOPTC) SRCFILE(JPDMOPT) + HLPPNLGRP(JPDMOPTP) HLPID(CMD) PRDLIB(NERONI2) CRTCMD CMD(NERONI2/JPDMOPTRGZ) PGM(JPDMOPTRGC) SRCFILE(JPDMOPT) + HLPPNLGRP(JPDMOPTRG) HLPID(CMD) PRDLIB(NERONI2) /* Duplica i comandi in QGPL. */ CRTPRXCMD CMD(QGPL/JPDMOPT) TGTCMD(NERONI2/JPDMOPT) AUT(*USE) + REPLACE(*YES) CRTPRXCMD CMD(QGPL/JPDMOPT2) TGTCMD(NERONI2/JPDMOPT2) AUT(*USE) + REPLACE(*YES) CRTPRXCMD CMD(QGPL/JPDMOPTRGZ) TGTCMD(NERONI2/JPDMOPTRGZ) AUT(*USE) + REPLACE(*YES) /* Crea i programmi. */ CRTBNDCL PGM(NERONI2/JPDMOPTC) SRCFILE(JPDMOPT) TGTRLS(*CURRENT) + DBGVIEW(*ALL) CRTBNDCL PGM(NERONI2/JPDMOPTRGC) SRCFILE(JPDMOPT) TGTRLS(*CURRENT) + DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JPDMOPTD) SRCFILE(JPDMOPT) DBGVIEW(*ALL) + TGTRLS(*CURRENT) /*DFT*/ CRTBNDCL PGM(NERONI2/JPDMDFT1) SRCFILE(JPDMOPT) TGTRLS(*CURRENT) + DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JPDMDFT2) SRCFILE(JPDMOPT) DBGVIEW(*ALL) + TGTRLS(*CURRENT) CRTBNDRPG PGM(NERONI2/JPDMDFTR) SRCFILE(JPDMOPT) DBGVIEW(*ALL) + TGTRLS(*CURRENT) /* Crea il file messaggi. */ CRTMSGF MSGF(NERONI2/JPDMOPT) TEXT('Pdm Option. Msgf') /* Fotografia comandi (xxxA001). */ /* Messaggi comuni a pgm di comandi diversi (xxx0001). */ /* Messaggi nei pgm del Cmd 1 (xxx0101). */ ADDMSGD MSGID(JPO0101) MSGF(NERONI2/JPDMOPT) MSG('Esito: &1') + FMT((*CHAR 20)) /* Messaggi nei pgm del Cmd 2 (xxx0201). */ ADDMSGD MSGID(JPO0201) MSGF(NERONI2/JPDMOPT) MSG('Opzioni PDM + riorganizzate.') /* Messaggi dei Cmd (xxx1001). */ /* Crea i testi d'aiuto. */ CRTPNLGRP PNLGRP(NERONI2/JPDMOPTP) SRCFILE(JPDMOPT) CRTPNLGRP PNLGRP(NERONI2/JPDMOPTRGP) SRCFILE(JPDMOPT) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPT.T) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JPDMOPT.T) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) JPDMOPT2 OPT(Z9) CMD('? JSRCMAN FROMSRCF(&L/&F) FROMMBR(&N) + TOSRCF(&L/&F) TOMBR(&N2)') OPTFILE(*USER/QAUOOPT) + OPTMBR(*FIRST) JPDMOPT2 OPT(Z8) CMD('? CMPPFM NEWFILE(&L/&F) NEWMBR(&N2) + OLDFILE(&L/&F) OLDMBR(&N) OPTION(*WIDE *&SSRCCOL)') //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPTC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Pdm Option. Cpp */ /* Claudio Neroni 22-06-2015 Creato. */ /* Scrive l'opzione pdm nel file delle opzioni pdm. */ PGM PARM(&OPT &CMD &OPTFILE &OPTMBR &RPLCHAR + &PMTRQS) DCL VAR(&OPT) TYPE(*CHAR) LEN(2) DCL VAR(&CMD) TYPE(*CHAR) LEN(250) DCL VAR(&OPTFILE) TYPE(*CHAR) LEN(20) DCL VAR(&OPTMBR) TYPE(*CHAR) LEN(10) DCL VAR(&RPLCHAR) TYPE(*CHAR) LEN(1) DCL VAR(&PMTRQS) TYPE(*CHAR) LEN(4) DCL VAR(&OPTFILEF) TYPE(*CHAR) LEN(10) DCL VAR(&OPTFILEL) TYPE(*CHAR) LEN(10) DCL VAR(&ESITO) TYPE(*CHAR) LEN(20) CHGVAR VAR(&OPTFILEF) VALUE(%SST(&OPTFILE 1 10)) CHGVAR VAR(&OPTFILEL) VALUE(%SST(&OPTFILE 11 10)) IF COND(&OPTFILEL *EQ *USER) THEN(RTVJOBA + CURUSER(&OPTFILEL)) CHKOBJ OBJ(&OPTFILEL/&OPTFILEF) OBJTYPE(*FILE) + MBR(&OPTMBR) OVRDBF FILE(QAUOOPT) TOFILE(&OPTFILEL/&OPTFILEF) + MBR(&OPTMBR) CALL PGM(JPDMOPTD) PARM(&OPT &CMD &RPLCHAR + &PMTRQS &ESITO) DLTOVR FILE(QAUOOPT) SNDPGMMSG MSGID(JPO0101) MSGF(NERONI2/JPDMOPT) + MSGDTA(&ESITO) MSGTYPE(*COMP) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPTD) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Pdm Option. Write * Claudio Neroni 22-06-2015 Creato. * Scrive l'opzione pdm nel file delle opzioni pdm. Fqauoopt if a e k disk C *entry plist C parm ppopt 2 I Option C parm ppcmd 250 I String Command C parm pprpl 1 I Char to be replace C parm pppmt 4 I Prompt requested C parm ppesito 20 O Esito C seton lr C clear ppesito C dow 1=1 C read QPDMOPT C if %eof C leave C endif C if option = ppopt C eval ppesito = ppopt + ' esiste gia''' C endif C enddo C if ppesito = *blank C eval option = ppopt C eval command = ppcmd C if pppmt='*YES' C eval command = '? ' + command C endif C if pprpl <> '*' C z-add 1 xx 3 0 C dow 1=1 C eval xx=%scan(pprpl:command:xx) C if xx=*zero C leave C endif C eval %subst(command:xx:1)='&' C enddo C endif C write QPDMOPT C eval ppesito = ppopt + ' aggiunto' C endif //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPTP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPTRGC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Pdm Option. Reorganize. Cpp */ /* Claudio Neroni 09-07-2015 Creato. */ /* Riorganizza il file delle opzioni pdm. */ PGM PARM(&OPTFILE &OPTMBR) DCL VAR(&OPTFILE) TYPE(*CHAR) LEN(20) DCL VAR(&OPTMBR) TYPE(*CHAR) LEN(10) DCL VAR(&OPTFILEF) TYPE(*CHAR) LEN(10) DCL VAR(&OPTFILEL) TYPE(*CHAR) LEN(10) CHGVAR VAR(&OPTFILEF) VALUE(%SST(&OPTFILE 1 10)) CHGVAR VAR(&OPTFILEL) VALUE(%SST(&OPTFILE 11 10)) IF COND(&OPTFILEL *EQ *USER) THEN(RTVJOBA + CURUSER(&OPTFILEL)) CHKOBJ OBJ(&OPTFILEL/&OPTFILEF) OBJTYPE(*FILE) + MBR(&OPTMBR) OVRDBF FILE(QAUOOPT) TOFILE(&OPTFILEL/&OPTFILEF) + MBR(&OPTMBR) SHARE(*YES) OPNQRYF FILE((QAUOOPT)) KEYFLD((OPTION)) CPYFRMQRYF FROMOPNID(QAUOOPT) TOFILE(QTEMP/JPDMOPTRGT) + MBROPT(*REPLACE) CRTFILE(*YES) CLOF OPNID(QAUOOPT) DLTOVR FILE(QAUOOPT) CPYF FROMFILE(QTEMP/JPDMOPTRGT) + TOFILE(&OPTFILEL/&OPTFILEF) + TOMBR(&OPTMBR) MBROPT(*REPLACE) FMTOPT(*MAP) SNDPGMMSG MSGID(JPO0201) MSGF(NERONI2/JPDMOPT) + MSGTYPE(*COMP) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPTRGP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPTRGZ) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Pdm Option. CmdReorganize */ /* Claudio Neroni 22-06-2015 Creato. */ CMD PROMPT('Pdm Option Reorganize') PARM KWD(OPTFILE) TYPE(OPTFILE) PROMPT('Option + File') OPTFILE: QUAL TYPE(*NAME) DFT(QAUOOPT) QUAL TYPE(*NAME) DFT(*USER) SPCVAL((*USER) + (*LIBL)) PROMPT('library') PARM KWD(OPTMBR) TYPE(*NAME) DFT(*FIRST) + SPCVAL((*FIRST) (*LIBL)) PROMPT('Option + Member') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JPDMOPT2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Pdm Option. Cmd */ /* Claudio Neroni 22-06-2015 Creato. */ CMD PROMPT('Pdm Option') PARM KWD(OPT) TYPE(*CHAR) LEN(2) MIN(1) + PROMPT('Option Key') PARM KWD(CMD) TYPE(*CHAR) LEN(250) MIN(1) + PROMPT('Command String for Option') PARM KWD(OPTFILE) TYPE(OPTFILE) PROMPT('Option + File') OPTFILE: QUAL TYPE(*NAME) DFT(QAUOOPT) QUAL TYPE(*NAME) DFT(*USER) SPCVAL((*USER) + (*LIBL)) PROMPT('library') PARM KWD(OPTMBR) TYPE(*NAME) DFT(*FIRST) + SPCVAL((*FIRST) (*LIBL)) PROMPT('Option + Member') PARM KWD(RPLCHAR) TYPE(*CHAR) LEN(1) RSTD(*YES) + DFT(*NONE) VALUES(# $ §) SPCVAL((*NONE + *)) PROMPT('Char to be replace with "&"') PARM KWD(PMTRQS) TYPE(*CHAR) LEN(4) RSTD(*YES) + DFT(*NO) VALUES(*NO *YES) PROMPT('Prompt + Requested') //ENDSRC //ENDBCHJOB