quarta-feira, 7 de outubro de 2009

Rotinas úteis para calcular os feriados varíaveis de sábado de carnaval, sexta

{Rotinas úteis para calcular os feriados varíaveis de Sábado de Carnaval, Sexta Feira Santa, Páscoa e Corpus Christi


De acordo com a tabelinha abaixo podemos criar algumas funções úteis para cáculo de feriados
Sabado de Carnaval = Pascoa - 50 dias
Quarta de Cinzas = Pascoa - 46 dias
Sexta Feira Santa = Pascoa - 2 dias
Corpus Christi = Pascoa + 60 dias
Veja abaixo: }
type
TFeriados = (frPascoa, 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, 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;
{*******************************************}
// CALCULA FERIADO
{*******************************************}
function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime;
var
Aux: TDateTime;
begin
Aux := CalculaPascoa(AAno);
Case ATipo of
frCarnaval : Aux := Aux - 50;
frQuartaCinzas : Aux := Aux - 46;
frSextaSanta : Aux := Aux - 2;
frCorpusChristi: Aux := Aux + 60;
end;
Result := Aux;
end;

{By
Nativo_Gyn
ufgnet@pop.com.br}

Nenhum comentário:

Postar um comentário