//BCHJOB JOB(JCHKHTM) 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: "S65D69DA" */ /* From Library: "NERONI2" */ /* Unload Time: 2016-03-10 15:08 */ /* To File : "JCHKHTM" */ /* To Library : "NERONI2" */ /* To Text : "Check Htm. 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 "JCHKHTM.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:\JCHKHTM.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JCHKHTM.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(JCHKHTM) 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/JCHKHTM" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JCHKHTM) MBR(JCHKHTM.) 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/JCHKHTM) CRTSRCPF FILE(NERONI2/JCHKHTM) RCDLEN(112) + TEXT('Check Htm. Src.') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKHTM) TOFILE(NERONI2/JCHKHTM) + TOMBR(JCHKHTM) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKHTM) MBR(JCHKHTM) + SRCTYPE(CMD) + TEXT('Check Htm. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKHTM.) TOFILE(NERONI2/JCHKHTM) + TOMBR(JCHKHTM.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKHTM) MBR(JCHKHTM.) + SRCTYPE(CL) + TEXT('Check Htm. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKHTMC) TOFILE(NERONI2/JCHKHTM) + TOMBR(JCHKHTMC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKHTM) MBR(JCHKHTMC) + SRCTYPE(CLLE) + TEXT('Check Htm. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKHTMI) TOFILE(NERONI2/JCHKHTM) + TOMBR(JCHKHTMI) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKHTM) MBR(JCHKHTMI) + SRCTYPE(CMD) + TEXT('Check Htm. CmdInter') /*---------------------------------------------------------------------*/ //DATA FILE(JCHKHTM) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Check Htm. Cmd */ /* Claudio Neroni 14-09-2014 Creato. */ /* Controlla esistenza PGM e HTML omonimo. */ CMD PROMPT('Check Htm') PARM KWD(PGM ) TYPE(*NAME) LEN(10) MIN(1) + PROMPT('Program name') PARM KWD(LIB) TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL)) PROMPT('Library') PARM KWD(TXT) TYPE(*CHAR) LEN(50) RTNVAL(*YES) + PROMPT('Program Text Var 50') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHKHTM.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JCHKHTM.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 14-09-2014 Creato. */ /* JCHKHTM */ /* Check Htm. */ /* Prerequisiti: nessuno */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JCHKHTM) DLTPNLGRP PNLGRP(NERONI2/JCHKHTMP) DLTPGM PGM(NERONI2/JCHKHTMC) /* Crea gli oggetti. */ CRTBNDCL PGM(NERONI2/JCHKHTMC) SRCFILE(JCHKHTM) DBGVIEW(*ALL) CRTPNLGRP PNLGRP(NERONI2/JCHKHTMP) SRCFILE(JCHKHTM) CRTCMD CMD(NERONI2/JCHKHTM) PGM(JCHKHTMC) SRCFILE(JCHKHTM) + ALLOW(*BPGM *IPGM *BMOD *IMOD) HLPPNLGRP(JCHKHTMP) + HLPID(CMD) PRDLIB(NERONI2) CRTCMD CMD(NERONI2/JCHKHTMI) PGM(JCHKHTMC) SRCFILE(JCHKHTM) + ALLOW(*ALL) HLPPNLGRP(JCHKHTMP) HLPID(CMD) PRDLIB(NERONI2) /* Duplica i comandi in QGPL. */ CRTPRXCMD CMD(QGPL/JCHKHTM) TGTCMD(NERONI2/JCHKHTM) AUT(*USE) + REPLACE(*YES) CRTPRXCMD CMD(QGPL/JCHKHTMI) TGTCMD(NERONI2/JCHKHTMI) AUT(*USE) + REPLACE(*YES) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHKHTMC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Check Htm. Cpp */ /* Claudio Neroni 14-09-2014 Creato. */ /* Controlla esistenza PGM e HTML omonimo. */ /* Riceve Programma e Libreria. */ /* Se esistono il programma e il video HTM corrispondente, */ /* restituisce il testo del programma o il testo di errore. */ /* Se non esiste uno dei due, restituisce errore. */ /* Serve a testare che un programma possieda un omonimo file HTML */ /* in un indirizzario omonimo della libreria del programma */ /* opportunamente annidato nell'IFS. */ PGM PARM(&PGM &LIB &TXT) /* Riceve Nome programma. */ DCL VAR(&PGM) TYPE(*CHAR) LEN(10) /* Riceve Nome libreria. */ DCL VAR(&LIB) TYPE(*CHAR) LEN(10) /* Riceve *MSG se richiesta risposta in forma di messaggio. */ /* Altrimenti Restituisce risposta in forma di variabile. */ DCL VAR(&TXT) TYPE(*CHAR) LEN(50) /* Annotazione di richiesto messaggio. */ DCL VAR(&TXTI) TYPE(*LGL) /* Nome del file html completo di indirizzario IFS. */ DCL VAR(&OBJ) TYPE(*CHAR) LEN(100) /* Annotazione di errore sul nome programma. */ DCL VAR(&CHKPGM) TYPE(*LGL) VALUE('0') /* Annotazione di errore sul file html. */ DCL VAR(&CHKHTM) TYPE(*LGL) VALUE('0') /* Intercetta tutti gli errori imprevisti. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO + CMDLBL(ERRORE)) /* Annota richiesto messaggio. */ IF COND(&TXT *EQ *MSG) THEN(CHGVAR VAR(&TXTI) + VALUE('1')) /* Pulisce il parametro di ritorno. */ CHGVAR VAR(&TXT) VALUE(' ') /* Se richiesta libreria *LIBL. */ IF COND(&LIB *EQ *LIBL) THEN(DO) /* Trasforma *LIBL in nome di libreria. */ RTVOBJD OBJ(&LIB/&PGM) OBJTYPE(*PGM) RTNLIB(&LIB) /* Se il programma non esiste in *LIBL. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(do) /* Annota risposta di errore e abbandona. */ CHGVAR VAR(&TXT) VALUE('*ERRORE* Programma non + presente in *LIBL') GOTO CMDLBL(FINE) /* Se il programma non esiste in *LIBL. */ ENDDO /* Se richiesta libreria *LIBL. */ ENDDO /* Compone il nome del file html corrispondente al programma. */ CHGVAR VAR(&OBJ) VALUE('/WEBUFHTML/' *TCAT &LIB + *TCAT '/' *TCAT &PGM *TCAT '.HTM') /* Controlla l'esistenza del file html corrispondente al programma. */ CHKIN OBJ(&OBJ) /* Se l'html non esiste, annota nel flag. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(CHGVAR + VAR(&CHKHTM) VALUE('1')) /* Controlla l'esistenza del programma. */ RTVOBJD OBJ(&LIB/&PGM) OBJTYPE(*PGM) TEXT(&TXT) /* Se il programma non esiste, annota nel flag. */ MONMSG MSGID(CPF0000 MCH0000) EXEC(CHGVAR + VAR(&CHKPGM) VALUE('1')) /* Se presente errore, salta a gestione errore. */ IF COND(&CHKPGM *OR &CHKHTM) THEN(GOTO + CMDLBL(ERRORE)) /* Salta a fine. */ GOTO CMDLBL(FINE) /* Gestione errore. */ ERRORE: /* Sceglie un testo di errore in base ai flag */ /* o restituisce il testo descrittivo del programma. */ SELECT WHEN COND(&CHKPGM *AND &CHKHTM) THEN(CHGVAR + VAR(&TXT) VALUE('*ERRORE* Mancano + programma e video htm')) WHEN COND(&CHKPGM) THEN(CHGVAR VAR(&TXT) + VALUE('*ERRORE* Manca programma')) WHEN COND(&CHKHTM) THEN(CHGVAR VAR(&TXT) + VALUE('*ERRORE* Manca video htm')) OTHERWISE CMD(CHGVAR VAR(&TXT) VALUE('*ERRORE* + Generico')) ENDSELECT /* Fine. */ FINE: /* Se richiesto messaggio, lo emette. */ IF COND(&TXTI) THEN(DO) SNDPGMMSG MSG(&LIB *CAT ' ' *CAT &PGM *CAT ' ' *CAT &TXT) MONMSG MSGID(CPF0000 MCH0000) ENDDO ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHKHTMI) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Check Htm. Cmd */ /* Claudio Neroni 14-09-2014 Creato. */ /* Controlla esistenza PGM e HTML omonimo. */ CMD PROMPT('Check Htm') PARM KWD(PGM ) TYPE(*NAME) LEN(10) MIN(1) + PROMPT('Program name') PARM KWD(LIB) TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL)) PROMPT('Library') PARM KWD(TXT) TYPE(*CHAR) LEN(50) CONSTANT(*MSG) //ENDSRC //ENDBCHJOB