M4BASIC - zeller.m4b
Not logged in
REM Demo implementing Zeller's Congruence
REM http://en.wikipedia.org/wiki/Zeller_congruence
REM
REM Taken from the zeller example of BaCon.
REM PvE, August 2014 - GPL.

FLOAT q, m, J, K, h, day
STRING data, year

PRINT "Enter day of the month (1-31): " INPUT data
LET q = VAL(data)

IF q > 31 OR q < 1 THEN
	PRINT "Day must be within 1-31!"
	END
ENDIF

PRINT "Enter month (1-12): " INPUT data
LET m = VAL(data)

IF m > 12 OR m < 1 THEN
	PRINT "Month must be within 1-12!"
	END
ENDIF

PRINT "Enter year: " INPUT year

LET J = VAL(LEFT(year, 2))
LET K = VAL(MID(year, 3, 2))

IF m == 1 OR m == 2 THEN
	LET m = m + 12
	DECR K
ENDIF

LET h = (q + ((m+1)*26)/10 + K + (K/4) + (J/4) + 5*J)

LET day = MOD(h, 7)

IF day == 0 THEN
    PRINT "That is a Saturday.\n"
ELIF day == 1 THEN
    PRINT "That is a Sunday.\n"
ELIF day == 2 THEN
    PRINT "That is a Monday.\n"
ELIF day == 3 THEN
    PRINT "That is a Tuesday.\n"
ELIF day == 4 THEN
    PRINT "That is a Wednesday.\n"
ELIF day == 5 THEN
    PRINT "That is a Thursday.\n"
ELIF day == 6 THEN
    PRINT "That is a Friday.\n"
ENDIF

Return to M4BASIC