//BCHJOB JOB(JXYZ) JOBD(NERONI2/NERONI2) OUTQ(QPRINT) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Open source scaricabile da 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: "S65D69DA" */ /* From Library: "NERONI2" */ /* Unload Time: 2014-09-01 15:36 */ /* To File : "JXYZ" */ /* To Library : "NERONI2" */ /* To Text : "Compare physical file member by 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 "JXYZ.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:\JXYZ.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JXYZ.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(JXYZ) 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/JXYZ" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JXYZ) MBR(JXYZ.) JOBQ(QBATCH) */ /********* FINE ISTRUZIONI *********************************************/ /* Crea la libreria. */ MKDIR DIR('/qsys.lib/NERONI2.lib') CHGLIB LIB(NERONI2) TEXT('Utility di Claudio Neroni') /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP NERONI2 QGPL) /* Crea il file sorgente. */ DLTF FILE(NERONI2/JXYZ) CRTSRCPF FILE(NERONI2/JXYZ) RCDLEN(112) + TEXT('Compare physical file member by option. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JXYZ) TOFILE(NERONI2/JXYZ) + TOMBR(JXYZ) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JXYZ) MBR(JXYZ) + SRCTYPE(CMD) + TEXT('Compare physical file member by option. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JXYZ.) TOFILE(NERONI2/JXYZ) + TOMBR(JXYZ.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JXYZ) MBR(JXYZ.) + SRCTYPE(CL) + TEXT('Compare physical file member by option. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JXYZC) TOFILE(NERONI2/JXYZ) + TOMBR(JXYZC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JXYZ) MBR(JXYZC) + SRCTYPE(CLLE) + TEXT('Compare physical file member by option. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JXYZP) TOFILE(NERONI2/JXYZ) + TOMBR(JXYZP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JXYZ) MBR(JXYZP) + SRCTYPE(PNLGRP) + TEXT('Compare physical file member by option. Help') /*---------------------------------------------------------------------*/ //DATA FILE(JXYZ) FILETYPE(*SRC) ENDCHAR('//ENDSRC') CMD PROMPT('Compare phy file mbr by option') PARM KWD(FUNCTION) TYPE(*CHAR) LEN(1) RSTD(*YES) + DFT(Z) VALUES(X Y Z) PROMPT('Funzione + X=New Y=Old Z=Compare') PARM KWD(SRCMBRT) TYPE(*CHAR) LEN(10) + PROMPT('Source Member Type (&S)') PARM KWD(SRCLIB) TYPE(*NAME) LEN(10) + PROMPT('Source Library (&L)') PARM KWD(SRCFILE) TYPE(*NAME) LEN(10) + PROMPT('Source File (&F)') PARM KWD(SRCMBR) TYPE(*NAME) LEN(10) + PROMPT('Source Member (&N)') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JXYZ.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JXYZ.) JOBD(NERONI2/NERONI2) OUTQ(QPRINT) ENDSEV(60) + LOG(4 00 *SECLVL) MSGQ(*USRPRF) CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) DLTPGM PGM(NERONI2/JXYZC) DLTCMD CMD(NERONI2/JXYZ) DLTPNLGRP PNLGRP(NERONI2/JXYZP) CRTBNDCL PGM(NERONI2/JXYZC) SRCFILE(NERONI2/JXYZ) DBGVIEW(*ALL) CRTCMD CMD(NERONI2/JXYZ) PGM(JXYZC) SRCFILE(NERONI2/JXYZ) + HLPPNLGRP(JXYZP) HLPID(CMD) PRDLIB(NERONI2) CRTPNLGRP PNLGRP(NERONI2/JXYZP) SRCFILE(NERONI2/JXYZ) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JXYZC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') PGM PARM(&FUNCTION &S &L &F &N) DCL VAR(&FUNCTION) TYPE(*CHAR) LEN(1) DCL VAR(&S) TYPE(*CHAR) LEN(10) DCL VAR(&L) TYPE(*CHAR) LEN(10) DCL VAR(&F) TYPE(*CHAR) LEN(10) DCL VAR(&N) TYPE(*CHAR) LEN(10) DCL VAR(&X) TYPE(*CHAR) LEN(200) DCL VAR(&Y) TYPE(*CHAR) LEN(200) DCL VAR(&X10) TYPE(*CHAR) LEN(10) DCL VAR(&X90) TYPE(*CHAR) LEN(90) DCL VAR(&XOP) TYPE(*CHAR) LEN(50) DCL VAR(&X30) TYPE(*CHAR) LEN(30) DCL VAR(&Y90) TYPE(*CHAR) LEN(90) DCL VAR(&Y30) TYPE(*CHAR) LEN(30) DCL VAR(&CMD) TYPE(*CHAR) LEN(500) MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO + CMDLBL(ERRORE)) IF COND(&FUNCTION *EQ X) THEN(DO) DLTDTAARA DTAARA(QTEMP/X) MONMSG MSGID(CPF0000 MCH0000) CHGVAR VAR(&X) VALUE(&S *CAT 'NEWFILE(' *TCAT &L + *TCAT '/' *TCAT &F *TCAT ') NEWMBR(' + *TCAT &N *TCAT ')') CHGVAR VAR(%SST(&X 171 30)) VALUE(&L *CAT &F *CAT &N) CRTDTAARA DTAARA(QTEMP/X) TYPE(*CHAR) VALUE(&X) + TEXT('Opzione X') SNDPGMMSG MSG(&X) GOTO CMDLBL(FINE) ENDDO IF COND(&FUNCTION *EQ Y) THEN(DO) DLTDTAARA DTAARA(QTEMP/Y) MONMSG MSGID(CPF0000 MCH0000) CHGVAR VAR(&Y) VALUE('OLDFILE(' *TCAT &L *TCAT '/' + *TCAT &F *TCAT ') OLDMBR(' *TCAT &N *TCAT + ')') CHGVAR VAR(%SST(&Y 171 30)) VALUE(&L *CAT &F *CAT &N) CRTDTAARA DTAARA(QTEMP/Y) TYPE(*CHAR) VALUE(&Y) + TEXT('Opzione Y') SNDPGMMSG MSG(&Y) GOTO CMDLBL(FINE) ENDDO IF COND(&FUNCTION *EQ Z) THEN(DO) RTVDTAARA DTAARA(QTEMP/X) RTNVAR(&X) RTVDTAARA DTAARA(QTEMP/Y) RTNVAR(&Y) CHGVAR VAR(&X10) VALUE(%SST(&X 1 10)) CHGVAR VAR(&X90) VALUE(%SST(&X 11 90)) CHGVAR VAR(&XOP) VALUE('OPTION(*WIDE)') CHGVAR VAR(&Y90) VALUE(%SST(&Y 1 90)) CHGVAR VAR(&X30) VALUE(%SST(&X 171 30)) CHGVAR VAR(&Y30) VALUE(%SST(&Y 171 30)) IF COND(&X30 *EQ &Y30) THEN(DO) SNDPGMMSG MSG('NEW e OLD devono essere sorgenti diversi.') GOTO CMDLBL(FINE) ENDDO IF COND(&X10 *EQ RPG) THEN(CHGVAR VAR(&XOP) + VALUE('OPTION(*WIDE *RPGSRCCOL)')) IF COND(&X10 *EQ RPGLE) THEN(CHGVAR VAR(&XOP) + VALUE('OPTION(*WIDE *RPGLESRCCOL)')) IF COND(&X10 *EQ CBL) THEN(CHGVAR VAR(&XOP) + VALUE('OPTION(*WIDE *CBLSRCCOL)')) CHGVAR VAR(&CMD) VALUE('?CMPPFM' *BCAT &X90 *BCAT + &Y90 *BCAT &XOP) CALL PGM(QCMDEXC) PARM(&CMD 500) MONMSG MSGID(CPF0000 MCH0000) GOTO CMDLBL(FINE) ENDDO ERRORE: SNDPGMMSG MSG('Errore imprevisto.') MONMSG MSGID(CPF0000 MCH0000) FINE: ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JXYZP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') :PNLGRP. .*--------------------------------------------------------------------- :HELP NAME=CMD. :H3.Comando JXYZ :H2.Compare physical file member by option :P.Il comando permette di chiamare la visualizzazione Compare Physical File Member tramite tre opzioni del PDM. :P.:HP3.Modalita' di utilizzo:EHP3. :XMP. L'utility permette di annotare i membri NEW e OLD con le opzioni X e Y del PDM in vista del Compare Phisical File Member chiamato dall'opzione Z. Caricare nelle proprie opzioni PDM le seguenti opzioni. X = JXYZ FUNCTION(X) SRCMBRT(&S) SRCLIB(&L) SRCFILE(&F) SRCMBR(&N) Y = JXYZ FUNCTION(Y) SRCMBRT(&S) SRCLIB(&L) SRCFILE(&F) SRCMBR(&N) Z = JXYZ FUNCTION(Z) Per confrontare due membri dall'elenco membri PDM, nella stessa sessione interattiva. 1) Scegliere l'opzione X sul membro NEW. 2) Scegliere l'opzione Y sul membro OLD. 3) Scegliere l'opzione Z su un membro qualsiasi oppure chiamare il comando da una riga comandi. Le opzioni X e Y possono essere eseguite anche a rovescio e la scelta di un membro, vecchio o nuovo che sia, resta valida nella sessione fino alla sua sostituzione con un'altra scelta. Si possono eseguire le scelte X e Y su elenchi diversi e in ordine indifferente. La scelta Z va eseguita dopo X e Y. Se si vuole, Z può essere eseguita contemporaneamente alle altre o a una sola delle due (X/Y) ma su un membro qualsiasi successivo a quelli scelti con le opzioni X/Y. :EXMP. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/function'. :H3.Funzione (FUNCTION) :P.Funzione da eseguire. :P.Valori permessi: :PARML. :PT.:PK DEF.Z:EPK. :PD.Esegue la comparazione tra i membri sorgente scelti con le opzioni X e Y del PDM. :PT.X :PD.Esegue l'opzione PDM X che permette la scelta del membro NEW da comparare con il membro OLD. :PT.Y :PD.Esegue l'opzione PDM Y che permette la scelta del membro OLD da comparare con il membro NEW. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/srcmbrt'. :H3.Source Member Type (SRCMBRT) :P.Tipo seu del membro sorgente. :P.Nella stesura delle opzioni PDM su un elenco di membri sorgente corrisponde al parametro "&S". :P.Valori permessi: :PARML. :PT.tipo-seu-membro-sorgente :PD.Il valore è obbligatorio se la funzione vale X o Y, vietato se la funzione è Z. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/srclib'. :H3.Source file Library (SRCLIB) :P.Nome della libreria contenente il file sorgente. :P.Nella stesura delle opzioni PDM su un elenco di membri sorgente corrisponde al parametro "&L". :P.Valori permessi: :PARML. :PT.libreria-del-file-sorgente € :PD.Il valore è obbligatorio se la funzione vale X o Y, vietato se la funzione è Z. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/srcfile'. :H3.Source file (SRCFILE) :P.Nome del file sorgente contenente il membro da esaminare. :P.Nella stesura delle opzioni PDM su un elenco di membri sorgente corrisponde al parametro "&F". :P.Valori permessi: :PARML. :PT.nome-file-sorgente € :PD.Il valore è obbligatorio se la funzione vale X o Y, vietato se la funzione è Z. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/srcmbr'. :H3.Source member (SRCMBR) :P.Nome del membro sorgente da esaminare. :P.Nella stesura delle opzioni PDM su un elenco di membri sorgente corrisponde al parametro "&N". :P.Valori permessi: :PARML. :PT.nome-membro-sorgente € :PD.Il valore è obbligatorio se la funzione vale X o Y, vietato se la funzione è Z. :EPARML. :EHELP. .*--------------------------------------------------------------------- :EPNLGRP. //ENDSRC //ENDBCHJOB