Der Sinn ist, man nimmt das übliche
date$(ndays)
und findet mit Months heraus, ob man Februar hat. Wenn man dann die Anzahl der Tage feststellen will,
gibt man + leapyear {year} ein, was einen Tag hinzufügt (oder eben nicht) für Februar.
date$(ndays)
und findet mit Months heraus, ob man Februar hat. Wenn man dann die Anzahl der Tage feststellen will,
gibt man + leapyear {year} ein, was einen Tag hinzufügt (oder eben nicht) für Februar.
Code:
Function.b leapyear{year.w} ;returns 1 for leap year or 0
res.b=0
;divisible /100: not a leap year
dummy.w=(year/100)
If (dummy*100)=year
res=0
;divisible /400: leap year
dummy.w=(year/400)
If (dummy*400)=year Then res=1
Function Return res
EndIf
;divisible /4 : leap year
dummy.w=(year/4) :If (dummy*4)=year Then res=1 Else res=0
Function Return res
End Function
;testcase
NPrint "leap year test case:"
NPrint "1800 (no) ",leapyear{1800}
NPrint "1900 (no) ",leapyear{1900}
NPrint "2100 (no) ",leapyear{2100}
NPrint "2009 (no) ",leapyear{2009}
NPrint "2010 (no) ",leapyear{2010}
NPrint "2011 (no) ",leapyear{2011}
NPrint "2008 (ya) ",leapyear{2008}
NPrint "2012 (ya) ",leapyear{2012}
NPrint "2016 (ya) ",leapyear{2016}
NPrint "2000 (ya) ",leapyear{2000}
NPrint "2400 (ya) ",leapyear{2400}
Stop