Download file from journal (JDWLJRN)

Where allowed to run: All environments (*ALL)
Threadsafe: No
Parameters
Examples
Error messages

Cmd JDWLJRN (alias: JJRN) Download file from journal

> Scarica file da giornale

http://www.neroni.it/NERONI2/JDWLJRN.NERONI2.HTML

Scarica un file da giornale interpretando il campo dati.

Interfaccia il comando DSPJRN, nativo del sistema, che permette lo scarico da un giornale delle immagini di un file dati.

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 sorgente estemporaneo dal quale compila un file di emissione ad hoc che, in luogo dell'unico campo dati, contiene in coda al tracciato di scarico tutti i campi del file originale correttamente esposti.

Il nome del file di emissione viene ottenuto dal nome del file dati prefissato con il carattere J per evitare il rischio di ricalcare un file di database.

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 JDWLJRN...

Il comando e' quindi una interfaccia verso il comando di sistema DSPJRN del quale riproduce e al quale passa un sottoinsieme di parametri:

1) per limitare la quantita' di record emessi;

2) per leggere eventuali catene di ricevitori interrotte.

Il sottoinsieme di parametri e' stato ritenuto sufficiente ma potra' facilmente essere implementato in caso di necessita' riproducendone altri con lo stesso significato e funzione degli originali di DSPJRN.

Top

Parameters

Keyword Description Choices Notes
FILE File to download Qualified object name Required, Positional 1
Qualifier 1: File to download Name
Qualifier 2: library Name, *LIBL
JRN Journal Single values: *FILE
Other values: Qualified object name
Optional, Positional 2
Qualifier 1: Journal Name
Qualifier 2: library Name, *LIBL
OUTLIB Output library Name, JDWLJRN Optional, Positional 3
FROMTIME Starting date and time Element list Optional, Positional 4
Element 1: Starting date Date
Element 2: Starting time Time
TOTIME Ending date and time Element list Optional, Positional 5
Element 1: Ending date Date
Element 2: Ending time Time
RCVRNG Range of journal receivers Single values: *CURCHAIN, *CURRENT, *CURAVLCHN
Other values: Element list
Optional, Positional 6
Element 1: Starting journal receiver Qualified object name
Qualifier 1: Starting journal receiver Name
Qualifier 2: library Name, *LIBL, *CURLIB
Element 2: Ending journal receiver Single values: *CURRENT
Other values: Qualified object name
Qualifier 1: Ending journal receiver Name
Qualifier 2: library Name, *LIBL, *CURLIB
JOB Job name Single values: *ALL
Other values: Qualified job name
Optional, Positional 7
Qualifier 1: Job name Name
Qualifier 2: Job user Name
Qualifier 3: Job number 000000-999999
USRPRF User Name, *ALL Optional, Positional 8
PRTCHG Print change *NO, *YES Optional, Positional 9
Top

File to download (FILE) - name > File da scaricare - nome

Nome del file dati del quale si visionano le entrate loggate nel giornale.

Il valore e' obbligatorio.

Valori permessi:

nome-file
Nome del file dati da visionare.

File to download (FILE) - library > File da scaricare - libreria

Nome della libreria in cui risiede il file dati.

Valori permessi:

*LIBL
Il file dati viene cercato in lista librerie.
nome-libreria
Il file dati viene cercato nella libreria richiesta.
Top

Journal (JRN) - name > Giornale - nome

Nome del giornale contenente le entrate da visionare.

Il valore e' obbligatorio.

Valori permessi:

nome-giornale
Nome del giornale.

Journal (JRN) - library > Giornale - libreria

Nome della libreria in cui risiede il giornale.

Valori permessi:

nome-libreria
Il giornale viene cercato nella libreria richiesta.

Valori speciali:

*LIBL
Il giornale viene cercato in lista librerie.
Top

Output library (OUTLIB) > Libreria di emissione

Nome della libreria nella quale viene posto il file di emissione.

Se la libreria manca, viene creata.

Valori permessi:

JDWLJRN
Il file di emissione viene posto nella libreria JDWLJRN.
nome-libreria
Il nome della libreria di emissione.
Top

Starting date and time (FROMTIME) > Data e ora di inizio

Specifica la data e l'ora della prima voce di giornale da convertire per la rappresentazione esterna.

Elemento 1: Data di inizio

data-inizio
Specificare la data di avvio. La prima voce trovata con la data e ora iniziale specificate o con data e ora immediatamente successive sara' il punto iniziale dell'intervallo di voci da convertire per la rappresentazione esterna.

Elemento 2: Ora di inizio

ora-inizio
Specificare l'orario di inizio. La prima voce trovata con la data e ora iniziale specificate o con data e ora immediatamente successive sara' il punto iniziale dell'intervallo di voci da convertire per la rappresentazione esterna.

E' possibile specificare l'orario nel formato 24 ore con o senza separatore:

o 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.

o 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 avra' esito negativo.

Top

Ending date and time (TOTIME) > Data e ora di fine

Specifica la data e l'ora dell'ultima voce di giornale da convertire per la rappresentazione esterna.

Elemento 1: Data di fine

data-fine
Specificare la data finale. La prima voce trovata con la data e ora finale specificate o con data e ora immediatamente precedenti sara' il punto finale dell'intervallo di voci da convertire per la rappresentazione esterna.

Elemento 2: Ora di fine

ora-fine
Specificare l'orario di fine. La prima voce trovata con la data e ora finale specificate o con data e ora immediatamente precedenti sara' il punto finale dell'intervallo di voci da convertire per la rappresentazione esterna.

E' possibile specificare l'orario nel formato 24 ore con o senza separatore:

o 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.

o 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 avra' esito negativo.

Top

Range of journal receivers (RCVRNG) - Gamma di ricevitori giornale

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.

Valori singoli:

*CURCHAIN
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 piu' recente nella catena fino al ricevitore correntemente collegato quando si avvia la conversione delle voci di giornale.
*CURRENT
Viene utilizzato il ricevitore di giornale correntemente collegato quando si avvia la conversione delle voci di giornale.
*CURAVLCHN
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 piu' 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 perche' 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.

Elemento 1: Ricevitore giornale iniziale

Qualificativo 1: Ricevitore giornale iniziale

nome-ricevitore
Specificare il nome del primo ricevitore di giornale le cui voci vengono convertite per l'emissione.

Qualificativo 2: Libreria

*LIBL
Viene effettuata la ricerca in tutte le librerie dell'elenco librerie del lavoro fino a quando non viene individuata la prima corrispondenza.
*CURLIB
Per individuare il ricevitore di giornale viene usata la libreria corrente per il lavoro. Se per il lavoro non e' specificata alcuna libreria corrente, viene usata la libreria QGPL.
nome-libreria
Specificare la libreria su cui si trova il ricevitore di giornale.

Elemento 2: Ricevitore giornale finale

Valori singoli:

*CURRENT
Viene utilizzato il ricevitore di giornale correntemente collegato quando si avvia la conversione delle voci di giornale.

Qualificativo 1: Ricevitore giornale finale

nome-ricevitore
Specificare il nome dell'ultimo ricevitore di giornale le cui voci vengono convertite per l'emissione.

Qualificativo 2: Libreria

*LIBL
Viene effettuata la ricerca in tutte le librerie dell'elenco librerie del lavoro fino a quando non viene individuata la prima corrispondenza.
*CURLIB
Per individuare il ricevitore di giornale viene usata la libreria corrente per il lavoro. Se per il lavoro non e' specificata alcuna libreria corrente, viene usata la libreria QGPL.
nome-libreria
Specificare la libreria su cui si trova il ricevitore di giornale.
Top

Job name (JOB) > Nome lavoro

Specifica che le voci di giornale da convertire per la rappresentazione esterna sono quelle relative ad un lavoro specificato. Per la rappresentazione esterna vengono convertite solo le voci di giornale del lavoro specificato.

Valori singoli:

*ALL
La conversione delle voci di giornale per la rappresentazione esterna non si limita alle voci di un lavoro specificato.

Altri valori:

identificativo-lavoro
Specificare il nome del lavoro e dell'utente ed il numero del lavoro da utilizzare. E' possibile specificare solo il nome de lavoro o il nome del lavoro e quello dell'utente che viene utilizzato.
nome-lavoro
Specificare il nome lavoro del lavoro.
nome-utente
Specificare il nome utente del lavoro.
numero-lavoro
Specificare il numero del lavoro assegnato dal sistema.
Top

User (USRPRF) > Utente

Specifica che le voci di giornale da considerare per la conversione per la rappresentazione esterna si limitano a quelle create per il nome del profilo utente specificato. Il nome utente identifica il profilo utente sotto il quale e' stato eseguito il lavoro che ha registrato le voci di giornale.

Valori permessi:

nome-utente
Specificare il nome del profilo utente le cui voci di giornale vengono convertite per la rappresentazione esterna.

Valori speciali:

*ALL
La conversione delle voci di giornale non si limita alle voci relative ad un profilo utente specificato.
Top

Print change (PRTCHG) > Stampa modifiche

Esegue una stampa dei record scaricati con l'evidenziazione delle modifiche ai dati.

Valori permessi:

*NO
La stampa NON e' richiesta.
*YES
La stampa e' richiesta.
Top

Esempi d'uso del comando JDWLJRN Download file from journal

Esempio 0: Crea ambiente di test

Si riporta il sorgente della stringa "JDWLJRNZ.", presente nei sorgenti del tool e che crea gli oggetti di test. La stringa utilizza a sua volta dallo stesso file il sorgente del file fisico di test "JDWLJRNZT" e il sorgente "JDWLJRNZF" per il RUNSQLSTM di scrittura nel file fisico di test.

//BCHJOB JOB(JDWLJRNZ.) JOBD(NERONI2/NERONI2) +
  OUTQ(QPRINTS) ENDSEV(60) LOG(4 00 *SECLVL) +
  INQMSGRPY(*DFT)  MSGQ(*USRPRF) CCSID(280)
/* Claudio Neroni 26-10-2017 Creato.         */
/* JDWLJRNZ.                                 */
/*    Download file from journal. Test CrtJs */
/*    Scarica file da giornale. Test CrtJS   */
/*    Prerequisiti: nessuno.                 */
/* Imposta la lista librerie. */
CHGLIBL LIBL(QTEMP QGPL)
ADDLIBLE LIB(NERONI2) POSITION(*AFTER QTEMP)
/* Cancella giornale, ricevitori e file. */
ENDJRNPF FILE(*ALL) JRN(NERONI2/JDWLJRNZ)
DLTJRN JRN(NERONI2/JDWLJRNZ)
DLTJRNRCV JRNRCV(NERONI2/JDWLJRNZ*)
DLTF FILE(NERONI2/JDWLJRNZT)
/* Crea file. */
CRTPF FILE(NERONI2/JDWLJRNZT) SRCFILE(NERONI2/JDWLJRN) +
  SIZE(*NOMAX) LVLCHK(*YES)
/* Crea ricevitore. */
CRTJRNRCV JRNRCV(NERONI2/JDWLJRNZ01) +
  TEXT('Download file from journal. Test receiver')
/* Crea giornale. */
CRTJRN JRN(NERONI2/JDWLJRNZ) JRNRCV(NERONI2/JDWLJRNZ01) +
  TEXT('Download file from journal. Test journal')
/* Avvia giornale sul file. */
STRJRNPF FILE(NERONI2/JDWLJRNZT) JRN(NERONI2/JDWLJRNZ) +
  IMAGES(*BOTH)
/* Scrive dati nel file sotto giornale. */
RUNSQLSTM  SRCFILE(NERONI2/JDWLJRN) SRCMBR(JDWLJRNZF) +
  COMMIT(*NONE)
//ENDBCHJOB

Eseguita la stringa, si ottengono i seguenti tre oggetti in pieno funzionamento.

Oggetto    Tipo    Attrib Testo
JDWLJRNZ01 *JRNRCV        Test receiver
JDWLJRNZ   *JRN           Test journal
JDWLJRNZT  *FILE   PF-DTA Test file

Esempio 1: Scarica nel file di emissione il giornale del file di test

Si riportano comandi e log.

> JDWLJRN FILE(JDWLJRNZT)
  File NERONI2/JDWLJRNZT e' sotto giornale NERONI2/JDWLJRNZ
> /**/RUNQRY QRYFILE((JDWLJRN/JJDWLJRNZT)) RCDSLT(*YES)

Si osservi il comando precompilato di invito all'esame del risultato.

Esempio 2: Come l'esempio 1 ma con giornale terminato

Si riportano comandi e log.

> ENDJRNPF FILE(*ALL) JRN(NERONI2/JDWLJRNZ)
  1 di 1 file hanno terminato la registrazione su giornale.
> JDWLJRN FILE(JDWLJRNZT)
  File NERONI2/JDWLJRNZT non e' sotto giornale NERONI2/JDWLJRNZ
> /**/RUNQRY QRYFILE((JDWLJRN/JJDWLJRNZT)) RCDSLT(*YES)

Si osservi il messaggio che dichiara giornale chiuso.

Top

Messaggi informativi e di completamento

Messaggi *INFO e *COMP

JDJ0112
File &1/&2 e' sotto giornale &3/&4
JDJ0113
File &1/&2 non e' sotto giornale &3/&4
JDJ0151
Inizio stampa modifiche del file &1/&2
JDJ0152
Fine stampa modifiche del file &1/&2

Messaggi di errore

Messaggi *DIAG seguiti da *ESCAPE CPF0001

JDJ0111
File &1/&2 mai scaricato su giornale
JDJ0114
Nessuna voce per file &1/&2 in giornale &3/&4
Top