At line 1 added 148 lines |
%%(display:none) |
{{{ |
WikiUp |
}}} |
/% |
[{TableOfContents }]\\ |
Scopo di questa /COPY è di gestire una Trace sui programmi: |
Inserita all'interno del codice dei programmi, in zone 'significative' essa 'lascia una traccia' sul file B£TAPL0F multimembro e consente quindi controlli di prestazione dei programmi. |
Esiste poi un servizio di loocUp che ne consente la visualizzazione e interrogazione (CTRL+F9 , scheda __Trace'n play__). |
|
!! STRUTTURA\\ |
! Il file B£TAPL0F\\ |
|
Si tratta di un file multimembro in cui ogni membro assume il nome del codice utente. Questo significa che ogni utente alimenta e gestisce una propria sezione del file. |
Il file viene generato nella libreria SMEUPUIDQ, temporanea... essa viene svuotata giornalmente da un processo schedulato che garantisce il contenimento dei dati. |
Ogni record del file viene identificato da tre elementi (chiave del file): |
|
* Nome della trace (£TAPNom)\\ |
* Ora della trace (£TAPTim)\\ |
* Progressivo automatico\\ |
|
Il nome della trace è una semplice stringa descrittiva. |
L'ora se non impostata è quella all'atto di creazione della trace. Può essere forzata dall'esterno e può non essere un time, questo consente di sovrapporre ogni volta la trace alla sua precedente e di tenere su file solo l'ultima trace generata. |
Se nell'inizializzazione indico nella variabile £LOGTra il valore LOG attivo la stampa forzando per tale trace la condizione della tabella PGM per l'attivazione del log. |
|
! Variabili\\ |
La £TAPD definisce la lista di variabili per la Trace |
|
* DS di input...\\ |
** £TAPDI DS 2500\\ |
** £TAPFU 10 Funzione\\ |
** £TAPME 10 Metodo\\ |
** £TAPNom 30 Nome stampa\\ |
** £TAPTim 10 Tempo/Ora\\ |
** £TAPLiv 30 Livello\\ |
** £TAPTri 30 Tipo riga\\ |
** £TAPTra 30 info extra!\\ |
** £TAPPar 256 Attributi\\ |
** £TAPStr 2048 Contenuto\\ |
* DS di output...\\ |
** £TAPDO DS 12\\ |
** £TAP35 1 Indicatori\\ |
** £TAP36 1 "\\ |
|
Le variabili livello/tipo riga e parametri specificano la tipologia della trace. |
|
Il livello consente di disporre le informazioni in maniera gerarchica. |
Le informazioni a livelli di profondità maggiore specificano le info dei livelli inferiori. |
Sono disponibili 6 livelli in tutto. |
E' previsto il livello '0' per reinizializzare la memoria... va usato alla prima chiamata di aggiunta riga di trace. |
|
Si esemplifica ora come viene generato l'albero dei livelli. |
I nodi vengono agganciati al nodo precedente di livello superiore. |
Si ponga di aver creato la seguente sequenza di livelli: |
|
* aggiunta nodo di Livello 1\\ |
* aggiunta nodo di Livello 2\\ |
* aggiunta nodo di Livello 2\\ |
* aggiunta nodo di Livello 2\\ |
* aggiunta nodo di Livello 1\\ |
* aggiunta nodo di Livello 2\\ |
* aggiunta nodo di Livello 3\\ |
* aggiunta nodo di Livello 3\\ |
* aggiunta nodo di Livello 1\\ |
* aggiunta nodo di Livello 2\\ |
|
Si otterrà quindi: |
|
%%quote |
| 1 2 3 Liv. 1 |
| ______|_______ | | |
| / | \ | | |
| 1.1 1.2 1.3 2.1 3.1 Liv. 2 |
| _____|______ |
| / \ |
| 2.1.1 2.1.2 Liv. 3 |
/% |
---- |
|
__ La struttura dell'albero__ generato non __dipende__ quindi da proprietà di tipo dinamico, ma semplicemente __dall'ordine di sequenza con cui vengono aggiunti i livelli.__ |
|
|
Il tipo riga serve a qualificare la tipologia di informazione. |
|
Gli attributi assegnano a ciascuna riga una proprietà in base alla quale è possibile eseguire dei filtri sui record. |
La sintassi per l'assegnazione di un attributo è la seguente: |
|
EVAL £TAPPar='NomeAttributo'.TpParam=' "Valore" ' |
|
%%quote |
| C EVAL £TAPPar='Scadenza.D8*YYMD="' . |
| C +%TRIM(%EDITW(S5SCAD:' / / '))+'" ' . |
| C +'Pagamento.TAPAG="'+%TRIM(S5COPA)+'" ' |
/% |
---- |
|
- 'NomeAttributo' | stringa che indica il nome a piacere per l'attributo che verrà visualizzato nella scheda del Trace'n play\\ |
- TpParam | Tipo ed eventuale parametro di un oggetto SMEUP corrispondente all'attributo\\ |
- ' "Valore" ' | Stringa racchiusa tra " che contiene il valore dell'attributo associato alla riga\\ |
\\ |
|
E' possibile __specificare più attributi per record__ (come da esempio) accodando gli attributi separati da spazio. |
|
Si indica il |
Livelli, tipo riga e attributi sono poi usati come filtri nel servizio di analisi della trace su LoocUp. |
|
|
!! FUNZIONI e METODI\\ |
|
Di seguito l'elenco dei metodi e delle funzioni previste dalla Trace: |
|
* LOG Gestione Log\\ |
** INI Inizializzazione\\ |
** CLO Chiusura\\ |
** ADD Aggiunta riga di log\\ |
* DEL Cancellazione\\ |
** ALL Tutto\\ |
** NAM Per nome stampa\\ |
** TIM Per ora\\ |
Prima di poter eseguire l'aggiunta di riga di trace bisogna richiamare metodo di inizializzazione che serve a svuotare memoria e reimpostare il puntatore del file. |
Il metodo ADD serve ad aggiungere riga di trace, CLO a chiudere l'emissione della trace. |
I metodi DEL di cancellazione cancellano rispettivamente tutto il contenuto del membro a proprio nome utente, i record con nome stampa indicato e con ora (o valore forzato) impostata! |
|
E chiaro che la visibilità delle azioni suddette sul file è relativa solo al proprio sottomembro utente di accesso. |
|
''Esempi di chiamata:'' |
|
__Creazione/Chiusura/Eliminazione log__ |
%%quote |
| C EVAL £TAPFU='INI' |
| C EVAL £TAPME='NAM' |
| C EVAL £TAPNom=<'DescrizioneLog'> |
| C EXSR £TAP |
/% |
---- |
|
__Aggiunta righe log__ |
%%quote |
| C EVAL £TAPFU='LOG' |
| C EVAL £TAPME='ADD' |
| C EVAL £TAPLiv=<'numerolivello'> |
| C EVAL £TAPTRi=<'TipoRiga'> |
| C EVAL £TAPTra=*BLANKS |
| C EVAL £TAPPar=<'NomeAttributo'.TpParam=' "Valore" '> |
| C EVAL £TAPSTr=<'StringaLog'> |
| C EXSR £TAP |
/% |
---- |