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