Implementazioni di algoritmi/Calcolo della Pasqua: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 431:
end.
</source>
 
==[[w:TSQL]]==
<source lang=TSQL>
CREATE FUNCTION [dbo].[CalcolaPasqua]
(
@Anno INT
)
RETURNS DATETIME
AS
BEGIN
DECLARE @a DECIMAL
DECLARE @b DECIMAL
DECLARE @c DECIMAL
DECLARE @d DECIMAL
DECLARE @e DECIMAL
DECLARE @M DECIMAL
DECLARE @N DECIMAL
DECLARE @giorno DECIMAL
DECLARE @mese DECIMAL
DECLARE @pasqua DATETIME
 
IF (@Anno <= 2099) BEGIN
SET @M = 24;
SET @N = 5;
END ELSE IF (@Anno <= 2199) BEGIN
SET @M = 24;
SET @N = 6;
END ELSE IF (@Anno <= 2299) BEGIN
SET @M = 25;
SET @N = 0;
END ELSE IF (@Anno <= 2399) BEGIN
SET @M = 26;
SET @N = 1;
END ELSE IF (@Anno <= 2499) BEGIN
SET @M = 25;
SET @N = 1;
END
SET @a = @Anno % 19;
SET @b = @Anno % 4;
SET @c = @Anno % 7;
SET @d = ((19*@a) + @M) % 30;
SET @e = ((2*@b) + (4*@c) + (6*@d) + @N) % 7;
IF ((@d + @e) < 10) BEGIN
SET @giorno = @d+@e+22;
SET @mese = 3;
END ELSE BEGIN
SET @giorno = @d+@e-9;
SET @mese = 4;
END
IF (@giorno=26 AND @mese=4) BEGIN
SET @giorno = 19;
SET @mese = 4;
END
IF (@giorno=25 AND @mese=4 AND @d=28 AND @e=6 AND @a>10) BEGIN
SET @giorno=18;
SET @mese=4;
END
SELECT @pasqua = dateadd(mm,(@Anno-1900)* 12 + @mese - 1,0) + (@giorno-1)
return @pasqua
END
</source>
 
 
==[[w:SQL]]==