160 lines
5.0 KiB
Plaintext
160 lines
5.0 KiB
Plaintext
program ddate;
|
|
{
|
|
This program is free software, it's done it's time
|
|
and paid for it's crime. You can copy, edit and use this
|
|
software under the terms of the GNU GPL v3 or later.
|
|
|
|
Copyright Pope Englebert Finklestien,
|
|
On this day Boomtime, the 71st day of Confusion in the YOLD 3183
|
|
|
|
This program will print out the current date in Erisian format as specified in
|
|
|
|
P R I N C I P I A D I S C O R D I A
|
|
|
|
If you run it with a date it the command line in european format (dd mm yy) it
|
|
will print the equvolent Discordian date. If you omit the year and month the
|
|
current Anerisiean month and year as assumed.
|
|
|
|
|
|
POPE Englebert Finklestien.
|
|
}
|
|
uses Sysutils;
|
|
|
|
var
|
|
YY,MM,DD : word;
|
|
YOLD : Boolean;
|
|
Hedgehog: integer;
|
|
Eris: string;
|
|
snub: string;
|
|
chaotica: string;
|
|
midget: string;
|
|
bob: string;
|
|
|
|
|
|
Anerisiandaysinmonth: array[1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);
|
|
|
|
|
|
|
|
procedure anerisiandate;
|
|
{ tHIS JUST GETS THE DATE INTO THE DD,MM,YY VARIABLES }
|
|
begin
|
|
DeCodeDate(date,yy,mm,dd);
|
|
end;
|
|
|
|
procedure BORIS;
|
|
{ This just tests to see if we are in a leap year }
|
|
var
|
|
snafu : boolean;
|
|
begin
|
|
snafu := False;
|
|
if (yy mod 4 = 0) then snafu := True;
|
|
if ((yy mod 100 = 0) and (yy mod 400 <> 0)) then snafu := False;
|
|
if ((snafu) and (mm = 2 ) and (dd=29)) then YOLD := True;
|
|
end;
|
|
|
|
function hodgepodge: integer;
|
|
{ This returns the total number of days since the year began.
|
|
It doesn't bother with leap years at all.
|
|
I get a wierd optical illusion looking at the until in this }
|
|
var
|
|
fnord : integer;
|
|
begin
|
|
Hedgehog := 1;
|
|
hodgepodge := 0;
|
|
fnord :=0;
|
|
if (mm > 1) then repeat
|
|
fnord := fnord + Anerisiandaysinmonth[Hedgehog];
|
|
Hedgehog := Hedgehog +1;
|
|
until Hedgehog = mm;
|
|
fnord := fnord + dd;
|
|
hodgepodge := fnord;
|
|
end;
|
|
|
|
|
|
function treesaregreen(): string;
|
|
{Returns the YOLD as a string}
|
|
|
|
begin
|
|
treesaregreen := IntTOStr(yy+1166);
|
|
end;
|
|
|
|
|
|
procedure GRAYFACE;
|
|
{This calculates everything, but does not bother much about leap years}
|
|
var
|
|
wrestle: integer;
|
|
Thwack: string;
|
|
begin
|
|
Hedgehog := hodgepodge;
|
|
wrestle := 0;
|
|
Thwack := 'th';
|
|
{set bob to the name of the holyday or St. Tibs day }
|
|
bob := 'St. Tibs Day';
|
|
if (Hedgehog = 5 ) then bob := 'Mungday';
|
|
if (Hedgehog = 50 ) then bob := 'Chaoflux';
|
|
if (Hedgehog = 78 ) then bob := 'Mojoday';
|
|
if (Hedgehog = 123) then bob := 'Discoflux';
|
|
if (Hedgehog = 151) then bob := 'Syaday';
|
|
if (Hedgehog = 196) then bob := 'Confuflux';
|
|
if (Hedgehog = 224) then bob := 'Zaraday';
|
|
if (Hedgehog = 269) then bob := 'Bureflux';
|
|
if (Hedgehog = 297) then bob := 'Maladay';
|
|
if (Hedgehog = 342) then bob := 'Afflux';
|
|
{Not doing things the usual way
|
|
Lets find the week day and count the number of
|
|
5 day weeks all at the same time}
|
|
while (Hedgehog > 5) do begin
|
|
Hedgehog := Hedgehog -5;
|
|
wrestle := Wrestle + 1;
|
|
end;
|
|
if (Hedgehog = 1) then snub := 'Sweetmorn' ;
|
|
if (Hedgehog = 2) then snub := 'BoomTime';
|
|
if (Hedgehog = 3) then snub := 'Pungenday';
|
|
if (Hedgehog = 4) then snub := 'Prickle-Prickle';
|
|
if (Hedgehog = 5) then snub := 'Setting Orange';
|
|
{Now to set the Season name}
|
|
chaotica:='The Aftermath';
|
|
if (wrestle <=57) then chaotica := 'Bureaucracy';
|
|
if ((wrestle = 58) and (Hedgehog < 3)) then chaotica := 'Bureaucracy';
|
|
if (wrestle <= 42) then chaotica := 'Confusion';
|
|
if ((wrestle = 43) and (Hedgehog < 5)) then chaotica := 'Confusion';
|
|
if (wrestle <=28) then chaotica := 'Discord';
|
|
if ((wrestle = 29) and (Hedgehog < 2)) then chaotica := 'Discord';
|
|
if (wrestle <=13) then chaotica := 'Chaos';
|
|
if ((wrestle = 14) and (Hedgehog < 4)) then chaotica := 'Chaos';
|
|
|
|
{Now all we need the day of the season}
|
|
wrestle := (wrestle*5)+Hedgehog;
|
|
while (wrestle >73) do wrestle := wrestle -73;
|
|
{pick the appropriate day postfix, allready set to th}
|
|
if (wrestle in [1,21,31,41,51,61,71]) then Thwack:='st';
|
|
if (wrestle in [2,22,32,42,52,62,72]) then Thwack:='nd';
|
|
if (wrestle in [3,23,33,43,53,63,73]) then Thwack:='rd';
|
|
{Check to see if it is a holy day, if so bob will have
|
|
the right holyday name already, including St Tibs Day}
|
|
if (wrestle in [5,50]) then YOLD := True;
|
|
{I love this line of code}
|
|
midget := IntToStr(wrestle) + Thwack;
|
|
end;
|
|
|
|
|
|
{The main program starts here}
|
|
begin
|
|
anerisiandate;
|
|
if (ParamCount >=1) then dd := StrTOInt(ParamStr(1));
|
|
if (ParamCount >=2) then mm := StrToInt(ParamStr(2));
|
|
if (ParamCount =3) then yy := StrToInt(ParamStr(3));
|
|
BORIS;
|
|
GRAYFACE;
|
|
{ The only thing to bother about is holy days and St Tibs day }
|
|
Eris := 'Today is: ' + snub +' the ' + midget +' day of the season of ' + chaotica;
|
|
if (YOLD) then begin
|
|
Eris := 'Celebrate for today, ' + snub + ' the ' + midget + ' day of ' +chaotica + ' is the holy day of ' + bob;
|
|
end;
|
|
{The only place we deal with St. Tibs Day}
|
|
if ((YOLD) and ((mm=2) and (dd=29))) then Eris := 'Celebrate ' + bob + ' Chaos';
|
|
{This next line applies to all possibilities}
|
|
Eris := Eris + ' YOLD ' + treesaregreen;
|
|
WriteLn(Eris);
|
|
end.
|