Where allowed to run: All environments (*ALL) Threadsafe: No |
Parameters Examples Error messages |
http://www.neroni.it/NERONI2/JREFDBF.NERONI2.HTML
Estrae da un ambiente i dati necessari per esplodere o implodere gli oggetti contenuti nell'ambiente stesso tramite i comandi JREFEXP (Program reference explode) e JREFIMP (Program reference implode).
Si definisce ambiente l'insieme delle librerie che stanno nella lista librerie intera o nella lista librerie dell'utente mentre vengono eseguite le procedure che si vogliono documentare. Sono comprese sia le librerie programmi che le librerie dati. A rigori vanno comprese anche le librerie indirizzate dalle override di qualunque genere.
Per esplosione si intende la creazione di una lista che parte dall'oggetto scelto ed elenca ogni oggetto usato da questo (chiamato); quindi sotto ogni oggetto elencato (chiamato) si sviluppa l'elenco di tutti gli oggetti usati (chiamati); cosi' via fino a percorrere ed elencare tutti gli oggetti raggiungibili.
Per implosione si intende la creazione di una lista che parte dall'oggetto scelto ed elenca ogni oggetto che lo usa (chiamante); quindi sotto ogni oggetto elencato (chiamante) si sviluppa l'elenco degli oggetti che lo usano (chiamanti); cosi' via fino a percorrere ed elencare tutti gli oggetti raggiungibili.
La lista librerie che definisce l'ambiente documentato deve essere impostata nel lavoro corrente prima di chiamare il comando JREFDBF.
Se l'esplosione o l'implosione riguarderanno non si sa cosa all'interno del sistema, conviene predisporre la libreria riferimenti REFALL con la lista librerie ambiente *ALL.
JREFDBF REFLIB(REFALL) ENVLIBL(*ALL)
Tuttavia, l'esito ricavabile dall'esplosione/implosione su tale REFALL potrebbe essere prolisso e improprio quando esistono nomi uguali per programmi diversi nello stesso database di riferimenti.
Esplosione ed implosione non tengono conto della libreria di residenza degli oggetti per riguardo alla dinamicita' delle CALL.
Ne segue che l'esplosione o l'implosione piu' veritiera per uno specifico ambiente si ottiene su una libreria di riferimento costruita con la lista librerie di quell'ambiente, contenente quindi solo i riferimenti degli oggetti presenti nelle librerie dell'ambiente e in assenza di oggetti omonimi.
Per documentare ambienti diversi occorre quindi usare librerie di emissione diverse.
Per i nomi delle librerie dei riferimenti si consiglia di usare il prefisso "REF" ed un suffisso mnemonicamente legato all'ambiente documentato nel run.
Si nota che un tool capace di fare l'esplosione potrebbe estrarre i dati di riferimento in modo estemporaneo solo dagli oggetti man mano coinvolti.
Un tool che invece vuol eseguire l'implosione necessita di un database riferimenti precostituito perche' la ricerca del "dove e' usato" dovrebbe comunque indagare tutti gli oggetti papabili, rendendo onerosissima l'attivita'.
Note: Non sono ancora presi in considerazione gli interpretati SQL che presumibilmente richiederanno scansioni sui sorgenti eseguibili (scdc).
La procedura documenta gli oggetti presenti nell'ambiente tramite il contenuto di quattro file fisici che vengono riempiti preliminarmente dal comando corrente.
Ad esempio, il corrente JREFDBF esamina l'ambiente *ALLUSR con il comando:
DSPOBJD OBJ(*ALLUSR/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE) OUTFILE(REFALL/JREFDBF1)
Il file permette di attribuire ad ogni oggetto esploso o imploso il testo e le caratteristiche appropriate.
Ad esempio, il corrente JREFDBF esamina l'ambiente *ALLUSR con il comando:
DSPPGMREF PGM(*ALLUSR/*ALL) OUTPUT(*OUTFILE) OBJTYPE(*ALL) OUTFILE(REFALL/JREFDBF2)
Dal file si ricavano i collegamenti tra programmi e altri programmi e tra programmi e file.
Il file JREFDBF2 non viene usato direttamente ma viene trascritto nel file JREFDBF9 tramite il pgm JREFDBFX.
Ad esempio, il corrente JREFDBF esamina l'ambiente *ALLUSR con il comando:
DSPDBR FILE(*ALLUSR/*ALL) OUTPUT(*OUTFILE) OUTFILE(REFALL/JREFDBF3)
Dal file si ricavano i collegamenti tra file fisici e logici.
Il file JREFDBF3 non viene usato direttamente ma viene trascritto nel file JREFDBF9 tramite il pgm JREFDBFY.
Top |
Keyword | Description | Choices | Notes |
---|---|---|---|
REFLIB | Reference library | Name, REFALL | Required, Positional 1 |
ENVLIBL | Environment library list | *LIBL, *USRLIBL, *ALLUSR, *ALL | Optional, Positional 2 |
QSYSOBJD | Use of QSYS Object Description | *USEOLD, *CRTNEW | Optional, Positional 3 |
Top |
Nome della libreria nella quale giaceranno i dati estratti dal comando nel run corrente.
Valori permessi:
I dati per l'esplosione e l'implosione vengono caricati nella libreria indicata.
Valori speciali:
Il nome REFALL si usera' in accoppiamento con la lista librerie *ALL
Top |
Lista librerie dell'ambiente da cui estrarre le informazioni.
Valori permessi:
Prima dell'esecuzione *LIBL occorrera' impostare una lista librerie adatta a definire l'ambiente che interessa.
Prima dell'esecuzione *USRLIBL occorrera' impostare una lista librerie adatta a definire l'ambiente che interessa.
Top |
Modalita' di gestione della descrizione oggetti della libreria di sistema QSYS.
Visto che:
1)i moduli presenti in QSYS sono chiamati dai programmi compilati;
2)durante l'esplosione e l'implosione si fa uso della descrizione di oggetti di QSYS;
3)non si vuole sgangherare l'esplosione con un errore improprio nelle descrizioni riportate sulle righe stampate o scaricate;
4)la descrizione oggetti di QSYS e' faticosa da ottenere;
5)la QSYS non viene spontaneamente estratta quando la lista librerie estratta e' *USRLIBL e *ALLUSR;
ne segue che:
per i due casi *USRLIBL e *ALLUSR si ricorre ad una estrazione separata di QSYS che viene conservata ed eventualmente riutilizzata per risparmiare tempo.
Valori permessi:
Top |
Esempio 1: Genera la libreria riferimenti di tutte le librerie
Chiama la generazione dei riferimenti globale. Si riportano comandi e log.
> JREFDBF REFLIB(REFALL) ENVLIBL(*ALL) 1->Verifica esistenza database JREFDBF in libreria REFALL 2->Display Program Reference *ALL in corso 3->Display Object Description *ALL in corso 4->Display Data Base Relation *ALL in corso 5->Costruisce reference *ALL in libreria REFALL 6->Creato reference *ALL in libreria REFALL
Questo comando genera una libreria riferimenti da menzionare nei comandi JREFEXP (Esplosione) e JREFIMP (Implosione) di oggetti giacenti in qualunque libreria del sistema.
Esempio 2: Genera la libreria riferimenti di una lista librerie
Imposta una lista librerie e chiama la generazione dei riferimenti. Si riportano comandi e log.
> CHGLIBL LIBL(QTEMP NERONI2 QGPL) CURLIB(*CRTDFT) La libreria corrente e' stata modificata in *CRTDFT. E' stato modificato l'elenco librerie. > JREFDBF REFLIB(REFNERONI2) ENVLIBL(*USRLIBL) 1->Verifica esistenza database JREFDBF in libreria REFNERONI2 2->Display Program Reference *USRLIBL in corso 3->Display Object Description *USRLIBL in corso 3->Display Object Description QSYS in corso 4->Display Data Base Relation *USRLIBL in corso 5->Costruisce reference *USRLIBL in libreria REFNERONI2 6->Creato reference *USRLIBL in libreria REFNERONI2
Questo comando genera una libreria riferimenti da menzionare nei comandi JREFEXP (Esplosione) e JREFIMP (Implosione) di oggetti giacenti nella lista librerie impostata subito prima dell'estrazione.
Top |
Messaggi *INFO e *COMP
Messaggi *DIAG seguiti da *ESCAPE CPF0001
Nessun messaggio.
Messaggi *DIAG NON seguiti da *ESCAPE CPF0001
Top |