Program reference explode (JREFEXP)

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

Cmd JREFEXP Program reference explode > Esplode riferimenti programma

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

Parameters

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

Object name (OBJ) > Nome oggetto

Nome dell'oggetto da cui parte l'esplosione.

Il valore e' obbligatorio.

Valori permessi:

nome-oggetto
Nome dell'oggetto di partenza.
Top

Object type (OBJTYPE) > Tipo oggetto

Tipo dell'oggetto da cui parte l'esplosione.

Valori permessi:

*PGM
Programma.
*DTAARA
Area dati.
*FILE
File.
*SRVPGM
Programma di servizio.
*ALL
Tutti i tipi di oggetto.
Top

Development type (DEVELOP) > Tipo sviluppo

Definisce il tipo di sviluppo da stampare.

Si puo' ottenere la lista di tutti gli oggetti oppure la lista dei soli programmi.

Valori permessi:

*ALL
Lista tutti gli oggetti incontrati durante lo sviluppo.
*PGM
Lista solo i programmi incontrati durante lo sviluppo.
Top

To last elements only (TOLAST) > Solo agli ultimi elementi

Sceglie se stampare solo le righe degli oggetti senza altri oggetti dipendenti.

Valori permessi:

*NO
Stampa tutti gli oggetti.
*YES
Stampa solo gli ultimi oggetti.
Top

Already seen (SEEN) > Gia' visti

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:

*YES
Gia' visti compresi.
*NO
Gia' visti esclusi.
Top

Program attribute (PGMATR) > Attributo programma

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:

qualunque-coppia-di-caratteri-alfabetici
Individua un suffisso di attributo.

Valori speciali:

I suffissi seguenti sono solo un suggerimento tra i molti possibili.

lista vuota
Elenca tutti i programmi.
BA
Elenca i programmi il cui attributo inizia con BA, quindi i vari Basic.
CB
Elenca i programmi il cui attributo inizia con CB, quindi i vari Cobol.
CL
Elenca i programmi il cui tipo inizia con CL, quindi i vari Control Language.
DF
Elenca i programmi il cui tipo inizia con DF, quindi i vari Dfu.
QR
Elenca i programmi il cui tipo inizia con QR, quindi i vari Query.
RP
Elenca i programmi il cui tipo inizia con RP, quindi i vari RPG (Report Program Generator).
Top

Object attribute (OBJATR) > Attributo oggetto

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:

qualunque-gruppo-di-caratteri-alfabetici
Individua un attributo oggetto.

Valori speciali:

Gli attributi seguenti sono solo un suggerimento tra i molti possibili.

lista vuota
Elenca tutti gli oggetti.
PRTF
Elenca gli oggetti Printer File.
DSPF
Elenca gli oggetti Display File.
PF
Elenca gli oggetti Physical File.
LF
Elenca gli oggetti Logical File.
RPG
Elenca gli oggetti Report Program Generator.
CLP
Elenca gli oggetti Control Language Program.
RPGLE
Elenca gli oggetti Report Program Generator Integrated Language Environment.
CLLE
Elenca gli oggetti Control Language Integrated Language Environment.
BLANK
Elenca gli oggetti con Attributo in bianco.
BLANKF
Elenca gli oggetti con Attributo in bianco ma Tipo oggetto *FILE.
TAPF
Elenca gli oggetti Tape File.
Top

Max level (MAXLVL) > Livello massimo

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:

100
Raggiunge il massimo livello permesso dal programma.
Da 1 a 100
Raggiunge il livello richiesto come se gli oggetti al livello massimo richiesto non contenessero chiamate ad altri oggetti.
Top

Input use (INPUT) > Uso immissione

Sceglie se emettere le righe degli oggetti elaborati in immissione.

Valori permessi:

*YES
Oggetti in immissione compresi.
*NO
Oggetti in immissione esclusi.
Top

Output use (OUTPUT) > Uso emissione

Sceglie se emettere le righe degli oggetti elaborati in emissione.

Valori permessi:

*YES
Oggetti in emissione compresi.
*NO
Oggetti in emissione esclusi.
Top

Update use (UPDATE) > Uso sovrascrittura

Sceglie se emettere le righe degli oggetti elaborati in sovrascrittura (update).

Valori permessi:

*YES
Oggetti in sovrascrittura compresi.
*NO
Oggetti in sovrascrittura esclusi.
Top

Unknown use (UNKNOWN) > Uso sconosciuto

Sceglie se emettere le righe degli oggetti elaborati in modo sconosciuto.

Valori permessi:

*YES
Oggetti in uso sconosciuto compresi.
*NO
Oggetti in uso sconosciuto esclusi.
Top

Database relation use (DBREL) > Uso relazione database

Sceglie se emettere le righe degli oggetti elaborati tramite le relazioni di database.

Valori permessi:

*YES
Oggetti in uso causa database compresi.
*NO
Oggetti in uso causa database esclusi.
Top

No use (NOUSE) > Uso nessuno

Sceglie se emettere le righe degli oggetti senza alcuna indicazione di utilizzo.

Valori permessi:

*YES
Oggetti senza indicazione d'uso compresi.
*NO
Oggetti senza indicazione d'uso esclusi.
Top

Reference library (REFLIB) > Libreria riferimenti

Nome della libreria nella quale giacciono i riferimenti da usare per l'esplosione precedentemente preparati con il comando JREFDBF.

Valori permessi:

nome-libreria
Il nome della libreria riferimenti.

Valori speciali:

REFALL
I riferimenti vengono cercati nella libreria REFALL.
Top

Output file (OUTFILE) - name > File emissione - nome

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:

nome-file-emissione
Il nome indicato viene usato per il file di emissione.

Valori speciali:

JREFDBF4T
Il file di emissione prende il nome di default.

Output file (OUTFILE) - library > File emissione - libreria

Nome della libreria in cui risiede il file fisico ricevente le righe dell'esplosione.

Valori permessi:

nome-libreria
Il file di emissione viene creato nella libreria richiesta.

Valori speciali:

QTEMP
Il file di emissione viene creato nella libreria temporanea del lavoro.
Top

Sends final message request (RQS) > Manda messaggi finali di richiesta

Opzione di Invio/NonInvio di messaggi finali di richiesta in joblog.

Valori permessi:

*YES
Alla fine dell'esecuzione vengono spediti in joblog uno o piu' messaggi di richiesta non eseguibili ma duplicabili da video comandi o da riga comandi. Tali messaggi sono solitamente comandi pronti ad uso di indagine sul risultato elaborativo o adatti a richiamare un passo successivo dell'elaborazione
*NO
Alla fine dell'esecuzione NON viene spedito in joblog nessun messaggio di richiesta. Questa scelta evita di sporcare la joblog quando il comando viene richiamato consecutivamente molte volte.
Top

Esempi d'uso del comando JREFEXP Program reference explode

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

Messaggi *INFO e *COMP

Nessun messaggio.

Messaggi di errore

Messaggi *DIAG seguiti da *ESCAPE CPF0001

JRF0201
Libreria riferimenti &1 non esiste
JRF0202
File collegamenti JREFDBF91 in libreria riferimenti &1 non esiste
JRF0203
File collegamenti &1/&2 ha level check sbagliato
JRF0204
File descrizioni JREFDBF11 in libreria riferimenti &1 non esiste
JRF0205
File descrizioni &1/&2 ha level check sbagliato
JRF0211
Il file di emissione non puo' avere il nome del prototipo &1
JRF0212
Libreria di emissione &1 non esiste
JRF0213
File di emissione &1/&2 preesiste ma ha level check sbagliato

Oltre ai messaggi elencati, restituisce come diagnostici i messaggi di rilascio imprevisti eventualmente ricevuti.

Top