RosettaCodeData/Task/Long-year/ASIC/long-year.asic

44 lines
571 B
Plaintext

REM Long year
CLS
PRINT "**** List of ISO long years ****"
PRINT "Start year";
INPUT S
PRINT "End year";
INPUT E
PRINT
FOR Y = S TO E
GOSUB CALCLY:
IF LY <> 0 THEN
PRINT Y;
ENDIF
NEXT Y
PRINT
END
CALCLY:
REM Nonzero if Y is long
LY = 0
AY = Y
GOSUB CALCWD:
IF WD = 4 THEN
LY = -1
ENDIF
AY = Y - 1
GOSUB CALCWD:
IF WD = 3 THEN
LY = -1
ENDIF
RETURN
CALCWD:
REM Weekday of AY-12-31, 0 = Sunday
WD = AY
TMP = AY / 4
WD = WD + TMP
TMP = AY / 100
WD = WD - TMP
TMP = AY / 400
WD = WD + TMP
WD = WD MOD 7
RETURN