Where allowed to run: All environments (*ALL) Threadsafe: No |
Parameters Examples Error messages |
http://www.neroni.it/NERONI2/JREFEXP.NERONI2.HTML
Esplode un programma elencando i programmi chiamati e gli oggetti usati.
Il comando permette di:
1) vedere,
2) stampare,
3) scaricare in un file di emissione
un elenco annidato degli oggetti chiamati in cascata dal programma di partenza.
I comandi JREFEXP e JREFIMP possono essere eseguiti solo dopo aver generato una libreria con il comando preparatorio JREFDBF.
La libreria di informazioni estratta dal comando JREFDBF con il nome indicato nel parametro REFLIB va comunicata ai comandi JREFEXP e JREFIMP tramite il parametro omonimo REFLIB.
Si elencano le intestazioni di colonna della stampa.
R = Figlio gia' presente in lista chiamata G = Figlio gia' sviluppato Row = Numero progressivo di riga Level = Grafismo rappresentativo del livello di annidamento Father = Padre ovvero nome del chiamante dell'oggetto indicato sulla stessa riga come figlio Type = Tipo oggetto del padre Attrib = Attributo del padre Son = Figlio ovvero nome del chiamato dall'oggetto indicato sulla stessa riga come padre Type = Tipo oggetto del figlio Attrib = Attributo del figlio Usag = Uso del figlio all'interno del padre I = Input O = Output U = Update ? = Sconosciuto dbr = relazione proveniente dal Display Data Base Relation Text = Descrizione del figlio
Nel file di emissione si aggiungono su ogni riga i 100 campi che contengono la lista di chiamata dell'oggetto.
Nota:Il comando sopporta 100 livelli di annidamento ma si tratta di un limite arbitrario che puo' essere incrementato con tre modeste manipolazione di due sorgenti.
Nel primo sorgente RPGLE JREFEXPD:
1) Variazione di una costante che determina il numero di elementi delle schiere di servizio della lista di chiamata.
2) Schiera dei grafismi.
Nel secondo sorgente CMD JREFEXP:
3) Aumento del range di valori per la keyword MAXLVL e del default.
I numerosi parametri in coda al comando hanno tutti, a vario titolo, il compito di limitare la lista in emissione per facilitarne la lettura.
Top |
Keyword | Description | Choices | Notes |
---|---|---|---|
OBJ | Object name | Name | Required, Positional 1 |
OBJTYPE | Object type | *PGM, *DTAARA, *FILE, *SRVPGM, *ALL | Optional, Positional 2 |
DEVELOP | Development type | *ALL, *PGM | Optional, Positional 3 |
TOLAST | To last elements only | *NO, *YES | Optional, Positional 4 |
SEEN | Already seen | *YES, *NO | Optional, Positional 5 |
PGMATR | Program attribute | Values (up to 20 repetitions): Character value, BA, CB, CL, DF, QR, RP | Optional, Positional 6 |
OBJATR | Object attribute | Values (up to 50 repetitions): Character value, PRTF, DSPF, PF, LF, RPG, CLP, RPGLE, CLLE, BLANK, BLANKF, TAPF | Optional, Positional 7 |
MAXLVL | Max level | 1-100, 100 | Optional, Positional 8 |
INPUT | Input use | *YES, *NO | Optional, Positional 9 |
OUTPUT | Output use | *YES, *NO | Optional, Positional 10 |
UPDATE | Update use | *YES, *NO | Optional, Positional 11 |
UNKNOWN | Unknown use | *YES, *NO | Optional, Positional 12 |
DBREL | Database relation use | *NO, *YES, *FATHER | Optional, Positional 13 |
NOUSE | No use | *YES, *NO | Optional, Positional 14 |
REFLIB | Reference library | Name, REFALL | Optional, Positional 15 |
OUTFILE | Output file | Qualified object name | Optional, Positional 16 |
Qualifier 1: Output file | Name, JREFDBF4T | ||
Qualifier 2: library | Name, QTEMP | ||
RQS | Sends final message request | *YES, *NO | Optional, Positional 17 |
Top |
Nome dell'oggetto da cui parte l'esplosione.
Il valore e' obbligatorio.
Valori permessi:
Top |
Tipo dell'oggetto da cui parte l'esplosione.
Valori permessi:
Top |
Definisce il tipo di sviluppo da stampare.
Si puo' ottenere la lista di tutti gli oggetti oppure la lista dei soli programmi.
Valori permessi:
Top |
Sceglie se stampare solo le righe degli oggetti senza altri oggetti dipendenti.
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti gia' visti in una riga precedente nel corso dell'esplosione in corso.
Le righe gia' viste sono comunque dotate del flag "G".
Valori permessi:
Top |
Permette di scegliere quelle righe di emissione nelle quali il padre, per ora sempre un programma, ha un attributo che inizia con le due lettere qui indicate. Cosi', se si vogliono i programmi RPG o RPGLE o RPG38, si richiede "RP".
Permessa lista fino a 20 ricorrenze.
Valori permessi:
Valori speciali:
I suffissi seguenti sono solo un suggerimento tra i molti possibili.
Top |
Permette di scegliere quelle righe di emissione nelle quali il figlio ha un attributo che coincide con quello qui indicato. Cosi', se si vogliono i programmi RPGLE, si richiede "RPGLE".
Permessa lista fino a 50 ricorrenze.
Valori permessi:
Valori speciali:
Gli attributi seguenti sono solo un suggerimento tra i molti possibili.
Top |
Numero del massimo livello da raggiungere nell'esplosione.
Si assegna il livello zero all'oggetto da esplodere; si assegna il livello uno agli oggetti chiamati dall'oggetto da esplodere; si assegna il livello due agli oggetti chiamati da quelli di livello uno; cosi' via per tutti gli oggetti chiamati in cascata.
Ogni esplosione ha un proprio numero massimo di chiamate che vengono tutte documentate nell'esplosione.
Il parametro corrente provoca l'arresto dell'esplosione quando viene raggiunto il livello richiesto invece che il livello massimo vero. Il comportamento dell'esplosione e' cioe' uguale a quello che si avrebbe se gli oggetti raggiunti dall'esplosione al livello richiesto non eseguissero nessuna chiamata.
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti elaborati in immissione.
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti elaborati in emissione.
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti elaborati in sovrascrittura (update).
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti elaborati in modo sconosciuto.
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti elaborati tramite le relazioni di database.
Valori permessi:
Top |
Sceglie se emettere le righe degli oggetti senza alcuna indicazione di utilizzo.
Valori permessi:
Top |
Nome della libreria nella quale giacciono i riferimenti da usare per l'esplosione precedentemente preparati con il comando JREFDBF.
Valori permessi:
Valori speciali:
Top |
Nome del file fisico ricevente le righe dell'esplosione.
Se il file di emissione manca, viene creato.
Se il file di emissione preesiste, tramite il level check viene controllato che si tratti di un file generato dal tool corrente.
Valori permessi:
Valori speciali:
Nome della libreria in cui risiede il file fisico ricevente le righe dell'esplosione.
Valori permessi:
Valori speciali:
Top |
Opzione di Invio/NonInvio di messaggi finali di richiesta in joblog.
Valori permessi:
Top |
Esempio zero: Crea ambiente di prova
Si costruiscono i programmmi e i file di prova grazie alla stringa "JREFT." (presente come membro nel file sorgente del tool) tramite il comando:
> SBMDBJOB FILE(NERONI2/JREF) MBR(JREFT.)
In tal modo si dispone di due librerie:
Libreria Tipo Testo JREFT *TEST Reference test. JREF* cmds test REFJREFT *TEST Reference database: *USRLIBL
La prima libreria contiene un gruppo di oggetti JREFT* dotati di sorgenti anch'essi presenti nel file sorgente del tool e concepiti esclusivamente per sperimentare la procedura JREF:
Oggetto Tipo Attributo Testo JREFTA *PGM RPGLE Inp:11 Cal:B,C JREFTB *PGM RPGLE Upd:12,21 Cal:C,D JREFTC *PGM RPGLE Out:9(1+2) Upd:dtaara JREFTD *PGM CLLE Cal:B JREFT1 *FILE PF-DTA Phy1 JREFT11 *FILE LF Lgl11 JREFT12 *FILE LF Lgl12 JREFT2 *FILE PF-DTA Phy2 JREFT21 *FILE LF Lgl21 JREFT22 *FILE LF Lgl22 JREFT9 *FILE LF Lgl9(phy1+2)
La seconda libreria e' ottenuta dalla prima mediante la sequenza di comandi contenuta nella detta stringa "JREFT.":
/* Imposta la lista librerie. CHGLIBL LIBL(QTEMP JREFT QGPL) /* Prepara il database riferimenti. JREFDBF REFLIB(REFJREFT) ENVLIBL(*USRLIBL)
In quest'ultima libreria REFJREFT stanno i file necessari a esplosione ed implosione degli oggetti della prima libreria, in particolare il file dei collegamenti JREFDBF9 contenente una sintesi di display program reference e display database relation sugli oggetti della libreria "JREFT".
Esempio 1: Esplode un programma
Chiama l'esplosione di default del programma di piu' alto livello dell'ambiente di prova illustrato nell'esempio zero. Si osserva il richiamo REFLIB(REFJREFT) alla libreria di riferimento. Si riportano comandi e log.
> JREFEXP OBJ(JREFTA) REFLIB(REFJREFT) > /**/RUNQRY QRYFILE((QTEMP/JREFDBF4T)) RCDSLT(*YES) > /**/JTOCSV FROMFILE(QTEMP/JREFDBF4T) TODIR('/webufhtml/NERONI/XX')
Questo comando genera una stampa riportata al link www.neroni.it/NERONI2/JREFEXP01.pdf e un corrispondente file di emissione JREFDBF4T in libreria temporanea.
Si osservano i messaggi di invito all'esame del file di emissione tramite query e tramite scarico su IFS.
Sulla stampa in prima colonna si osserva il flag "R" che individua una chiamata ricorsiva dentro lo sviluppo corrente che, se percorsa, terminerebbe in errore l'esecuzione del flusso di programmi documentato.
Esempio 2: Come esempio 1 ma con opzione DBREL(*FATHER)
Esegue la stessa esplosione dell'esempio 1 ma richiedendo che l'uso di un file logico venga riportato sui fisici richiamati. Si riporta il solo comando mentre il log resta lo stesso dell'esempio 1.
> JREFEXP OBJ(JREFTA) DBREL(*FATHER) REFLIB(REFJREFT)
Questo comando genera una stampa riportata al link www.neroni.it/NERONI2/JREFEXP02.pdf sulla quale si osservano le righe dei file fisici usati tramite logico che non evidenziano piu' l'uso "dbr" ma l'uso ereditato dal logico che li richiama.
Esempio 3: Come esempio 2 ma con opzione OBJATR(PF DTAA)
Esegue la stessa esplosione dell'esempio 2 ma richiedendo di elencare solo i figli con attributo PF (file fisici) o DTAA (aree dati). Si riporta il solo comando mentre il log resta lo stesso degli esempi 1 e 2.
> JREFEXP OBJ(JREFTA) OBJATR(PF DTAA) DBREL(*FATHER) REFLIB(REFJREFT)
Questo comando genera una stampa riportata al link www.neroni.it/NERONI2/JREFEXP03.pdf sulla quale si osservano le righe gia' viste nell'esempio 2 ma solo quelle che portano gli attributi richiesti.
Il file di emissione di questo esempio mette a disposizione l'elenco di tutti i file e le aree dati usati dalla chiamata al programma iniziale.
Top |
Messaggi *INFO e *COMP
Nessun messaggio.
Messaggi *DIAG seguiti da *ESCAPE CPF0001
Oltre ai messaggi elencati, restituisce come diagnostici i messaggi di rilascio imprevisti eventualmente ricevuti.
Top |