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: Wochentagsberechnung Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 1.12.2018 7:43)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ============================================================================
' 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

Bisherige Antworten:

Demoprogramm: Einfacheres Verfahren (von Dietmar - 7.12.2018 21:46)