mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-27 17:34:37 +02:00
77 lines
1.4 KiB
ObjectPascal
77 lines
1.4 KiB
ObjectPascal
Program easter;
|
|
|
|
{
|
|
easter v1.0
|
|
© 1995 by Andreas Tetzl
|
|
FREEWARE
|
|
|
|
|
|
This is a little program to calculate the date of
|
|
easter for years between 1583 and 2299.
|
|
|
|
Start it in a shell with the year as argument.
|
|
|
|
}
|
|
|
|
{
|
|
Translated to fpc pascal.
|
|
21 Mar 2001.
|
|
|
|
nils.sjoholm@mailbox.swipnet.se
|
|
}
|
|
|
|
uses amigados;
|
|
|
|
const version : pchar = '$VER: easter v1.0 (3-Nov-95) by Andreas Tetzl';
|
|
|
|
VAR i,a,b,c,d,e,m,n : Integer;
|
|
year, month, day : longint;
|
|
|
|
|
|
BEGIN
|
|
|
|
if (ParamStr(1) = '?') or (ParamStr(1) = '') then
|
|
BEGIN
|
|
Writeln('YEAR/N');
|
|
halt(20);
|
|
END;
|
|
|
|
i:=StrToLong(ParamStr(1),year);
|
|
if (year<1583) or (year>2299) then
|
|
BEGIN
|
|
Writeln('only years between 1583 and 2299 allowed');
|
|
halt(20);
|
|
END;
|
|
|
|
Case year of
|
|
1583..1699 : BEGIN m:=22; n:=2; END;
|
|
1700..1799 : BEGIN m:=23; n:=3; END;
|
|
1800..1899 : BEGIN m:=23; n:=4; END;
|
|
1900..2099 : BEGIN m:=24; n:=5; END;
|
|
2100..2199 : BEGIN m:=24; n:=6; END;
|
|
2200..2299 : BEGIN m:=25; n:=0; END;
|
|
end;
|
|
|
|
a:=year mod 19;
|
|
b:=year mod 4;
|
|
c:=year mod 7;
|
|
d:=(19*a+m) mod 30;
|
|
e:=(2*b+4*c+6*d+n) mod 7;
|
|
|
|
day:=22+d+e;
|
|
if day<=31 then
|
|
month:=3
|
|
else
|
|
BEGIN
|
|
month:=4;
|
|
day:=d+e-9;
|
|
END;
|
|
|
|
if (month=4) and (day=26) then day:=19;
|
|
if (month=4) and (day=25) and (d=28) and (e=6) and (a>10) then day:=18;
|
|
|
|
Write(year,'-');
|
|
if month=3 then Write('Mar') else Write('Apr');
|
|
Writeln('-',day);
|
|
END.
|