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