Discordian date: Difference between revisions

Added Algol W
m (→‎{{header|AppleScript}}: Tidied opening block comment.)
(Added Algol W)
Line 695:
Setting Orange, day 26 of Bureaucracy in the YOLD 3178
Setting Orange, day 73 of The Aftermath in the YOLD 3178</pre>
 
=={{header|ALGOL W}}==
{{Trans|MAD}}
Algol W doesn't have the array initialisation equivalent of MAD's VECTOR VALUES and also does not allow implicit declarations.
Algol W does not have I/O formsts or variable length strings in output, which makes this version somewhat longer.
<lang algolw>BEGIN % DISCORDIAN DATE CALCULATION - TRANSLATION OF MAD %
INTEGER GREG, GMONTH, GDAY, GYEAR;
STRING(16) ARRAY HOLY5 ( 0 :: 4 );
STRING(16) ARRAY HOLY50 ( 0 :: 4 );
STRING(16) ARRAY DISDAY ( 0 :: 4 );
STRING(16) ARRAY DISSSN ( 0 :: 4 );
INTEGER ARRAY MLENGT ( 0 :: 12 );
INTEGER APOS;
STRING(1) SLASH1, SLASH2;
 
% WRITES A "$" TERMINATED STRING %
PROCEDURE WRITEONTEXT( STRING(16) VALUE TEXT ) ;
BEGIN
INTEGER TPOS;
TPOS := 0;
WHILE TPOS < 16 DO BEGIN
IF TEXT( TPOS // 1 ) = "$"
THEN TPOS := 32
ELSE WRITEON( TEXT( TPOS // 1 ) );
;
TPOS := TPOS + 1
END WHILE_TPOS_LT_16
END WRITEONTEXT;
 
APOS := 0;
FOR M := 0,0,31,59,90,120,151,181,212,243,273,304,334 DO BEGIN MLENGT(APOS) := M; APOS := APOS + 1 END;
HOLY5 (0) := "MUNG$";HOLY5 (1) := "MOJO$"; HOLY5 (2) := "SYA$"; HOLY5 (3) := "ZARA$"; HOLY5 (4) := "MALA$";
HOLY50(0) := "CHAO$";HOLY50(1) := "DISCO$";HOLY50(2) := "CONFU$";HOLY50(3) := "BURE$"; HOLY50(4) := "AF$";
DISDAY(0) := "SWEETMORN$"; DISDAY(1) := "BOOMTIME$"; DISDAY(2) := "PUNGENDAY$";
DISDAY(3) := "PRICKLE-PRICKLE$"; DISDAY(4) := "SETTING ORANGE$";
DISSSN(0) := "CHAOS$"; DISSSN(1) := "DISCORD$"; DISSSN(2) := "CONFUSION$";
DISSSN(3) := "BUREAUCRACY$"; DISSSN(4) := "THE AFTERMATH$";
 
% INPUT DATE SHOULD CONTAIN MM/DD/YYYY IN GREGORIAN CALENDAR %
READ( GMONTH, SLASH1, GDAY, SLASH2, GYEAR );
IF GMONTH = 2 AND GDAY = 29
THEN WRITE( I_W := 4, S_W := 0, "SAINT TIB'S DAY IN THE Y.O.L.D. ", GYEAR + 1166 )
ELSE BEGIN
INTEGER YRDAY, SEASON, DAY, WKDAY;
YRDAY := MLENGT(GMONTH)+GDAY;
SEASON := YRDAY DIV 73;
DAY := YRDAY-SEASON*73;
WKDAY := (YRDAY-1)-( (YRDAY-1) DIV 5 ) * 5;
WRITEONTEXT( DISDAY(WKDAY) );
WRITEON( S_W := 0, ", DAY ", I_W := 2, DAY, " OF " );
WRITEONTEXT( DISSSN(SEASON) );
WRITEON( S_W := 0, " IN THE Y.O.L.D ", I_W := 4, GYEAR + 1166
);
IF DAY = 5 THEN BEGIN
WRITE( "CELEBRATE " );WRITEONTEXT( HOLY5(SEASON) ); WRITEON( "DAY" )
END
ELSE IF DAY = 50 THEN BEGIN
WRITE( "CELEBRATE " );WRITEONTEXT( HOLY50(SEASON) ); WRITEON( "FLUX" )
END IF_FAY_EQ_5__DAY_EQ_50
END
END.</lang>
{{out}}
<pre>
08/15/2017
BOOMTIME, DAY 8 OF BUREAUCRACY IN THE Y.O.L.D 3183
 
12/06/2020
SETTING ORANGE, DAY 48 OF THE AFTERMATH IN THE Y.O.L.D 3186
 
07/12/1969
PUNGENDAY, DAY 47 OF CONFUSION IN THE Y.O.L.D 3135
 
01/05/2005
SETTING ORANGE, DAY 5 OF CHAOS IN THE Y.O.L.D 3171
CELEBRATE MUNGDAY
 
09/26/1995
PRICKLE-PRICKLE, DAY 50 OF BUREAUCRACY IN THE Y.O.L.D 3161
CELEBRATE BUREFLUX
 
</pre>
 
=={{header|AppleScript}}==
3,045

edits