![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
' ============================================================================ ' Wochentagsberechnung auf der Open-Macro und Open-Maxi ' In OCBASIC 1.12a_e1 von Dietmar Harlos am 1. 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": ' "2.2.22) Wochentag eines Datums berechnen (DOW)" ' "Allgemein für alle Jahrhunderte (ab 1582, Gregorianischer Kalender)" ' Im Kapitel "2.2.28) Einfache Berechnung des Wochentages für 2000 bis 2099" ' stellt Manfred ein einfacheres Verfahren vor. ' --- Definitionen für das System -------------------------------------------- 'INCLUDE "omac.def" 'Definitionen für die Open-Macro INCLUDE "omax.def" 'Definitionen für die Open-Maxi ' --- Definitionen des Anwenders --------------------------------------------- DIM SJ BYTE 'Variablen für Wochentagsberechnung definieren DIM Tag BYTE DIM Monat BYTE DIM Jx BYTE DIM Jahr WORD DIM TagNr WORD ' --- Das Hauptprogramm ------------------------------------------------------ PrintSpc=ON 'SPACE vor einem dezimalen PRINT ausgeben ?"November:" FOR Tag=1 TO 30 ?Tag;wochentag(Tag,11,2018) NEXT Tag ?"Dezember:" FOR Tag=1 TO 31 ?Tag;wochentag(Tag,12,2018) NEXT Tag End2Host=ON 'Nach Programmende in den Host-Modus END 'Programmende, Neustart mit der Enter-Taste ' --- Subroutinen ------------------------------------------------------------ ' Wochentagsberechnung ' Quelle: Die sehr gute Seite "Steuerung mit C-Control" von Manfred Wilzeck: ' http://manfred.wilzeck.de FUNCTION wochentag(Tag,Monat,Jahr) SJ = 1 / (1+Jahr MOD 4) - 1 / (1+Jahr MOD 100) + 1 / (1+Jahr MOD 400) ' Schaltjahr (SJ) = 1 , sonst = 0 TagNr = Tag + 489 * Monat / 16 - (7 + Monat) / 10 * (2 - SJ) - 30 Jx = (Jahr + Jahr / 4 - Jahr / 100 + Jahr / 400) MOD 7 ' Wochentag 31.12. Jahr (4-stellig) RETURN ( Jx + TagNr - 2 - SJ ) MOD 7 + 1 ' Tag 1 bis 7 ( Mo, Di, Mi, Do, Fr, Sa, So) END FUNCTION ' --- Programmende ---------------------------------------------------------- Passender Link: Website von Manfred Wilzeck Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |