//BCHJOB JOB(JDWLJRN) JOBD(NERONI2/NERONI2) OUTQ(QPRINT) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) CCSID(280) /* 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-05-20 13:52 */ /* To File : "JDWLJRN" */ /* To Library : "NERONI2" */ /* To Text : "Download file from journal. 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 "JDWLJRN.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:\JDWLJRN.txt" "/qsys.lib/NERONI2.lib/stringhe.file/JDWLJRN.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(JDWLJRN) 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/JDWLJRN" */ /* FACENDO ATTENZIONE ALL'ORDINE DI ESECUZIONE INDICATO NEL */ /* MEMBRO FACOLTATIVO "A.LEGGIMI", AD ESEMPIO: */ /* SBMDBJOB FILE(NERONI2/JDWLJRN) MBR(JDWLJRN.) 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/JDWLJRN) CRTSRCPF FILE(NERONI2/JDWLJRN) RCDLEN(112) + TEXT('Download file from journal. Src') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDWLJRN) TOFILE(NERONI2/JDWLJRN) + TOMBR(JDWLJRN) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDWLJRN) MBR(JDWLJRN) + SRCTYPE(CMD) + TEXT('Download file from journal. Cmd') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDWLJRN.) TOFILE(NERONI2/JDWLJRN) + TOMBR(JDWLJRN.) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDWLJRN) MBR(JDWLJRN.) + SRCTYPE(CL) + TEXT('Download file from journal. CrtJs') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDWLJRNC) TOFILE(NERONI2/JDWLJRN) + TOMBR(JDWLJRNC) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDWLJRN) MBR(JDWLJRNC) + SRCTYPE(CLLE) + TEXT('Download file from journal. Cpp') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDWLJRND) TOFILE(NERONI2/JDWLJRN) + TOMBR(JDWLJRND) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDWLJRN) MBR(JDWLJRND) + SRCTYPE(RPGLE) + TEXT('Download file from journal. WrtSrc') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDWLJRNP) TOFILE(NERONI2/JDWLJRN) + TOMBR(JDWLJRNP) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDWLJRN) MBR(JDWLJRNP) + SRCTYPE(PNLGRP) + TEXT('Download file from journal. Help') /* Copia il sorgente dalla stringa al membro del file sorgente. */ /* Modifica testo e tipo seu del sorgente caricato. */ CPYF FROMFILE(JDWLJRNT2) TOFILE(NERONI2/JDWLJRN) + TOMBR(JDWLJRNT2) MBROPT(*REPLACE) SRCOPT(*SEQNBR) CHGPFM FILE(NERONI2/JDWLJRN) MBR(JDWLJRNT2) + SRCTYPE(PF) + TEXT('Download file from journal. SpecType2') /*----------------------------------------------------------------------------*/ //DATA FILE(JDWLJRN) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Claudio Neroni 29-06-2006 Creato. */ /* Download file from journal. Cmd */ /* Scarica file da giornale. Cmd */ CMD PROMPT('Download file from journal') PARM KWD(JRN) TYPE(FILE) MIN(1) PROMPT('Journal') JRN: QUAL TYPE(*NAME) QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL)) + PROMPT('library') PARM KWD(FILE) TYPE(FILE) MIN(1) PROMPT('File to + download') FILE: QUAL TYPE(*NAME) QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL)) + PROMPT('library') PARM KWD(OUTLIB) TYPE(*NAME) LEN(10) DFT(JDWLJRN) + PROMPT('Output library') PARM KWD(FROMTIME) TYPE(FROMTIME) + PROMPT('Starting date and time') FROMTIME: ELEM TYPE(*DATE) PROMPT('Starting date') ELEM TYPE(*TIME) PROMPT('Starting time') PARM KWD(TOTIME) TYPE(TOTIME) PROMPT('Ending date + and time') TOTIME: ELEM TYPE(*DATE) PROMPT('Ending date') ELEM TYPE(*TIME) PROMPT('Ending time') PARM KWD(RCVRNG) TYPE(RCVRNG) DFT(*CURCHAIN) + SNGVAL((*CURCHAIN) (*CURRENT) + (*CURAVLCHN)) PROMPT('Range of journal + receivers') RCVRNG: ELEM TYPE(RCVRNG1) PROMPT('Starting journal + receiver') ELEM TYPE(RCVRNG2) DFT(*CURRENT) + SNGVAL((*CURRENT)) PROMPT('Ending journal + receiver') RCVRNG1: QUAL TYPE(*NAME) QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL) + (*CURLIB)) PROMPT('library') RCVRNG2: QUAL TYPE(*NAME) QUAL TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL) + (*CURLIB)) PROMPT('library') //ENDSRC /*----------------------------------------------------------------------------*/ //DATA FILE(JDWLJRN.) FILETYPE(*SRC) ENDCHAR('//ENDSRC') //BCHJOB JOB(JDWLJRN.) JOBD(NERONI2/NERONI2) OUTQ(QPRINTS) + ENDSEV(60) LOG(4 00 *SECLVL) MSGQ(*USRPRF) CCSID(280) jmy /* Claudio Neroni 29-06-2006 Creato. */ /* JDWLJRN */ /* Download file from journal. */ /* Scarica file da giornale. */ /* Prerequisiti: JRSNMSG */ /* Imposta la lista librerie. */ CHGLIBL LIBL(QTEMP QGPL) ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP) /* Cancella gli oggetti preesistenti. */ DLTCMD CMD(NERONI2/JDWLJRN) DLTPNLGRP PNLGRP(NERONI2/JDWLJRNP) DLTPGM PGM(NERONI2/JDWLJRNC) DLTPGM PGM(NERONI2/JDWLJRND) /* Crea gli oggetti. */ CRTBNDCL PGM(NERONI2/JDWLJRNC) SRCFILE(JDWLJRN) DBGVIEW(*ALL) CRTBNDRPG PGM(NERONI2/JDWLJRND) SRCFILE(JDWLJRN) DBGVIEW(*ALL) CRTPNLGRP PNLGRP(NERONI2/JDWLJRNP) SRCFILE(JDWLJRN) CRTCMD CMD(NERONI2/JDWLJRN) PGM(JDWLJRNC) SRCFILE(JDWLJRN) + HLPPNLGRP(JDWLJRNP) HLPID(CMD) PRDLIB(NERONI2) CRTPRXCMD CMD(QGPL/JDWLJRN) TGTCMD(NERONI2/JDWLJRN) AUT(*USE) + REPLACE(*YES) //ENDBCHJOB //ENDSRC /*----------------------------------------------------------------------------*/ //DATA FILE(JDWLJRNC) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /* Claudio Neroni 29-06-2006 Creato. */ /* Download file from journal. Cpp */ /* Scarica file da journal. Cpp */ /* */ /* Il comando DSPJRN permette lo scarico delle immagini di un file */ /* loggato su di un giornale. */ /* Purtroppo il tracciato dello scarico prevede un campo dati */ /* unico come contenitore dei dati dei record loggati. */ /* La lettura di uno scarico risulta quindi di difficile */ /* interpretazione. */ /* Il comando JDWLJRN limita lo scarico ad un solo file ma scrive */ /* un file di emissione compilato ad hoc che, in luogo dell'unico */ /* campo dati, contiene in coda al record di scarico tutti i campi */ /* del file originale correttamente esposti. */ /* */ /* Da un'idea di Francesco Toppan. */ /* */ PGM PARM(&JRN &FILE &OUTLIB &FROMTIME &TOTIME + &RCVRNG) /* Riceve Giornale qualificato. */ DCL VAR(&JRN) TYPE(*CHAR) LEN(20) DCL VAR(&JRNN) TYPE(*CHAR) LEN(10) DCL VAR(&JRNL) TYPE(*CHAR) LEN(10) /* Riceve File qualificato. */ DCL VAR(&FILE) TYPE(*CHAR) LEN(20) DCL VAR(&FILEN) TYPE(*CHAR) LEN(10) DCL VAR(&FILEL) TYPE(*CHAR) LEN(10) /* Riceve Libreria di emissione. */ DCL VAR(&OUTLIB) TYPE(*CHAR) LEN(10) /* Riceve Data/ora di inizio. */ DCL VAR(&FROMTIME) TYPE(*CHAR) LEN(15) DCL VAR(&FROMTIMED) TYPE(*CHAR) LEN(7) DCL VAR(&FROMTIMEDX) TYPE(*CHAR) LEN(10) + VALUE('24/08/1928') DCL VAR(&FROMTIMET) TYPE(*CHAR) LEN(6) /* Riceve Data/ora di fine. */ DCL VAR(&TOTIME) TYPE(*CHAR) LEN(15) DCL VAR(&TOTIMED) TYPE(*CHAR) LEN(7) DCL VAR(&TOTIMEDX) TYPE(*CHAR) LEN(10) + VALUE('09/05/2071') DCL VAR(&TOTIMET) TYPE(*CHAR) LEN(6) /* Riceve Gamma ricevitori. */ DCL VAR(&RCVRNG) TYPE(*CHAR) LEN(42) DCL VAR(&RCVRNGX) TYPE(*CHAR) LEN(2) DCL VAR(&RCVRNG1N) TYPE(*CHAR) LEN(10) DCL VAR(&RCVRNG1L) TYPE(*CHAR) LEN(10) DCL VAR(&RCVRNG2N) TYPE(*CHAR) LEN(10) DCL VAR(&RCVRNG2L) TYPE(*CHAR) LEN(10) DCL VAR(&N1) TYPE(*CHAR) LEN(2) VALUE(X'0001') DCL VAR(&N2) TYPE(*CHAR) LEN(2) VALUE(X'0002') /* File di emissione. */ DCL VAR(&OUTFILE) TYPE(*CHAR) LEN(10) /* Testo del file. */ DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) /* Indirizzario. */ DCL VAR(&DIR) TYPE(*CHAR) LEN(100) /* Formato data del lavoro corrente. */ DCL VAR(&DATFMT) TYPE(*CHAR) LEN(4) /* Formato data di immissione nel dspjrn. */ DCL VAR(&DATFMTX) TYPE(*CHAR) LEN(5) /* Prenotazione del CPF0001. */ DCL VAR(&CPF0001) TYPE(*LGL) /* Intercetta tutti gli errori saltando a fine con errore. */ MONMSG MSGID(CPF0000 MCH0000 CEE0000) EXEC(GOTO + CMDLBL(ERRORE)) /* Recupera Formato data del lavoro corrente. */ RTVJOBA DATFMT(&DATFMT) /* Decide il Formato data di immissione nel dspjrn. */ IF COND(&DATFMT *EQ *DMY) THEN(DO) CHGVAR VAR(&DATFMTX) VALUE(*DMYY) ENDDO IF COND(&DATFMT *EQ *MDY) THEN(DO) CHGVAR VAR(&DATFMTX) VALUE(*MDYY) CVTDAT DATE(&FROMTIMEDX) TOVAR(&FROMTIMEDX) + FROMFMT(*DMYY) TOFMT(*MDYY) TOSEP(/) CVTDAT DATE(&TOTIMEDX) TOVAR(&TOTIMEDX) + FROMFMT(*DMYY) TOFMT(*MDYY) TOSEP(/) ENDDO /* Estrae Giornale e Libreria. */ CHGVAR VAR(&JRNN) VALUE(%SST(&JRN 1 10)) CHGVAR VAR(&JRNL) VALUE(%SST(&JRN 11 10)) /* Estrae File e Libreria. */ CHGVAR VAR(&FILEN) VALUE(%SST(&FILE 1 10)) CHGVAR VAR(&FILEL) VALUE(%SST(&FILE 11 10)) /* Estrae Data e ora inizio. */ CHGVAR VAR(&FROMTIMED) VALUE(%SST(&FROMTIME 3 7)) CHGVAR VAR(&FROMTIMET) VALUE(%SST(&FROMTIME 10 6)) IF COND(&FROMTIMED *NE '0000000') THEN(DO) CVTDAT DATE(&FROMTIMED) TOVAR(&FROMTIMEDX) + FROMFMT(*CYMD) TOFMT(&DATFMTX) TOSEP('/') ENDDO /* Estrae Data e ora fine. */ CHGVAR VAR(&TOTIMED) VALUE(%SST(&TOTIME 3 7)) CHGVAR VAR(&TOTIMET) VALUE(%SST(&TOTIME 10 6)) IF COND(&TOTIMED *NE '0000000') THEN(DO) CVTDAT DATE(&TOTIMED) TOVAR(&TOTIMEDX) + FROMFMT(*CYMD) TOFMT(&DATFMTX) TOSEP('/') ENDDO /* Estrae e aggiusta valori Ricevitori. */ CHGVAR VAR(&RCVRNGX) VALUE(%SST(&RCVRNG 1 2)) CHGVAR VAR(&RCVRNG1N) VALUE(%SST(&RCVRNG 3 10)) CHGVAR VAR(&RCVRNG1L) VALUE(%SST(&RCVRNG 13 10)) IF COND(&RCVRNG1L *EQ ' ') THEN(CHGVAR + VAR(&RCVRNG1L) VALUE('*N')) IF COND(&RCVRNGX *EQ &N2) THEN(DO) CHGVAR VAR(&RCVRNG2N) VALUE(%SST(&RCVRNG 23 10)) IF COND(&RCVRNG2N *EQ ' ') THEN(CHGVAR + VAR(&RCVRNG2N) VALUE('*N')) CHGVAR VAR(&RCVRNG2L) VALUE(%SST(&RCVRNG 33 10)) IF COND(&RCVRNG2L *EQ ' ') THEN(CHGVAR + VAR(&RCVRNG2L) VALUE('*N')) ENDDO /* Controlla l'esistenza del giornale. */ CHKOBJ OBJ(&JRNL/&JRNN) OBJTYPE(*JRN) /* Controlla l'esistenza del file e ne recupera il testo. */ RTVOBJD OBJ(&FILEL/&FILEN) OBJTYPE(*FILE) TEXT(&TEXT) /* Controlla l'esistenza della libreria di emissione. */ CHKOBJ OBJ(&OUTLIB) OBJTYPE(*LIB) /* Se la libreria di emissione non esiste, la crea. */ MONMSG MSGID(CPF0000) EXEC(DO) /*********** CRTLIB LIB(&OUTLIB) TYPE(*TEST) TEXT('Libreria di + emissione del cmd JDWLJRN.') * */ CHGVAR VAR(&DIR) VALUE('/qsys.lib/' *CAT &OUTLIB + *TCAT '.lib') MKDIR DIR(&DIR) ENDDO /* Compone il nome del file di emissione. */ CHGVAR VAR(&OUTFILE) VALUE('J' *CAT &FILEN) /* Cancella i file temporanei. */ DLTF FILE(QTEMP/JDWLJRN*) MONMSG MSGID(CPF0000 MCH0000) /* Crea il file sorgente temporaneo. */ CRTSRCPF FILE(QTEMP/JDWLJRNTMP) RCDLEN(112) + TEXT('Temporary source') /* Crea il membro sorgente temporaneo del file di emissione */ /* copiando i campi fissi. */ CPYF FROMFILE(JDWLJRN) TOFILE(QTEMP/JDWLJRNTMP) + FROMMBR(JDWLJRNT2) TOMBR(JDWLJRNT2) + MBROPT(*REPLACE) FMTOPT(*NOCHK) /* Recupera l'elenco dei campi del file da scaricare. */ DSPFFD FILE(&FILEL/&FILEN) OUTPUT(*OUTFILE) + OUTFILE(QTEMP/JDWLJRNFFD) /* Aggiunge tali campi al sorgente del file di emissione. */ OVRDBF FILE(QADSPFFD) TOFILE(QTEMP/JDWLJRNFFD) OVRDBF FILE(JDWLJRNSRC) TOFILE(QTEMP/JDWLJRNTMP) + MBR(JDWLJRNT2) CALL PGM(JDWLJRND) /* Cancella l'eventuale vecchio file di emissione. */ DLTF FILE(&OUTLIB/&OUTFILE) MONMSG MSGID(CPF0000 MCH0000) /* Crea il file di emissione. */ CRTPF FILE(&OUTLIB/&OUTFILE) + SRCFILE(QTEMP/JDWLJRNTMP) SRCMBR(JDWLJRNT2) + TEXT(&TEXT) SIZE(*NOMAX) /* Se il numero Ricevitori e' 1. */ IF COND(&RCVRNGX *EQ &N1) THEN(DO) /* Chiama il diplay journal con il solo ricevitore iniziale */ /* per scaricare il file da esaminare in un comodo temporaneo. */ DSPJRN JRN(&JRNL/&JRNN) FILE((&FILEL/&FILEN *ALL)) + RCVRNG(&RCVRNG1N) FROMTIME(&FROMTIMEDX + &FROMTIMET) TOTIME(&TOTIMEDX &TOTIMET) + ENTTYP(*RCD) OUTPUT(*OUTFILE) + OUTFILFMT(*TYPE2) + OUTFILE(QTEMP/JDWLJRNOUT) ENTDTALEN(*CALC) /* Se il parametro Ricevitore finale e' vuoto. */ ENDDO /* Se il parametro Ricevitore finale e' valorizzato. */ ELSE CMD(DO) /* Chiama il diplay journal con ricevitori iniziale e finale */ /* per scaricare il file da esaminare in un comodo temporaneo. */ DSPJRN JRN(&JRNL/&JRNN) FILE((&FILEL/&FILEN *ALL)) + RCVRNG(&RCVRNG1L/&RCVRNG1N + &RCVRNG2L/&RCVRNG2N) FROMTIME(&FROMTIMEDX + &FROMTIMET) TOTIME(&TOTIMEDX &TOTIMET) + ENTTYP(*RCD) OUTPUT(*OUTFILE) + OUTFILFMT(*TYPE2) + OUTFILE(QTEMP/JDWLJRNOUT) ENTDTALEN(*CALC) /* Se il parametro Ricevitore finale e' valorizzato. */ ENDDO /* Copia il comodo nel file di emissione. */ CPYF FROMFILE(QTEMP/JDWLJRNOUT) + TOFILE(&OUTLIB/&OUTFILE) MBROPT(*REPLACE) + FMTOPT(*NOCHK) /* Attivita' finali. */ RCLRSC: /* Riacquisisce le risorse. */ RCLRSC MONMSG MSGID(CPF0000 MCH0000) /* Dealloca. */ /* ... */ /* Cancella i file di lavoro. */ /* ... */ MONMSG MSGID(CPF0000 MCH0000) /* Se richiesto, rilascia il CPF0001. */ IF COND(&CPF0001) THEN(DO) SNDPGMMSG MSGID(CPF0001) MSGF(QCPFMSG) MSGDTA(JDWLJRN) + MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000 MCH0000) ENDDO /* Ritorna. */ RETURN /* Errore. */ ERRORE: /* Restituisce i messaggi al chiamante, */ /* trasformando eventuali escape in diagnostici. */ JRSNMSG RMV(*NO) MONMSG MSGID(CPF0000 MCH0000) /* Prenotazione del CPF0001. */ CPF0001: /* Prenota il CPF0001. */ CHGVAR VAR(&CPF0001) VALUE('1') MONMSG MSGID(CPF0000 MCH0000) /* Salta ad Attivita' finali. */ GOTO CMDLBL(RCLRSC) ENDPGM //ENDSRC /*----------------------------------------------------------------------------*/ //DATA FILE(JDWLJRND) FILETYPE(*SRC) ENDCHAR('//ENDSRC') /TITLE Scarica file da journal. WrtSrc * Claudio Neroni 29/06/2006 Creato. *--------------------------------------------------------------------- * Accoda ai campi fissi i campi interpretativi del campo dati. *--------------------------------------------------------------------- * Display File Field Description. Fqadspffd ip e disk * Sorgente del file fisico di emissione. Fjdwljrnsrco f 92 disk *--------------------------------------------------------------------- * Incrementa il contatore. C add 1 cnt * Compone "LIBRERIA/FILE)" C eval libfil=%trim(whlib)+'/'+%trim(whfile)+')' * Scrive le specifiche sorgenti del campo. C except wri * A fine campi, accoda "FINE AGGIUNTA". Clr add 1 cnt Clr except end *--------------------------------------------------------------------- * Inizializza. C *inzsr begsr * Inizializza il contarighe. C z-add 1000 cnt 4 0 * Definisce un comodo per l'emissione. C clear libfil 22 * Prima dei campi, accoda "INIZIO AGGIUNTA". C except beg C endsr *--------------------------------------------------------------------- * Riga di inizio aggiunte. Ojdwljrnsrce beg O cnt 4 O 6 '00' O 12 '000000' O 18 ' ' O '* INIZIO AGGIUNTA CAMPI' * Prima riga del campo. O e wri O cnt 4 O 6 '00' O 12 '000000' O 18 'A' O whfldi 40 O 41 'R' O 63 'REFFLD(' O whfldi O ' +' * Seconda riga del campo. O e wri O cnt 4 O 6 '01' O 12 '000000' O 18 'A' O 56 ' ' O libfil * Riga di fine aggiunte. O e end O cnt 4 O 6 '00' O 12 '000000' O 18 ' ' O '* FINE AGGIUNTA CAMPI' *--------------------------------------------------------------------- //ENDSRC /*----------------------------------------------------------------------------*/ //DATA FILE(JDWLJRNP) FILETYPE(*SRC) ENDCHAR('//ENDSRC') :PNLGRP. .*------------------------------------------------------------------------------ :HELP NAME=CMD. :H3.Comando JDWLJRN :H2.Download file from journal :P.Scarica un file da giornale interpretando il campo dati :P.Interfaccia il comando :HP2.DSPJRN:EHP2., nativo del sistema, che permette lo scarico da un giornale delle immagini di un file dati. :P.Purtroppo il tracciato dello scarico prevede un campo dati unico come contenitore dei dati dei record loggati. La lettura di uno scarico risulta quindi di difficile interpretazione. :P.Il comando :HP2.JDWLJRN:EHP2. limita lo scarico ad un solo file ma scrive un file di emissione compilato ad hoc che, in luogo dell'unico campo dati, contiene in coda al record di scarico tutti i campi del file originale correttamente esposti. :P.Il nome del file di emissione viene ottenuto dal nome del file dati prefissato con il carattere :HP2.J:EHP2. per evitare il rischio di ricalcare un file di database. :P.La libreria eventualmente mancante viene creata. La libreria deve essere diversa dalle normali librerie dati per evitare confusione. Se si crea una libreria personale apposita dedicata a questa funzione, si consiglia che il nome inizi con il prefisso dell'utility :HP2.JDWLJRN...:EHP2. :EHELP. .*------------------------------------------------------------------------------ :HELP name='CMD/jrn'. :H3.Journal (JRN) - name :P.Giornale :P.Nome del giornale contenente le entrate da visionare. :P.Il valore è obbligatorio. :P.Valori permessi: :PARML. :PT.nome-giornale :PD.Nome del giornale. :EPARML. :H3.Journal (JRN) - library :P.Libreria :P.Nome della libreria in cui risiede il giornale. :P.Valori permessi: :PARML. :PT.:PK DEF.*LIBL:EPK.€ :PD.Il giornale viene cercato in lista librerie. :PT.nome-libreria :PD.Il giornale viene cercato nella libreria richiesta. :EPARML. :EHELP. .*------------------------------------------------------------------------------ :HELP name='CMD/file'. :H3.File to download (FILE) - name :P.File da scaricare :P.Nome del file dati del quale si visionano le entrate loggate nel giornale. :P.Il valore è obbligatorio. :P.Valori permessi: :PARML. :PT.nome-file :PD.Nome del file dati da visionare. :EPARML. :H3.File to download (FILE) - library :P.Libreria :P.Nome della libreria in cui risiede il file dati. :P.Valori permessi: :PARML. :PT.:PK DEF.*LIBL:EPK.€ :PD.Il file dati viene cercato in lista librerie. :PT.nome-libreria :PD.Il file dati viene cercato nella libreria richiesta. :EPARML. :EHELP. .*------------------------------------------------------------------------------ :HELP name='CMD/outlib'. :H3.Output library (OUTLIB) :P.Libreria di emissione :P.Nome della libreria nella quale viene posto il file di emissione. :P.Se la libreria manca, viene creata. :P.Valori permessi: :PARML. :PT.:PK DEF.JDWLJRN:EPK.€ :PD.Il file di emissione viene posto nella libreria JDWLJRN. :PT.nome-libreria :PD.Il nome della libreria di emissione. :EPARML. :EHELP. .*--------------------------------------------------------------------- :HELP name='CMD/fromtime'. :H3.Starting date and time (FROMTIME) :P.Data e ora di inizio :P.Specifica la data e l'ora della prima voce di giornale da convertire per la rappresentazione esterna. .*----------------------------- :P.:HP2.Elemento 1: Data di inizio:EHP2. :PARML. :PARML. :PT.data-inizio :PD.Specificare la data di avvio. La prima voce trovata con la data e ora iniziale specificate o con data e ora immediatamente successive sarà il punto iniziale dell'intervallo di voci da convertire per la rappresentazione esterna. :EPARML. :EPARML. .*----------------------------- :P.:HP2.Elemento 2: Ora di inizio:EHP2. :PARML. :PARML. :PT.ora-inizio :PD.Specificare l'orario di inizio. La prima voce trovata con la data e ora iniziale specificate o con data e ora immediatamente successive sarà il punto iniziale dell'intervallo di voci da convertire per la rappresentazione esterna. :P.È possibile specificare l'orario nel formato 24 ore con o senza separatore: :PARML. :P.:HP2.o:EHP2. Senza un separatore dell'ora, specificare una stringa di 4 o 6 cifre (hhmm o hhmmss) dove hh indica le ore, mm i minuti e ss i secondi. :P.:HP2.o:EHP2. Con un separatore dell'ora, specificare una stringa di 5 o 8 cifre in cui per separare le ore, i minuti ed i secondi viene utilizzato il separatore specificato per il lavoro. Se si immette questo comando dalla riga comandi, la stringa deve essere racchiusa tra apici. Se viene utilizzato un separatore dell'ora diverso da quello specificato per il lavoro, questo comando avrà esito negativo. :EPARML. :EPARML. :EPARML. .*----------------------------- :EHELP. .*------------------------------------------------------------------------------ :HELP name='CMD/totime'. :H3.Ending date and time (TOTIME) :P.Data e ora di fine :P.Specifica la data e l'ora dell'ultima voce di giornale da convertire per la rappresentazione esterna. .*----------------------------- :P.:HP2.Elemento 1: Data di fine:EHP2. :PARML. :PARML. :PT.data-fine :PD.Specificare la data finale. La prima voce trovata con la data e ora finale specificate o con data e ora immediatamente precedenti sarà il punto finale dell'intervallo di voci da convertire per la rappresentazione esterna. :EPARML. :EPARML. .*----------------------------- :P.:HP2.Elemento 2: Ora di fine:EHP2. :PARML. :PARML. :PT.ora-fine :PD.Specificare l'orario di fine. La prima voce trovata con la data e ora finale specificate o con data e ora immediatamente precedenti sarà il punto finale dell'intervallo di voci da convertire per la rappresentazione esterna. :P.È possibile specificare l'orario nel formato 24 ore con o senza separatore: :PARML. :P.:HP2.o:EHP2. Senza un separatore dell'ora, specificare una stringa di 4 o 6 cifre (hhmm o hhmmss) dove hh indica le ore, mm i minuti e ss i secondi. :P.:HP2.o:EHP2. Con un separatore dell'ora, specificare una stringa di 5 o 8 cifre in cui per separare le ore, i minuti ed i secondi viene utilizzato il separatore specificato per il lavoro. Se si immette questo comando dalla riga comandi, la stringa deve essere racchiusa tra apici. Se viene utilizzato un separatore dell'ora diverso da quello specificato per il lavoro, questo comando avrà esito negativo. :EPARML. :EPARML. :EPARML. .*----------------------------- :EHELP. .*------------------------------------------------------------------------------ :HELP name='CMD/rcvrng'. :H3.Range of journal receivers (RCVRNG) :P.Gamma ricevitori di giornale :P.Specifica il ricevitore di giornale iniziale (primo) e quello finale (ultimo) (l'intervallo dei ricevitori) che contengono le voci da convertire per l'emissione. Il sistema si avvia con il ricevitore di giornale iniziale (come specificato dal primo valore) e procede attraverso la catena ricevitori fino all'elaborazione del ricevitore finale (come specificato dall'ultimo valore). :NOTE. Se viene superato il numero massimo di ricevitori nell'intervallo (2045), si verifica un errore e non viene convertita alcuna voce di giornale. :ENOTE. .*----------------------------- :P.:HP2.Valori singoli::EHP2. :PARML. :PARML. :PT.:PK DEF.*CURCHAIN:EPK. :PD.Viene utilizzata la catena dei ricevitori di giornale che comprende il ricevitore collegato correntemente quando si avvia la conversione delle voci di giornale. Questa catena non attraversa un'interruzione nella catena. Se si verifica un'interruzione nella catena, l'intervallo dei ricevitori va dall'interruzione più recente nella catena fino al ricevitore correntemente collegato quando si avvia la conversione delle voci di giornale. :PT.*CURRENT :PD.Viene utilizzato il ricevitore di giornale correntemente collegato quando si avvia la conversione delle voci di giornale. :PT.*CURAVLCHN :PD.Viene utilizzata la catena dei ricevitori di giornale che comprende il ricevitore collegato quando si avvia la conversione delle voci di giornale. Questa catena non attraversa un'interruzione nella catena. Se si verifica un'interruzione nella catena, l'intervallo dei ricevitori va dall'interruzione più recente nella catena fino al ricevitore correntemente collegato quando si avvia la conversione delle voci di giornale. Se nella catena ricevitori esistono dei ricevitori giornale che non sono disponibili perché erano stati salvati con l'opzione di memoria liberata, questi ricevitori giornale verranno ignorati e le voci verranno convertite iniziando con il primo ricevitore giornale disponibile nella catena. :EPARML. :EPARML. .*----------------------------- :P.:HP2.Elemento 1: Ricevitore giornale iniziale:EHP2. :PARML. :P.:HP2.Qualificativo 1: Ricevitore giornale iniziale:EHP2. :PARML. :PARML. :PT.nome-ricevitore :PD.Specificare il nome del primo ricevitore di giornale le cui voci vengono convertite per l'emissione. :EPARML. :EPARML. :P.:HP2.Qualificativo 2: Libreria:EHP2. :PARML. :PARML. :PT.:PK DEF.*LIBL:EPK. :PD.Viene effettuata la ricerca in tutte le librerie dell'elenco librerie del lavoro fino a quando non viene individuata la prima corrispondenza. :PT.*CURLIB :PD.Per individuare il ricevitore di giornale viene usata la libreria corrente per il lavoro. Se per il lavoro non è specificata alcuna libreria corrente, viene usata la libreria QGPL. :PT.nome-libreria :PD.Specificare la libreria su cui si trova il ricevitore di giornale. :EPARML. :EPARML. :EPARML. .*----------------------------- :P.:HP2.Elemento 2: Ricevitore giornale finale:EHP2. :PARML. :P.:HP2.Valori singoli::EHP2. :PARML. :PARML. :PT.:PK DEF.*CURRENT:EPK. :PD.Viene utilizzato il ricevitore di giornale correntemente collegato quando si avvia la conversione delle voci di giornale. :EPARML. :EPARML. :P.:HP2.Qualificativo 1: Ricevitore giornale finale:EHP2. :PARML. :PARML. :PT.nome-ricevitore :PD.Specificare il nome dell'ultimo ricevitore di giornale le cui voci vengono convertite per l'emissione. :EPARML. :EPARML. :P.:HP2.Qualificativo 2: Libreria:EHP2. :PARML. :PARML. :PT.:PK DEF.*LIBL:EPK. :PD.Viene effettuata la ricerca in tutte le librerie dell'elenco librerie del lavoro fino a quando non viene individuata la prima corrispondenza. :PT.*CURLIB :PD.Per individuare il ricevitore di giornale viene usata la libreria corrente per il lavoro. Se per il lavoro non è specificata alcuna libreria corrente, viene usata la libreria QGPL. :PT.nome-libreria :PD.Specificare la libreria su cui si trova il ricevitore di giornale. :EPARML. :EPARML. :EPARML. .*----------------------------- :EHELP. .*--------------------------------------------------------------------- :EPNLGRP. //ENDSRC /*----------------------------------------------------------------------------*/ //DATA FILE(JDWLJRNT2) FILETYPE(*SRC) ENDCHAR('//ENDSRC') * Scarica file da journal. SpecType2 * Claudio Neroni 29/06/2006 Creato. *---------------------------------------------------------------- * Definisce i campi presenti nell'output di un DSPJRN *TYPE2 * eccetto il campo dati finale. * Il presente file non va compilato se non per prova o controllo * e l'oggetto creato va buttato, anche se la sua presenza * non disturba. * In coda a questi e in una copia temporanea, * verranno aggiunti i campi specifici di un file da scaricare. * Ai campi fissi sono applicate alcune correzioni di edit * che non alterano il tracciato originale (IMPORTANTE). *---------------------------------------------------------------- A REF(QADSPJR2) A R T2 * * Campi originali del file di emissione del DSPJRN TYPE 2. A JOENTL R EDTCDE(K) A JOSEQN R EDTCDE(K) A JOCODE R A JOENTT R A JODATE R 6S 0 EDTCDE(Y) A JOTIME R EDTWRD('0 : : ') A JOJOB R A JOUSER R A JONBR R EDTCDE(L) A JOPGM R A JOOBJ R A JOLIB R A JOMBR R A JOCTRR R EDTCDE(K) A JOFLAG R A JOCCID R EDTCDE(K) A JOUSPF R A JOSYNM R A JOINCDAT R A JOMINESD R A JORES R * * La specifica originale campo dati viene sostituita * dal tracciato del file in esame. A** JOESD R * * Esempio del tracciato dei campi che la procedura aggiunge. A** DMREFE R REFFLD(DMREFE + A** PPSSCTOBJ/IPDEMAG) * * Seguono i campi aggiunti in sostituzione del campo dati * e che ne interpretano il contenuto, ricavati da un DSPFFD * del file in estrazione. * //ENDSRC //ENDBCHJOB