Newsgroup: it.comp.lang.vo-clipper
Titolo: Calcolare il giorno di Pasqua

Salve a tutti
Devo inserire in un programma le festività infrasettimanali.
Qualcuno sa come si fa a calcolare la Pasqua e di conseguenza il lunedì
dell'Angelo nei vari anni.
grazie a Tutti
Giuliano Zampirolo
zamp...@tin.it

 dell'Angelo nei vari anni.
Eccoti una funzione in Clipper. Adattala alle tue esigenze.
FUNCTION EASTER( xYear )
    LOCAL nYear := IF( VALTYPE( xYear ) = "D", YEAR( xYear ), xYear )
    LOCAL a := INT( nYear % 19 )
    LOCAL b := INT( nYear / 100 )
    LOCAL c := INT( nYear % 100 )
    LOCAL d := INT( b / 4 )
    LOCAL e := INT( b % 4 )
    LOCAL f := INT( ( b + 8 ) / 25 )
    LOCAL g := INT( ( b - f + 1 ) / 3 )
    LOCAL h := INT( ( 19 * a + b - d - g + 15 ) % 30 )
    LOCAL i := INT( c / 4 )
    LOCAL k := INT( c % 4 )
    LOCAL l := INT( ( 32 + e + e + i + i - h - k ) % 7 )
    LOCAL m := INT( ( a + 11 * h + 22 * l ) / 451 )
    LOCAL n := h + l - 7 * m + 114
    LOCAL nDay   := INT( n % 31 ) + 1
    LOCAL nMonth := INT( n / 31 )
    RETURN CTOD( STRZERO( nDay, 2 ) + "/" + STRZERO( nMonth, 2 ) + "/" +
RIGHT( STR( nYear ), 2 ) )
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 ha scritto nel
messaggio news:3C57CDD4...@emagsoftware.it...


 Eccoti una funzione in Clipper. Adattala alle tue esigenze.
<snip>
caro Enrico,
memore del fatto che l'analoga funzione presente in *VOLIB25* mi dava
risultati strani, ho provato la tua funzione, risultati:
///prova con VOLIB25
FT_Easter(1999) = 04/04/99
FT_Easter(2000) =   /  /
FT_Easter(2001) = 04/09/2001
FT_Easter(2002) = 04/01/2002
///Funzione EMG
Easter(1999) = 30/04/1999
Easter(2000) = 15/04/2000
Easter(2001) = 08/04/2001
Easter(2002) =  /  /
come lo spieghi.
OT
colgo l'occasione x suggerirvi un bel libro sul tempo ->  *La truffa del
Tempo* di Armando Torno, Oscar Saggi Mondadori. Vi si spiega come sono nati
i calendari ed il ns modo di calcolare il tempo.
FrancoSignore

Scusa l'omissione...
provato con VO25 e Win2000
ciao
franco

 come lo spieghi.
Che hai fatto qualche casino! :-))) Ecco i risultati da me ottenuti con
le stesse tue quattro chiamate:
04/04/1999
23/04/2000
15/04/2001
31/03/2002
Controlla bene...


 le stesse tue quattro chiamate:
ho riprovato...
con clip53 e' Ok, ma con VO25 no.
x il 2002 mi da  "  /  /  "
 confermo i problemi con FT_Easter()
franco

 ha scritto nel messaggio news:...

enrico,
 Mi smentisco da solo!!!!!
Chiamavo la TUA Funzione (x Clipper) e non quella che avevo modificato x
VO!!!!
infatti (lo scrivo x ricordarmelo)  INT( nNum) in VO e' Integer( nNum) !!!!
e non sono la stessa cosa!!!!
INT e' l'operatore... Mah!
ciao
franco


Ah, scusa. Allora avevo capito male io. Pensavo avessi provato a
compilare la mia funzione con il Clipper (che poi non è mia ma non
ricordo proprio dove la trovai). Purtroppo non posso fare la prova, non
avendo VO, ma secondo me potrebbe dipendere dal fatto che alla fine
costruisco la stringa-data in un certo formato (gg/mm/aa) mentre magari
VO se ne aspetta un'altro. Vedi un po' e fammi sapere...


 VO!!!!
Ok, tutto č bene ciň che finisce bene. :-)
