Gestione tracce
In Sage i file di log sono chiamati tracce, e sono ricercabili attraverso LECTRACE (all'apertura della finestra premere F12 per vedere l'elenco delle tracce).
Nel creare un file di traccia da codice è possibile distinguere se il programma viene eseguito in modalità batch o in modalità interattiva (in genere in modalità batch si fa sempre un log per poter capire se succede qualcosa di anomalo).
In genere in modalità interattiva al termine dell'esecuzione la traccia viene visualizzata automaticamente, altrimenti viene scritta ed è poi recuperabile con LECTRACE. Per capire in che modalità avviene l'esecuzione si utilizza GSERVEUR (vedi Variabili globali).
Nel momento in cui c'è una traccia appena chiusa è possibile visualizzarla all'utente finale con questo comando:
Call LEC_TRACE FROM LECFIC
La variabile globale GTRACE contiene il nome della traccia corrente; se GTRACE="" vuol dire che non c'è traccia in corso.
Esempio:
#Apertura traccia (in modalità interattiva) (GSERVEUR=0 modalità interattiva, =1 modalità batch)
If !GSERVEUR
Call OUVRE_TRACE("Inizio log" -num$(date$)-time$) From LECFIC
Endif
#scrivere un messaggio informativo
Call ECR_TRACE("log"-num$(date$)-time$,0) FROM GESECRAN
#Scrittura errore
Call ECR_TRACE("log"-num$(date$)-time$,1) FROM GESECRAN
#Chiusura e visualizzazione traccia
Call ECR_TRACE("Fine log"-num$(date$)-time$,0) FROM GESECRAN
If !GSERVEUR
Call FERME_TRACE From LECFIC #chiudo traccia
Call LEC_TRACE FROM LECFIC #visualizzo traccia
Call SUP_TRACE FROM LECFIC #cancello la traccia
Endif
Call ECR_TRACE("Testo",N) From GESECRAN[edit]
Valori possibili di N:
- 0 = nero
- 1 = rosso
- -1 = verde
- -2 = blu
Recupero file di errore[edit]
If ERROR>0
Local Clbfile YMSG(8)
YMSG=""
Call ERRORITRACCIA(filpath("TRA",GTRACE,"tra",0),YMSG)
#File traccia import BOM: GTRACE
#errori file traccia: YMSG
Endif
[..]
Subprog ERRORITRACCIA(YFILETRACCIA, YCLB)
Value Char YFILETRACCIA() #YFILETRACCIA = filpath("TRA",GTRACE,"tra",0)
Variable Clbfile YCLB() #carico file di traccia in un clob
Local Char YLINE(250)
Openi YFILETRACCIA,0 Using [YIN] # apro il file YFILETRACCIA in lettura
# read the file
Repeat
Rdseq YLINE Using [YIN]
If left$(YLINE,5)="<0001"
Append YCLB, YLINE + chr$(10)
Endif
Until fstat <> 0
Openi YFILETRACCIA Using [YIN] # chiudo il file
YCLB= chr$(10) + chr$(13) + YCLB
End