Ich wäre beinahe heute morgen am Ostemontag geweckt worden und habe deshalb meine Feiertagsfunktion näher untersucht. Der EibPC wurde seit Ende 2017 nicht mehr neu gestartet. Mir kommt es bei der Frage auf die Zeile
"DOYostern@ = GetDayOfYear(Year, Eastermonth(0s16), Easterday(0s16))" - in der ersten Zeile nach den :var Definitionen - an:
"Year" ist eine globale Variable. Müsste sich die Variable DOYostern@ beim Jahresübergang nicht von selbst updaten, also ohne ein Konstrukt wie if change(Year) then... ? Und alle auf DOYostern@ aufbauenden Variablen wie letztendlich "result@" auch? Manchmal denk' ich mir, ich checke das Evaluationsschema immer noch nicht ganz...
So, jetzt werde ich den EibPC mal neu starten, damit ich an den kommenden beweglichen Feiertagen nicht versehentlich geweckt werde...
"DOYostern@ = GetDayOfYear(Year, Eastermonth(0s16), Easterday(0s16))" - in der ersten Zeile nach den :var Definitionen - an:
"Year" ist eine globale Variable. Müsste sich die Variable DOYostern@ beim Jahresübergang nicht von selbst updaten, also ohne ein Konstrukt wie if change(Year) then... ? Und alle auf DOYostern@ aufbauenden Variablen wie letztendlich "result@" auch? Manchmal denk' ich mir, ich checke das Evaluationsschema immer noch nicht ganz...
Code:
/*_______________ IsFeiertag Anfang __________________________*/ :begin isFeiertag(pDOY) :info $Gibt für einen mit "pDOY" angegebenen Tag zurück, ob ein Feiertag vorliegt$\\ $pDOY, Nummer des Tags im Jahr (u16), der 1.1. des Folgejahres kann mit abgefragt werden, daher max. 367 im Schaltjahr$ :var DOYostern@ :var DOYneuja1@ :var DOYhlg3Kg@ :var DOYkarfre@ :var DOYostmon@ :var DOYmaifei@ :var DOYchrhim@ :var DOYpfison@ :var DOYpfimon@ :var DOYfronle@ :var DOYmarhim@ :var DOYeinhei@ //Einmaliger Feiertag, kann nach 2017 wieder entfernt werden: :var DOYreform@ :var DOYallerh@ :var DOYhlgabd@ :var DOYweif01@ :var DOYweif02@ :var DOYsilves@ // und um immer einen Tag voraus schauen zu können (Radiowecker): :var DOYneuja2@ [COLOR=#FF0000]DOYostern@ = GetDayOfYear([B]Year,[/B] Eastermonth(0s16), Easterday(0s16))[/COLOR] DOYneuja1@ = GetDayOfYear(Year, 1, 1) DOYhlg3Kg@ = GetDayOfYear(Year, 1, 6) DOYkarfre@ = DOYostern@ - 2u16 DOYostmon@ = DOYostern@ + 1u16 DOYmaifei@ = GetDayOfYear(Year,5,1) DOYchrhim@ = DOYostern@ + 39u16 DOYpfison@ = DOYostern@ + 49u16 DOYpfimon@ = DOYostern@ + 50u16 DOYfronle@ = DOYostern@ + 60u16 DOYmarhim@ = GetDayOfYear(Year,8,15) DOYeinhei@ = GetDayOfYear(Year,10,3) //Einmaliger Feiertag, kann nach 2017 wieder entfernt werden: DOYreform@ = GetDayOfYear(2017,10,31) + convert(Year != 2017u16,0u16) * 1000u16 DOYallerh@ = GetDayOfYear(Year,11,1) DOYhlgabd@ = GetDayOfYear(Year,12,24) DOYweif01@ = DOYhlgabd@ + 1u16 DOYweif02@ = DOYhlgabd@ + 2u16 DOYsilves@ = GetDayOfYear(Year,12,31) // und um immer einen Tag voraus schauen zu können: DOYneuja2@ = DOYsilves@ + 1u16 :var result@ result@ = pDOY == DOYostern@ or \\ pDOY == DOYneuja1@ or \\ pDOY == DOYhlg3Kg@ or \\ pDOY == DOYkarfre@ or \\ pDOY == DOYostmon@ or \\ pDOY == DOYmaifei@ or \\ pDOY == DOYchrhim@ or \\ pDOY == DOYpfison@ or \\ pDOY == DOYpfimon@ or \\ pDOY == DOYfronle@ or \\ pDOY == DOYmarhim@ or \\ pDOY == DOYeinhei@ or \\ pDOY == DOYreform@ or \\ pDOY == DOYallerh@ or \\ pDOY == DOYhlgabd@ or \\ pDOY == DOYweif01@ or \\ pDOY == DOYweif02@ or \\ pDOY == DOYsilves@ or \\ pDOY == DOYneuja2@ :return result@ :end
Kommentar