RosettaCodeData/Task/Five-weekends/ERRE/five-weekends.erre
2023-07-01 13:44:08 -04:00

36 lines
874 B
Text

PROGRAM FIVE_WEEKENDS
DIM M$[12]
PROCEDURE MODULO(X,Y->MD)
IF Y=0 THEN
MD=X
ELSE
MD=X-Y*INT(X/Y)
END IF
END PROCEDURE
PROCEDURE WD(M,D,Y->RES%)
IF M=1 OR M=2 THEN
M+=12
Y-=1
END IF
MODULO(365*Y+INT(Y/4)-INT(Y/100)+INT(Y/400)+D+INT((153*M+8)/5),7->RES)
RES%=RES+1.0
END PROCEDURE
BEGIN
M$[]=("","JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER")
PRINT(CHR$(12);) ! CLS
FOR YEAR=1900 TO 2100 DO
FOREACH MONTH IN (1,3,5,7,8,10,12) DO ! months with 31 days
WD(MONTH,1,YEAR->RES%)
IF RES%=6 THEN ! day #6 is Friday
PRINT(YEAR;": ";M$[MONTH])
CNT%=CNT%+1
! IF CNT% MOD 20=0 THEN GET(K$) END IF ! press a key for next page
END IF
END FOR
END FOR
PRINT("Total =";CNT%)
END PROGRAM