type
TFeriados = (frPascoa, frCarnaval, frQuartaCinzas, frSextaSanta, frCorpusChristi);
function CalculaPascoa(AAno: Word): TDateTime;
function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime;
function CalculaPascoa(AAno: Word): TDateTime;
var
R1, R2, R3, R4, R5 : Longint;
FPascoa : TDateTime;
VJ, VM, VD : Word;
begin
R1 := AAno mod 19;
R2 := AAno mod 4;
R3 := AAno mod 7;
R4 := (19 * R1 + 24) mod 30;
R5 := (6 * R4 + 4 * R3 + 2 * R2 + 5) mod 7;
FPascoa := EncodeDate(AAno, 3, 22);
FPascoa := FPascoa + R4 + R5;
DecodeDate(FPascoa, VJ, VM, VD);
case VD of
26 : FPascoa := EncodeDate(Aano, 4, 19);
25 : if R1 > 10 then
FPascoa := EncodeDate(AAno, 4, 18);
end;
Result:= FPascoa;
end;
function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime;
var
Aux: TDateTime;
begin
Aux := CalculaPascoa(AAno);
Case ATipo of
frCarnaval : Aux := Aux - 47;
frQuartaCinzas : Aux := Aux - 46;
frSextaSanta : Aux := Aux - 2;
frCorpusChristi: Aux := Aux + 60;
end;
Result := Aux;
end;Listagem 1. NOME