Gestione tracce

From SageDev KB
Jump to navigation Jump to search

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