//BCHJOB JOB(JCHG) 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-21 09:30 */ /* To File : "JCHG" */ /* To Library : "NERONI2" */ /* To Text : "Last changed files. 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 "JCHG.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:çJCHG.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JCHG.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(JCHG) 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/JCHG" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JCHG) MBR(JCHG.) 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/JCHG) CRTSRCPF FILE(NERONI2/JCHG) RCDLEN(112) + TEXT('Last changed files. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHG) TOFILE(NERONI2/JCHG) + TOMBR(JCHG) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHG) MBR(JCHG) + SRCTYPE(CMD) + TEXT('Last changed files. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHG.) TOFILE(NERONI2/JCHG) + TOMBR(JCHG.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHG) MBR(JCHG.) + SRCTYPE(CL) + TEXT('Last changed files. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHGC) TOFILE(NERONI2/JCHG) + TOMBR(JCHGC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHG) MBR(JCHGC) + SRCTYPE(CLLE) + TEXT('Last changed files. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHGQ1) TOFILE(NERONI2/JCHG) + TOMBR(JCHGQ1) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHG) MBR(JCHGQ1) + SRCTYPE(QMQRY) + TEXT('Last changed files. Creates totals') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHGQ2) TOFILE(NERONI2/JCHG) + TOMBR(JCHGQ2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHG) MBR(JCHGQ2) + SRCTYPE(QMQRY) + TEXT('Last changed files. View totals') /*---------------------------------------------------------------------*/ //DATA FILE(JCHG) FILETYPE(*SRC) ENDCHAR('//ENDSRC') CMD PROMPT('Last changed files') PARM KWD(LIB) TYPE(*NAME) LEN(10) MIN(1) MAX(1) + PROMPT('Library') PARM KWD(DATE) TYPE(*CHAR) LEN(7) DFT(*CURRENT) + SPCVAL((*CURRENT *)) MAX(1) PROMPT('Date + CYYMMDD or *CURRENT') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHG.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JCHG.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) ENDSEV(60) + LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 16-03-2016 Creato. */ /* JCHG */ /* Last changed files. CrtJs */ /* Prerequisiti: none */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella il file messaggi preesistente. */ /* Cancella i testi d'aiuto preesistenti. */ /* Cancella i logici preesistenti. */ /* Cancella i fisici preesistenti. */ /* Cancella i comandi preesistenti. */ DLTCMD CMD(NERONI2/JCHG) /* Cancella i programmi preesistenti. */ DLTPGM PGM(NERONI2/JCHGC) DLTQMQRY QMQRY(NERONI2/JCHGQ1) DLTQMQRY QMQRY(NERONI2/JCHGQ2) /* Crea i file fisici. */ /* Crea i file logici. */ /* Crea i comandi. */ CRTCMD CMD(NERONI2/JCHG) PGM(JCHGC) SRCFILE(JCHG) + HLPPNLGRP(JCHGP) HLPID(CMD) PRDLIB(NERONI2) /* Duplica i comandi in QGPL. */ CRTPRXCMD CMD(QGPL/JCHG) TGTCMD(NERONI2/JCHG) AUT(*USE) REPLACE(*YES) /* Crea i programmi. */ CRTBNDCL PGM(NERONI2/JCHGC) SRCFILE(JCHG) TGTRLS(*CURRENT) + DBGVIEW(*ALL) CRTQMQRY QMQRY(NERONI2/JCHGQ1) SRCFILE(JCHG) CRTQMQRY QMQRY(NERONI2/JCHGQ2) SRCFILE(JCHG) /* Crea il file messaggi. */ /* Fotografia comandi (xxxA001). */ /* Messaggi comuni a pgm di comandi diversi (xxx0001). */ /* Messaggi nei pgm del Cmd 1 (xxx0101). */ /* Messaggi nei pgm del Cmd 2 (xxx0201). */ /* Messaggi dei Cmd (xxx1001). */ /* Crea i testi d'aiuto. */ //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHGC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') PGM PARM(&LIB &DATE) DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&DATE) TYPE(*CHAR) LEN(7) DCL VAR(&FILE) TYPE(*CHAR) LEN(10) VALUE(JCHG1) DCL VAR(&TOTAL) TYPE(*CHAR) LEN(10) VALUE(JCHG1T) DCL VAR(&C) TYPE(*CHAR) LEN(1) DCL VAR(&YY) TYPE(*CHAR) LEN(2) DCL VAR(&MM) TYPE(*CHAR) LEN(2) DCL VAR(&DD) TYPE(*CHAR) LEN(2) MONMSG MSGID(CPF0000 MCH0000) IF COND(&DATE *EQ '*') THEN(DO) RTVSYSVAL SYSVAL(QCENTURY) RTNVAR(&C) RTVSYSVAL SYSVAL(QYEAR) RTNVAR(&YY) RTVSYSVAL SYSVAL(QMONTH) RTNVAR(&MM) RTVSYSVAL SYSVAL(QDAY) RTNVAR(&DD) CHGVAR VAR(&DATE) VALUE(&C *CAT &YY *CAT &MM *CAT &DD) ENDDO DLTF FILE(QTEMP/&FILE) DLTF FILE(QTEMP/&TOTAL) DSPFD FILE(&LIB/*ALL) TYPE(*MBR) OUTPUT(*OUTFILE) + FILEATR(*PF) OUTFILE(QTEMP/&FILE) STRQMQRY QMQRY(JCHGQ1) OUTPUT(*OUTFILE) + OUTFILE(QTEMP/&TOTAL) SETVAR((INPUT &FILE)) STRQMQRY QMQRY(JCHGQ2) SETVAR((INPUT &TOTAL) (DATE + &DATE)) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHGQ1) FILETYPE(*SRC) ENDCHAR('//ENDSRC') SELECT ALL MBSYSN, MBLIB, MBFILE, MBTXT, MAX(MBCHGC CONCAT MBCHGD CONCAT MBCHGT) FROM QTEMP/&INPUT T01 WHERE MBSEU2 <> ' ' GROUP BY MBSYSN, MBLIB, MBFILE, MBTXT ORDER BY MBSYSN ASC, MBLIB ASC, MBFILE ASC, MBTXT ASC //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHGQ2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') SELECT ALL SEL1, MBSYSN, MBLIB, MBFILE, MBTXT FROM QTEMP/&INPUT T01 WHERE SEL1 >= &DATE CONCAT '000000' ORDER BY SEL1 DESC //ENDSRC //ENDBCHJOB