Hallo liebe Leut, guten Abend
vor ein paar Minuten hatte ich mir in den Kopf gesetzt, bei meiner manuellen Datumseingabe die Schaltjahre für die Eingabe der Tage im Februar zu berücksichtigen. Soweit ich den Überblick über BASCOM habe, bietet die Sprache keine entsprechende Funktion.
Also habe ich mir kurz ein kleines "Funktiönchen" zusammengenagelt welches die Arbeit erledigt. Als Testreferenz sollte die Tabelle unter
"http://kalender-365.de/schaltjahre.php" dienen.
Das folgende ist dabei heraus gekommen
Der Code ist für den $SIM = Simulator geschrieben und kann dort sofort getestet werden.
Vielleicht kanns ja jemand brauchen.
Viele Grüße und schönen Abend,
Markus
vor ein paar Minuten hatte ich mir in den Kopf gesetzt, bei meiner manuellen Datumseingabe die Schaltjahre für die Eingabe der Tage im Februar zu berücksichtigen. Soweit ich den Überblick über BASCOM habe, bietet die Sprache keine entsprechende Funktion.
Also habe ich mir kurz ein kleines "Funktiönchen" zusammengenagelt welches die Arbeit erledigt. Als Testreferenz sollte die Tabelle unter
"http://kalender-365.de/schaltjahre.php" dienen.
Das folgende ist dabei heraus gekommen
Der Code ist für den $SIM = Simulator geschrieben und kann dort sofort getestet werden.
Vielleicht kanns ja jemand brauchen.
Viele Grüße und schönen Abend,
Markus
Code:
$regfile = "m128def.dat" ' Definitionsdatei für ATmega128 laden
$crystal = 16000000 ' Quarzfrequenz für 16 MHz festlegen
$hwstack = 128 ' HW-Stack auf 128 Bytes erweitern
$swstack = 64 ' SW-Stack auf 64 Bytes erweitern
$framesize = 80 ' Framesize auf 80 Byte festlegen
$baud = 38400
$sim
Const True = &H01
Const False = &H00
Declare Function Schaltjahr(byval Value As Word) As Byte
Dim Ergebnis As Byte
Dim Zaehler As Word
For Zaehler = 1800 To 2400
Ergebnis = Schaltjahr(zaehler)
If Ergebnis = True Then Print "Jahr " ; Zaehler ; " ist Schaltjahr"
Next Zahler
Do
Loop
End
' Regel für Schaltjahre:
' Das Jahr ist durch vier teilbar.
' Das Jahr darf nicht durch 100 teilbar sein,
' ausser es ist durch 400 teilbar.
Function Schaltjahr(byval Value As Word) As Byte
' lokale Variablen
Local Word_temp_1 As Word
Local Result_value As Byte
' Prüfung ob Jahr durch vier teilbar
Word_temp_1 = Value Mod 4
If Word_temp_1 = 0 Then
' Ja, Jahr könnte Schaltjahr sein
' Prüfung ob Jahr durch 100 teilbar
Word_temp_1 = Value Mod 100
If Word_temp_1 = 0 Then
' Jahr ist durch 100 teilbar
' Prüfung ob Jahr durch 400 teilbar
Word_temp_1 = Value Mod 400
If Word_temp_1 = 0 Then
Result_value = True
Else
Result_value = False
End If
Else
' Jahr ist nicht durch
Result_value = True
End If
Else
' Jahr ist definitiv kein Schaltjahr
Result_value = False
End If
Schaltjahr = Result_value
End Function