Programma di esempio CHGDAT2.PRT |
; CHGDAT2
;
; Programma per Proteus
;
; (C) 1998-2003 Simone Zanella Productions
;
; Cambia per ogni linea la prima data trovata nel formato 'gg/mm/aa[aa]'
; con 'gg mmm aaaa'; la data deve essere separata con almeno uno dei
; caratteri in Seps (che deve comunque includere ' ').
; Questo programma è simile a chgdate.prt, ma utilizza le funzioni di
; libreria sulle date ed il tokenizzatore dinamico, per velocizzare le
; operazioni.
; Inizializza le variabili
FUNCTION ONSTART()
IF STREQ(ARGV(3), "..")
CONSOLELN "Sintassi: " ARGV(1) " " ARGV(2) " sorgente destinazione"
CONSOLELN ""
CONSOLELN "Scopo: cambia le date numeriche in formato alfanumerico"
ABORT 0
FI
_Seps = " ,;:.()[]<>-{}"
_MONTHS = "Gen Feb Mar Apr Mag Giu Lug Ago Set Ott Nov Dic"
RETURN
TKH = TOKNEW(L, Seps)
; Salva il numero di token sulla linea
NTK = TOKNUM(TKH)
NewL = L
; Per ciascun token..
FOR CurTok = 1 TO NTK
PL = TOKGET(TKH, CurTok)
; Il token è una data?
IF ISDATE(PL)
; Trova dove si trova la data in NewL
P = TOKPOS(TKH, CurTok)
; Sostituisce la data in NewL
NewL = INSERT(DELETE(NewL, P, STRLEN(PL)), P, \
; Nuova data
PADL(DAY(PL), 2, " ") " " CMONTH(PL) " " YEAR(PL))
; Esce dal FOR, poiché la posizione di tutti i token seguenti è cambiata.
BREAK
FI
NEXT
TOKFREE(TKH)
PRINTLN NewL