Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Demoprogramm: Einfacheres Verfahren Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 7.12.2018 21:46)
 Als Antwort auf Demoprogramm: Wochentagsberechnung von Dietmar - 1.12.2018 7:43
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ============================================================================
' Einfache Wochentagsberechnung auf allen OM-Mikrocontrollern
' In OCBASIC 1.12a_e1 von Dietmar Harlos am 7. Dezember 2018
' ============================================================================

' Quelle: Die sehr gute Seite "Steuerung mit C-Control" von Manfred Wilzeck:

' http://manfred.wilzeck.de

' Siehe dort unter "2. Tipps und Tricks  Teil 2":
' "Teil 2 Fortsetzung Datum_berechnen:"
' "Weiter zu Datum berechnen für Steuerungen:"
' Im Kapitel "2.2.28) Einfache Berechnung des Wochentages für 2000 bis 2099"
' stellt Manfred ein einfaches Verfahren zur Wochentagsberechnung vor.

' Auf den drei kleinsten OM-Mikrocontrollern muß LOOKTABBYTE durch LOOKTAB
' ersetzt werden. Außerdem läßt sich nur bis ins Jahr 2046 rechnen, weil
' der Term "(5 * Jahr + KM)" zu groß wird, da nur BYTE-Arithmetik zur
' Verfügung steht.

' --- Definitionen für das System --------------------------------------------

'INCLUDE "om.def"           'Definitionen für die Open-Micro und Open-Mini
'INCLUDE "omid.def"         'Definitionen für die Open-Midi
'INCLUDE "omac.def"         'Definitionen für die Open-Macro
INCLUDE "omax.def"         'Definitionen für die Open-Maxi

' --- Definitionen des Anwenders ---------------------------------------------

DIM KM BYTE                'Variablen für Wochentagsberechnung definieren
DIM Tag BYTE
DIM Monat BYTE
DIM Jahr BYTE

' --- Das Hauptprogramm ------------------------------------------------------

PrintSpc=ON                'SPACE vor einem dezimalen PRINT ausgeben

?"Dezember 2018:"
FOR Tag=1 TO 31
  ?Tag;wochentag(Tag,12,18)
NEXT Tag

?"Januar 2019:"
FOR Tag=1 TO 31
  ?Tag;wochentag(Tag,1,19)
NEXT Tag

End2Host=ON                'Nach Programmende in den Host-Modus
END                        'Programmende, Neustart mit der Enter-Taste

' --- Subroutinen ------------------------------------------------------------

' Einfache Wochentagsberechnung für 2000 bis 2099

' Quelle: Die sehr gute Seite "Steuerung mit C-Control" von Manfred Wilzeck:

' http://manfred.wilzeck.de

FUNCTION wochentag(Tag,Monat,Jahr)
  LOOKTABBYTE wt_Konstante,  Monat,  KM  ' Die Variable KM enthält nun den Wert aus der Tabelle
  RETURN ((5 * Jahr + KM) / 4 + Tag - 1) MOD 7 + 1 ' Tag 1 bis 7 (Jahr 2-stellig für Jahr 2000 bis 2099)
END FUNCTION

' --- Tabellen ---------------------------------------------------------------

TABLE wt_Konstante BYTE 0 23 7 8 20 0 12 20 4 16 24 8 16 TABEND

' --- Programmende ----------------------------------------------------------


Passender Link: Website von Manfred Wilzeck

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: