//BCHJOB JOB(JLLSAV) 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-06-26 13:55 */ /* To File : "JLLSAV" */ /* To Library : "NERONI2" */ /* To Text : "Library List Save. 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 "JLLSAV.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:\JLLSAV.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JLLSAV.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(JLLSAV) 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/JLLSAV" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JLLSAV) MBR(JLLSAV.) 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/JLLSAV) CRTSRCPF FILE(NERONI2/JLLSAV) RCDLEN(112) + TEXT('Library List Save. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JLLSAV) TOFILE(NERONI2/JLLSAV) + TOMBR(JLLSAV) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JLLSAV) MBR(JLLSAV) + SRCTYPE(CMD) + TEXT('Library List Save. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JLLSAV.) TOFILE(NERONI2/JLLSAV) + TOMBR(JLLSAV.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JLLSAV) MBR(JLLSAV.) + SRCTYPE(CL) + TEXT('Library List Save. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JLLSAVC) TOFILE(NERONI2/JLLSAV) + TOMBR(JLLSAVC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JLLSAV) MBR(JLLSAVC) + SRCTYPE(CLLE) + TEXT('Library List Save. Cpp') /*---------------------------------------------------------------------*/ //DATA FILE(JLLSAV) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Library List Save. Cmd */ /* Claudio Neroni 25/06/2014 Creato. */ CMD PROMPT('Library List Save') PARM KWD(ACTION) TYPE(*CHAR) LEN(4) RSTD(*YES) + DFT(*SAV) VALUES(*SAV *RST) + PROMPT('Action Save/Restore') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JLLSAV.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JLLSAV.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 25-06-2014 Creato. */ /* JLLSAV */ /* Library List Save. CrtJs */ /* Prerequisiti: JRSNMSG */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JLLSAV) DLTPGM PGM(NERONI2/JLLSAVC) /* Crea gli oggetti. */ CRTBNDCL PGM(NERONI2/JLLSAVC) SRCFILE(JLLSAV) DBGVIEW(*ALL) CRTCMD CMD(NERONI2/JLLSAV) PGM(JLLSAVC) SRCFILE(JLLSAV) ALLOW(*ALL) + PRDLIB(NERONI2) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JLLSAVC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Library List Save. Cpp */ /* Claudio Neroni 25-06-2014 Creato. */ /* Salva e ripristina la lista librerie. */ /* Riceve i parametri. */ PGM PARM(&ACTION) /* Riceve l'azione da eseguire. */ /* *SAV = Salva */ /* *RST = Ripristina */ DCL VAR(&ACTION) TYPE(*CHAR) LEN(4) /* Lista librerie recuperata dal job. */ DCL VAR(&USRLIBL) TYPE(*CHAR) LEN(2750) DCL VAR(&D1) TYPE(*CHAR) LEN(2000) DCL VAR(&D2) TYPE(*CHAR) LEN(750) /* Comando da eseguire con QCMDEXC. */ DCL VAR(&CMD) TYPE(*CHAR) LEN(3000) /* Prenotazione del CPF0001. */ DCL VAR(&CPF0001) TYPE(*LGL) /* Intercetta gli errori. */ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERRORE)) /* Se richiesto salvataggio lista librerie. */ IF COND(&ACTION *EQ *SAV) THEN(DO) /* Recupera la lista librerie dal job. */ RTVJOBA USRLIBL(&USRLIBL) /* Crea le aree dati di servizio. */ CRTDTAARA DTAARA(QTEMP/JLLSAVD1) TYPE(*CHAR) LEN(2000) + TEXT('Library List Save. 0001-2000') MONMSG MSGID(CPF0000) CRTDTAARA DTAARA(QTEMP/JLLSAVD2) TYPE(*CHAR) LEN(750) + TEXT('Library List Save. 2001-2750') MONMSG MSGID(CPF0000) /* Scrive la lista librerie sulle aree dati. */ CHGDTAARA DTAARA(QTEMP/JLLSAVD1 *ALL) + VALUE(%SST(&USRLIBL 1 2000)) CHGDTAARA DTAARA(QTEMP/JLLSAVD2 *ALL) + VALUE(%SST(&USRLIBL 2001 750)) /* Manda messaggio di felice esecuzione. */ SNDPGMMSG MSG('Salvata la lista librerie.') + MSGTYPE(*COMP) /* Se richiesto salvataggio lista librerie. */ ENDDO /* Se richiesto ripristino lista librerie. */ IF COND(&ACTION *EQ *RST) THEN(DO) /* Rilegge la lista librerie salvata nelle aree dati. */ RTVDTAARA DTAARA(QTEMP/JLLSAVD1 *ALL) RTNVAR(&D1) RTVDTAARA DTAARA(QTEMP/JLLSAVD2 *ALL) RTNVAR(&D2) /* Compone il comando di sostituzione lista librerie. */ CHGVAR VAR(&CMD) VALUE('CHGLIBL LIBL(' *CAT &D1 + *CAT &D2 *TCAT ')') /* Esegue il comando di sostituzione lista librerie. */ CALL PGM(QCMDEXC) PARM(&CMD 3000) /* Se errore, diagnostica e rilascia. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(DO) SNDPGMMSG MSG('Errore nel ripristino della lista + librerie salvata.') MSGTYPE(*DIAG) GOTO CMDLBL(CPF0001) ENDDO /* Manda messaggio di felice esecuzione. */ SNDPGMMSG MSG('Ripristinata la lista librerie + precedentemente salvata.') MSGTYPE(*COMP) /* Se richiesto ripristino lista librerie. */ ENDDO /* Label di esecuzione delle attivitą finali. */ RCLRSC: /* Riacquisisce le risorse. */ RCLRSC MONMSG MSGID(CPF0000 MCH0000) /* Se richiesto, rilascia il CPF0001. */ IF COND(&CPF0001) THEN(DO) SNDPGMMSG MSGID(CPF0001) MSGF(QCPFMSG) MSGDTA(JLLSAV) + MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000 MCH0000) ENDDO /* Ritorna. */ RETURN /* Label di errore. */ ERRORE: /* Restituisce i messaggi al chiamante, */ /* trasformando eventuali escape in diagnostici. */ JRSNMSG MONMSG MSGID(CPF0000 MCH0000) /* Label di prenotazione del CPF0001. */ CPF0001: /* Prenota il CPF0001. */ CHGVAR VAR(&CPF0001) VALUE('1') MONMSG MSGID(CPF0000 MCH0000) /* Salta alle attivitą finali. */ GOTO CMDLBL(RCLRSC) ENDPGM //ENDSRC //ENDBCHJOB