//BCHJOB JOB(JCLRPRTF) 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-12-05 14:34 */ /* To File : "JCLRPRTF" */ /* To Library : "NERONI2" */ /* To Text : "Clear PRTF source. 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 "JCLRPRTF.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:\JCLRPRTF.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JCLRPRTF.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(JCLRPRTF) 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/JCLRPRTF" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JCLRPRTF) MBR(JCLRPRTF.) 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/JCLRPRTF) CRTSRCPF FILE(NERONI2/JCLRPRTF) RCDLEN(112) + TEXT('Clear PRTF source. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCLRPRTF) TOFILE(NERONI2/JCLRPRTF) + TOMBR(JCLRPRTF) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCLRPRTF) MBR(JCLRPRTF) + SRCTYPE(CMD) + TEXT('Clear PRTF source. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCLRPRTF.) TOFILE(NERONI2/JCLRPRTF) + TOMBR(JCLRPRTF.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCLRPRTF) MBR(JCLRPRTF.) + SRCTYPE(CL) + TEXT('Clear PRTF source. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCLRPRTFC) TOFILE(NERONI2/JCLRPRTF) + TOMBR(JCLRPRTFC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCLRPRTF) MBR(JCLRPRTFC) + SRCTYPE(CLLE) + TEXT('Clear PRTF source. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCLRPRTFD) TOFILE(NERONI2/JCLRPRTF) + TOMBR(JCLRPRTFD) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCLRPRTF) MBR(JCLRPRTFD) + SRCTYPE(RPGLE) + TEXT('Clear PRTF source. DltRcd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JCLRPRTFP) TOFILE(NERONI2/JCLRPRTF) + TOMBR(JCLRPRTFP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JCLRPRTF) MBR(JCLRPRTFP) + SRCTYPE(PNLGRP) + TEXT('Clear PRTF source. Help') /*---------------------------------------------------------------------*/ //DATA FILE(JCLRPRTF) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Clear PRTF source. Cmd */ /* Claudio Neroni 09/11/2003 Creato. */ /* Pulisce source PRTF da commenti RLU. */ CMD PROMPT('Clear PRTF source') PARM KWD(SRCFILE) TYPE(SRCFILE) MIN(1) + PROMPT('Source file') SRCFILE: QUAL TYPE(*NAME) QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL)) + PROMPT('library') PARM KWD(SRCMBR) TYPE(*NAME) MIN(1) + PROMPT('Source member') //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCLRPRTF.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JCLRPRTF.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) /* Claudio Neroni 09/11/2003 Creato. */ /* JCLRPRTF */ /* Clear PRTF source. */ /* Prerequisiti: JAI, JCV, JRSNMSG. */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JCLRPRTF) DLTPNLGRP PNLGRP(NERONI2/JCLRPRTFP) DLTPGM PGM(NERONI2/JCLRPRTFC) DLTPGM PGM(NERONI2/JCLRPRTFD) DLTMSGF MSGF(NERONI2/JCLRPRTF) /* Crea gli oggetti. */ CRTBNDCL PGM(NERONI2/JCLRPRTFC) SRCFILE(JCLRPRTF) DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JCLRPRTFD) SRCFILE(JCLRPRTF) DBGVIEW(*ALL) CRTPNLGRP PNLGRP(NERONI2/JCLRPRTFP) SRCFILE(JCLRPRTF) CRTCMD CMD(NERONI2/JCLRPRTF) PGM(JCLRPRTFC) SRCFILE(JCLRPRTF) + MSGF(JCLRPRTF) HLPPNLGRP(JCLRPRTFP) HLPID(CMD) + PRDLIB(NERONI2) CRTMSGF MSGF(NERONI2/JCLRPRTF) TEXT('Clear PRTF source. Msgf') /* Messaggi del Ccp. */ ADDMSGD MSGID(JCP0001) MSGF(NERONI2/JCLRPRTF) MSG('Il file &2/&1 non + è di tipo source.') SECLVL('Il file &1 nella libreria + &2 contente il membro &3 non è un file source.') + FMT((*CHAR 10) (*CHAR 10) (*CHAR 10)) ADDMSGD MSGID(JCP0002) MSGF(NERONI2/JCLRPRTF) MSG('Il membro &3 del + file &2/&1 è di tipo seu &4, diverso da PRTF.') + SECLVL('Il membro &3 del file &1 nella libreria &2 ha + un tipo seu &4, diverso da PRTF, supportato dalla + funzione richiesta.') FMT((*CHAR 10) (*CHAR 10) (*CHAR + 10) (*CHAR 10)) ADDMSGD MSGID(JCP0003) MSGF(NERONI2/JCLRPRTF) MSG('Il membro &3 del + file &2/&1 è vuoto.') SECLVL('Il membro &3 del file &1 + nella libreria &2 non contiene record. Perciò + l''attività richiesta su di esso non ha significato.') + FMT((*CHAR 10) (*CHAR 10) (*CHAR 10)) ADDMSGD MSGID(JCP0004) MSGF(NERONI2/JCLRPRTF) MSG('Lunghezza record + insufficiente nel file &2/&1.') SECLVL('Il file &1 + nella libreria &2 è di lunghezza record &3, + insufficiente per contenere un tipo source &4.') + FMT((*CHAR 10) (*CHAR 10) (*DEC 9 0) (*CHAR 10)) ADDMSGD MSGID(JCP0009) MSGF(NERONI2/JCLRPRTF) MSG('Il membro &3 del + file &2/&1 seu &4 è stato pulito.') SECLVL('Il membro + &3 del file &1 nella libreria &2 con tipo seu &4 è + stato pulito dalle righe di commento inserite + dall''RLU.') FMT((*CHAR 10) (*CHAR 10) (*CHAR 10) + (*CHAR 10)) /* Messaggi del Cmd. */ /* NESSUNO */ //ENDBCHJOB //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCLRPRTFC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Clear PRTF source. Cpp */ /* Claudio Neroni 09/11/2003 Creato. */ /* Pulisce source PRTF da commenti RLU. */ PGM PARM(&FILELIB &MBR) /* File source qualificato. */ DCL VAR(&FILELIB) TYPE(*CHAR) LEN(20) /* Membro source da pulire. */ DCL VAR(&MBR) TYPE(*CHAR) LEN(10) /* File source. */ DCL VAR(&FILE) TYPE(*CHAR) LEN(10) /* Libreria del file. */ DCL VAR(&LIB) TYPE(*CHAR) LEN(10) /* Tipo di seu. */ DCL VAR(&SRCTYPE) TYPE(*CHAR) LEN(10) /* Tipo di file. */ DCL VAR(&FILETYPE) TYPE(*CHAR) LEN(5) /* Lunghezza record del File. */ DCL VAR(&MRL) TYPE(*DEC) LEN(5 0) DCL VAR(&MRLA) TYPE(*CHAR) LEN(5) /* Numero di record nel Membro. */ DCL VAR(&NR) TYPE(*DEC) LEN(10 0) /* Tipo di sentiero di accesso del File. */ DCL VAR(&APT) TYPE(*CHAR) LEN(2) /* Prenotazione del CPF0001. */ DCL VAR(&CPF0001) TYPE(*LGL) /* Intercetta gli errori. */ MONMSG MSGID(CPF0000 MCH0000 CEE0000) EXEC(GOTO + CMDLBL(ERRORE)) /* Estrae parametri. */ CHGVAR VAR(&FILE) VALUE(%SST(&FILELIB 1 10)) CHGVAR VAR(&LIB) VALUE(%SST(&FILELIB 11 10)) /* Recupera le caratteristiche del File. */ CALL PGM(JAIRFD) PARM(&FILE &LIB &MRL + X'000000000F' &APT) /* Controlla l'esistenza e recupera le caratteristiche */ /* del Membro da pulire. */ RTVMBRD FILE(&LIB/&FILE) MBR(&MBR) + FILETYPE(&FILETYPE) SRCTYPE(&SRCTYPE) + NBRCURRCD(&NR) /* Se il file non è di tipo source, messaggia e rilascia. */ IF COND(&FILETYPE *NE *SRC) THEN(DO) SNDPGMMSG MSGID(JCP0001) MSGF(JCLRPRTF) MSGDTA(&FILE + *CAT &LIB *CAT &MBR) MSGTYPE(*DIAG) GOTO CMDLBL(CPF0001) ENDDO /* Se il tipo seu non è PRTF, messaggia e rilascia. */ IF COND(&SRCTYPE *NE PRTF) THEN(DO) SNDPGMMSG MSGID(JCP0002) MSGF(JCLRPRTF) MSGDTA(&FILE + *CAT &LIB *CAT &MBR *CAT &SRCTYPE) + MSGTYPE(*DIAG) GOTO CMDLBL(CPF0001) ENDDO /* Se il Membro è vuoto, messaggia e rilascia. */ IF COND(&NR *EQ 0) THEN(DO) SNDPGMMSG MSGID(JCP0003) MSGF(JCLRPRTF) MSGDTA(&FILE + *CAT &LIB *CAT &MBR) MSGTYPE(*DIAG) GOTO CMDLBL(CPF0001) ENDDO /* Se la Lunghezza del File non è sufficiente a contenere */ /* lo statement PRTF, messaggia e rilascia. */ IF COND(&MRL *LT 92) THEN(DO) CALL PGM(JCVPNPC) PARM(&MRL &MRLA 5) SNDPGMMSG MSGID(JCP0004) MSGF(JCLRPRTF) MSGDTA(&FILE + *CAT &LIB *CAT &MRLA *CAT &SRCTYPE) + MSGTYPE(*DIAG) GOTO CMDLBL(CPF0001) ENDDO /* Dealloca e alloca il membro. */ DLCOBJ OBJ((&LIB/&FILE *FILE *EXCL &MBR)) MONMSG MSGID(CPF0000) ALCOBJ OBJ((&LIB/&FILE *FILE *EXCL &MBR)) WAIT(2) /* Ridirige la lettura sul Membro. */ OVRDBF FILE(JCLRPRTF) TOFILE(&LIB/&FILE) MBR(&MBR) + SECURE(*YES) /* Chiama la pulizia del source. */ CALL PGM(JCLRPRTFD) /* Annulla i reindirizzamenti. */ DLTOVR FILE(*ALL) /* Riorganizza il source per eliminare i record cancellati. */ RGZPFM FILE(&LIB/&FILE) MBR(&MBR) /* Manda messaggio di felice esecuzione. */ SNDPGMMSG MSGID(JCP0009) MSGF(JCLRPRTF) + MSGDTA(&FILELIB *CAT &MBR *CAT &SRCTYPE) + MSGTYPE(*COMP) /* Label di esecuzione delle attività finali. */ RCLRSC: /* Dealloca il membro. */ DLCOBJ OBJ((&LIB/&FILE *FILE *EXCL &MBR)) MONMSG MSGID(CPF0000 MCH0000) /* Riacquisisce le risorse. */ RCLRSC MONMSG MSGID(CPF0000 MCH0000) /* Se richiesto, rilascia il CPF0001. */ IF COND(&CPF0001) THEN(DO) SNDPGMMSG MSGID(CPF0001) MSGF(QCPFMSG) + MSGDTA(JCLRPRTF) 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 /*---------------------------------------------------------------------*/ //DATA FILE(JCLRPRTFD) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Clear PRTF source. DltRcd * Claudio Neroni 09/11/2003 Creato. * Pulisce source PRTF da commenti RLU. CN01 * Claudio Neroni 05-12-2014 Modificato. CN01 * Lascia intatti i commenti inseriti da RDI. *--------------------------------------------------------------------- * File source. FJclrprtf uf f 92 disk *--------------------------------------------------------------------- * Record source. IJclrprtf no * Identificazione di commento scritto da RLU. I 18 21 iderlucom * Identificazione di parametro di creazione scritto da RLU. I 18 23 iderlucrt *--------------------------------------------------------------------- * Predispone il termine del programma. C seton lr * Si posiziona all'inizio del file. C 1 setll Jclrprtf * Elabora il file. C do *hival * Legge il prossimo record. C read Jclrprtf 50 * Se non ci sono altri record, salta a fine file. C 50 leave * Esamina le identificazioni RLU. C do * Assume non cancellazione del record. C setoff 71 CN01 * Se corre un parametro RDI, abbandona. CN01 C if iderlucrt='A*%%RS' CN01 C leave CN01 C endif * Se corre un parametro di creazione RLU, abbandona. C if iderlucrt='A*%%CP' C leave C endif * Se non corre un commento RLU, abbandona. C if iderlucom<>'A*%%' C leave C endif * Prenota la cancellazione del record. C seton 71 * Esamina le identificazioni RLU. C enddo * Se è prenotata la cancellazione del record. C if *in71 * Cancella il record. C delete Jclrprtf * Se non è prenotata la cancellazione. C else * Rilascia il record. C unlock Jclrprtf * Se non è prenotata la cancellazione. C endif * Elabora il file. C enddo * Ritorna. C return *--------------------------------------------------------------------- //ENDSRC /*---------------------------------------------------------------------*/ //DATA FILE(JCLRPRTFP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') :PNLGRP. .*--------------------------------------------------------------------- :HELP NAME=CMD. :H3.Comando JCLRPRTF :H2.Pulisce sorgente PRTF dalle righe di commento RLU. :P.Il comando permette di eliminare le inutili righe inserite dalle manipolazioni del sorgente eseguite con :HP1.RLU (Report Layout Utility):EHP1.. :P.Vengono tuttavia conservate le righe RLU contenenti i parametri del comando di creazione del printer file, le uniche veramente utili nelle operazioni RLU. :P.Per il momento, lascia intatti i commenti introdotti dall'uso di :HP1.DDS Design di RDI (Rational Developer for i):EHP1. in attesa di capire se occorra una pulizia anche su questi. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/srcfile'. :H3.Source file (SRCFILE) - file :P.Nome del file sorgente in cui risiede il membro da modificare. :P.Valori permessi: :PARML. :PT.nome-file-sorgente € :PD.Il valore è obbligatorio. :EPARML. :H3.Source file (SRCFILE) - library :P.Nome della libreria in cui risiede il file. :P.Valori permessi: :PARML. :PT.:PK DEF.*LIBL:EPK.€ :PD.Il file sorgente viene cercato in lista librerie. :PT.nome-libreria :PD.Il file sorgente viene cercato nella libreria richiesta. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/srcmbr'. :H3.Source member (SRCMBR) :P.Nome del membro sorgente da modificare. :P.Valori permessi: :PARML. :PT.nome-membro-sorgente € :PD.Il valore è obbligatorio. :EPARML. :EHELP. .*--------------------------------------------------------------------- :EPNLGRP. //ENDSRC //ENDBCHJOB