//BCHJOB JOB(JCHKNAM) 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: 2015-06-18 18:21 */ /* To File : "JCHKNAM" */ /* To Library : "NERONI2" */ /* To Text : "Check Name. 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 "JCHKNAM.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:\JCHKNAM.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JCHKNAM.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(JCHKNAM) 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/JCHKNAM" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JCHKNAM) MBR(JCHKNAM.) 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/JCHKNAM) CRTSRCPF FILE(NERONI2/JCHKNAM) RCDLEN(112) + TEXT('Check Name. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKNAM) TOFILE(NERONI2/JCHKNAM) + TOMBR(JCHKNAM) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKNAM) MBR(JCHKNAM) + SRCTYPE(CMD) + TEXT('Check Name. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKNAM.) TOFILE(NERONI2/JCHKNAM) + TOMBR(JCHKNAM.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKNAM) MBR(JCHKNAM.) + SRCTYPE(CL) + TEXT('Check Name. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKNAMC) TOFILE(NERONI2/JCHKNAM) + TOMBR(JCHKNAMC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKNAM) MBR(JCHKNAMC) + SRCTYPE(CLLE) + TEXT('Check Name. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCHKNAMI) TOFILE(NERONI2/JCHKNAM) + TOMBR(JCHKNAMI) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCHKNAM) MBR(JCHKNAMI) + SRCTYPE(CMD) + TEXT('Check Name. CmdInter') /*---------------------------------------------------------------------*/ //DATA FILE(JCHKNAM) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Check Name. Cmd */ /* Claudio Neroni 18-06-2015 Creato. */ /* Controlla la validita' formale del nome ricevuto. */ /* */ CMD PROMPT('Check Name') PARM KWD(NAME) TYPE(*CHAR) LEN(10) MIN(1) + PROMPT('Name to be checked') PARM KWD(VALID) TYPE(*CHAR) LEN(4) RTNVAL(*YES) + MIN(1) PROMPT('Valid Name *YES/*NO Var 4') /* PARM KWD(VALID) TYPE(*CHAR) LEN(4) CONSTANT(*MSG) */ //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHKNAM.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JCHKNAM.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 18-06-2015 Creato. */ /* JCHKNAM */ /* Check Name. CrtJs */ /* Prerequisiti: nessuno */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JCHKNAM) DLTCMD CMD(NERONI2/JCHKNAMI) DLTPGM PGM(NERONI2/JCHKNAMC) /* Crea gli oggetti. */ CRTBNDCL PGM(NERONI2/JCHKNAMC) SRCFILE(JCHKNAM) TGTRLS(*CURRENT) + DBGVIEW(*ALL) CRTCMD CMD(NERONI2/JCHKNAM) PGM(JCHKNAMC) SRCFILE(JCHKNAM) + ALLOW(*BPGM *IPGM *BMOD *IMOD) PRDLIB(NERONI2) CRTCMD CMD(NERONI2/JCHKNAMI) PGM(JCHKNAMC) SRCFILE(JCHKNAM) + PRDLIB(NERONI2) //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHKNAMC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Check Name. Cpp */ /* Claudio Neroni 18-06-2015 Creato. */ /* Controlla la validita' formale del nome ricevuto. */ /* */ PGM PARM(&NAME &VALID) /* Riceve nome da controllare. */ DCL VAR(&NAME) TYPE(*CHAR) LEN(10) /* Riceve eventuale richiesta *MSG */ /* per restituire messaggio invece che parametro. */ /* Se non ha ricevuto *MSG, */ /* restituisce Nome Valido = *YES/*NO */ DCL VAR(&VALID) TYPE(*CHAR) LEN(4) /* Tipo di risposta richiesta. */ DCL VAR(&RPYTYP) TYPE(*CHAR) LEN(4) /* Risposta. Assume "Nome non valido". */ DCL VAR(&RPY) TYPE(*CHAR) LEN(4) VALUE(*NO) /* Accantona la richiesta di risposta, messaggio e non variabile. */ CHGVAR VAR(&RPYTYP) VALUE(&VALID) /* Controlla la validita' del nome ricevuto */ /* controllando l'esistenza di un oggetto in una libreria inesistente. */ CHKOBJ OBJ(JCHKNAMC$$/&NAME) OBJTYPE(*DTAARA) /* Se intercetta "Libreria inesistente", il nome da verificare è valido. */ MONMSG MSGID(CPF9810) EXEC(DO) /* Annota risposta "Nome valido". */ CHGVAR VAR(&RPY) VALUE(*YES) /* Rimuove il messaggio per pulizia. */ RCVMSG MSGTYPE(*LAST) RMV(*YES) /* Se intercetta "Libreria inesistente", il nome da verificare è valido. */ ENDDO /* Se intercetta qualunque altro messaggio, il nome non è valido. */ MONMSG MSGID(CPF0000) EXEC(DO) /* Rimuove i due messaggi per pulizia. */ RCVMSG MSGTYPE(*LAST) RMV(*YES) RCVMSG MSGTYPE(*LAST) RMV(*YES) /* Se intercetta qualunque altro messaggio, il nome non è valido. */ ENDDO /* Se richiesto messaggio di risposta. */ IF COND(&RPYTYP *EQ *MSG) THEN(DO) /* Se nome valido, messaggia. */ IF COND(&RPY *EQ *YES) THEN(SNDPGMMSG MSG('Il + nome "' *TCAT &NAME *TCAT '" e'' valido.')) /* Se nome non valido, messaggia. */ ELSE CMD(SNDPGMMSG MSG('Il nome "' *TCAT &NAME + *TCAT '" NON e'' valido.')) /* Se richiesto messaggio di risposta. */ ENDDO /* Se richiesta variabile di risposta, la restituisce. */ ELSE CMD(CHGVAR VAR(&VALID) VALUE(&RPY)) ENDPGM //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCHKNAMI) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Check Name. CmdInter */ /* Claudio Neroni 18-06-2015 Creato. */ /* Controlla la validita' formale del nome ricevuto. */ /* Versione interattiva. */ /* */ CMD PROMPT('Check Name') PARM KWD(NAME) TYPE(*CHAR) LEN(10) MIN(1) + PROMPT('Name to be checked') PARM KWD(VALID) TYPE(*CHAR) LEN(4) CONSTANT(*MSG) //ENDSRC //ENDBCHJOB