Funcao - calculo de feriados (pascoa, carnaval, corpus cristi, sexta feira santa)

Top  Previous  Next

Rotinas úteis para calcular os feriados varíaveis de Sábado de Carnaval, 

Sexta Feira Santa, Páscoa e Corpus Christi. 

 

Sabado de Carnaval = Pascoa - 50 dias 

Terça de Carnaval  = Pascoa - 47 dias

Quarta de Cinzas   = Pascoa - 46 dias

Sexta Feira Santa  = Pascoa -  2 dias 

Corpus Christi     = Pascoa + 60 dias 

 

 

type

  TFeriados = (frPascoa, frSabadoCarnaval, frCarnaval, frQuartaCinzas, frSextaSanta, frCorpusChristi);

 

// CALCULO DA PASCOA

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, 322); 

  FPascoa := FPascoa + R4 + R5; 

 

  DecodeDate(FPascoa, VJ, VM, VD); 

  case VD of 

    26 : FPascoa := EncodeDate(Aano, 419); 

    25 : if R1 > 10 then FPascoa := EncodeDate(AAno, 418); 

  end

 

  Result:= FPascoa; 

end

 

// CALCULA FERIADO

function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime;

var

  A: TDateTime;

begin

  A := CalculaPascoa(AAno);

  Case ATipo of

    frCarnaval      : A := A - 50;

    frSabadoCarnaval: A := A - 46;

    frQuartaCinzas  : A := A - 47;

    frSextaSanta    : A := A -  2;

    frCorpusChristi : A := A + 60;

  end;

  Result := A;

end;