Schaltjahresberechnung mit BASCOM

Markus

BASCOM-Experte
11. Jan. 2008
1.190
6
38
Lonsee
Sprachen
Hallo liebe Leut, guten Abend :ciao:

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 :p
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
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)