Program reference database (JREFDBF)

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

Cmd JREFDBF Program reference database > Database riferimenti programmi

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

Elenco dei file fisici generati

La procedura documenta gli oggetti presenti nell'ambiente tramite il contenuto di quattro file fisici che vengono riempiti preliminarmente dal comando corrente.

JREFDBF1
Contiene l'output di un comando DSPOBJD di tutti gli oggetti presenti nelle librerie dell'ambiente.

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.

JREFDBF2
Contiene l'output di un comando DSPPGMREF di tutti gli oggetti presenti nelle librerie dell'ambiente.

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.

JREFDBF3
Contiene l'output di un comando DSPDBR di tutti gli oggetti presenti nelle librerie dell'ambiente.

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.

JREFDBF9
Contiene la trascrizione normalizzata dei file JREFDBF2 e JREFDBF3 ottenuta tramite i gia' menzionati programmi JREFDBFX e JREFDBFY.
Top

Parameters

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

Reference library (REFLIB) > Libreria riferimenti

Nome della libreria nella quale giaceranno i dati estratti dal comando nel run corrente.

Valori permessi:

nome-libreria
Il nome della libreria riferimenti.

I dati per l'esplosione e l'implosione vengono caricati nella libreria indicata.

Valori speciali:

REFALL
I dati per l'esplosione e l'implosione vengono caricati nella libreria REFALL.

Il nome REFALL si usera' in accoppiamento con la lista librerie *ALL

Top

Environment library list (ENVLIBL) > Lista librerie ambiente

Lista librerie dell'ambiente da cui estrarre le informazioni.

Valori permessi:

*ALLUSR
Tutte le librerie utente del sistema esistenti al momento dell'esecuzione del corrente comando di generazione.
*LIBL
Tutte le librerie in lista librerie al momento dell'esecuzione del corrente comando di generazione.

Prima dell'esecuzione *LIBL occorrera' impostare una lista librerie adatta a definire l'ambiente che interessa.

*USRLIBL
Tutte le librerie nella parte utente della lista librerie al momento dell'esecuzione del corrente comando di generazione.

Prima dell'esecuzione *USRLIBL occorrera' impostare una lista librerie adatta a definire l'ambiente che interessa.

*ALL
Tutte le librerie del sistema esistenti al momento dell'esecuzione del corrente comando di generazione.
Top

Use of QSYS Object Description (QSYSOBJD) > Uso di descrizione oggetti QSYS

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:

*USEOLD
Se necessario, include nella descrizione oggetti l'estrazione conservata in apposito file senza riottenerla ad ogni esecuzione.
*CRTNEW
Ricrea ed utilizza detta estrazione durante l'esecuzione corrente facendosi carico del relativo tempo per riottenerla quando, per cambi avvenuti in QSYS, se ne ravvisi la necessita'.
Top

Esempi d'uso del comando JREFDBF Program reference database

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 informativi e di completamento

Messaggi *INFO e *COMP

JRF0102
1->Verifica esistenza database JREFDBF in libreria &1
JRF0103
2->Display Program Reference &1 in corso
JRF0104
3->Display Object Description &1 in corso
JRF0105
4->Display Data Base Relation &1 in corso
JRF0106
5->Costruisce reference &1 in libreria &2
JRF0191
6->Creato reference &1 in libreria &2

Messaggi di errore

Messaggi *DIAG seguiti da *ESCAPE CPF0001

Nessun messaggio.

Messaggi *DIAG NON seguiti da *ESCAPE CPF0001

JRF0121
Intercettato CPF9999 durante DSPPGMREF: vedi joblog.
Top