strukturierte Arrays (Kalender)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • strukturierte Arrays (Kalender)

      Quellcode

      1. ' Kalendertest
      2. ' Autor: Michael Wodrich
      3. ' Kalenderwochen korrekt fortlaufend zählen
      4. ' Strukturarrays zum Datensammeln verwenden
      5. ' Feiertage aller Bundesländer berücksichtigen
      6. set("errorlevel",2)
      7. var string dies_ist_mein_Bundesland = "SH" // "BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH" (ISO 3166-2:DE)
      8. SubProc dt.BoM
      9. Parameters float DP
      10. Return dt("SetDay",DP,1)
      11. EndProc
      12. SubProc dt.EoM
      13. Parameters float DP
      14. Return dt("Ultimo",DP)
      15. EndProc
      16. SubProc dt.Ultimo
      17. Declare float DP
      18. If %PCount = 2
      19. Parameters int Month,Year
      20. DP = dt("setDate",Year,Month,1)
      21. Else
      22. Parameters float D1
      23. DP = D1
      24. EndIf
      25. // -----
      26. If dt("GetMonth",DP) == 12
      27. DP = dt("SetDay",DP, 31)
      28. Return DP
      29. EndIf
      30. // (01. MM + 1. YYYY) - 1
      31. DP = dt("SetDay",DP, 1)
      32. DP = dt("SetMonth",DP, dt("GetMonth",DP) + 1)
      33. DP = dt("incDay",DP, -1)
      34. Return DP
      35. EndProc
      36. SubProc dt.Advent4
      37. Declare float Tag2512, int Jahr
      38. If PType$(1) = "!"
      39. Parameters float DP
      40. Jahr = dt("getYear",DP)
      41. Else
      42. Parameters int Y
      43. Jahr = Y
      44. EndIf
      45. Tag2512 = dt("SetDate", Jahr, 12, 25 )
      46. Return ( Tag2512 - dt("GetDoW",Tag2512) )
      47. EndProc
      48. SubProc dt.Easter
      49. Declare int Y
      50. If PType$(1) = "!"
      51. Parameters float DP
      52. Y = dt("getYear",DP)
      53. Else
      54. Parameters int Jahr
      55. Y = Jahr
      56. EndIf
      57. Declare int D,Mo, Century, r19, r30, x,x1,x2,x3,x4,x5
      58. Century = Y \ 100
      59. r19 = Y mod 19
      60. x = ((Century - 15) >> 1) + 202 - r19 * 11
      61. Select Century
      62. CaseOf 21,24,25,27,28,29,30,31,32,34,35,38
      63. Dec x
      64. CaseOf 33,36,37,39,40
      65. Dec x, 2
      66. EndSelect
      67. r30 = x mod 30
      68. x1 = r30 + 21
      69. Case r30 == 29 : Dec x1
      70. Case (r30 == 28) and (r19 > 10) : Dec x1
      71. x2 = (x1 - 19) mod 7
      72. x3 = (40 - Century) mod 4
      73. Case x3 == 3 : Inc x3
      74. Case x3 > 1 : Inc x3
      75. x = Y mod 100
      76. x4 = (x + x / 4) mod 7
      77. x5 = ((20 - x2 - x3 - x4) mod 7) + 1
      78. D = x1 + x5
      79. Mo = 3
      80. If D > 31
      81. Dec D,31
      82. Inc Mo
      83. EndIf
      84. Return dt("SetDate", Y,Mo,D)
      85. EndProc
      86. SubProc dt.WeekdayStep
      87. Parameters float D, string Modus
      88. Declare int Mode, WD, W, string WDay
      89. Modus = Lower$(Modus) : WDay = Right$(Modus,2) : WD = 1
      90. Case InStr("first",Modus) : Mode = 0
      91. Case InStr("prev",Modus) : Mode = 1
      92. Case InStr("next",Modus) : Mode = 2
      93. Case InStr("last",Modus) : Mode = 3
      94. WhileLoop 1,14
      95. If SubStr$("mo,di,mi,do,fr,sa,so,mo,tu,we,th,fr,sa,su", &Loop, ",") = WDay
      96. Case &Loop <= 7 : WD = &Loop - 1
      97. Case &Loop > 7 : WD = &Loop - 8
      98. BREAK
      99. EndIf
      100. EndWhile
      101. // Korrektur des Tages
      102. Case Mode = 0 : D = dt("BoM",D) // First
      103. Case Mode = 3 : D = dt("EoM",D) // Last
      104. While WD < 0 : Inc WD,7 : EndWhile : WD = WD mod 7 : Inc WD
      105. W = dt("getDoW",D)
      106. Select Mode
      107. CaseOf 0 // First
      108. While W <> WD
      109. D = D + 1
      110. Inc W
      111. Case W > 7 : W = 1
      112. EndWhile
      113. CaseOf 1 // Prev
      114. Repeat
      115. D = D - 1
      116. Dec W
      117. Case W < 1 : W = 7
      118. Until W = WD
      119. CaseOf 2 // Next
      120. Repeat
      121. D = D + 1
      122. Inc W
      123. Case W > 7 : W = 1
      124. Until W = WD
      125. CaseOf 3 // Last
      126. While W <> WD
      127. D = D - 1
      128. Dec W
      129. Case W < 1 : W = 7
      130. EndWhile
      131. EndSelect
      132. Return D
      133. EndProc
      134. SubProc dt.FirstMo : Parameters float D : Return dt("WeekdayStep",D,"FirstMo") : EndProc
      135. SubProc dt.FirstDi : Parameters float D : Return dt("WeekdayStep",D,"FirstDi") : EndProc
      136. SubProc dt.FirstMi : Parameters float D : Return dt("WeekdayStep",D,"FirstMi") : EndProc
      137. SubProc dt.FirstDo : Parameters float D : Return dt("WeekdayStep",D,"FirstDo") : EndProc
      138. SubProc dt.FirstFr : Parameters float D : Return dt("WeekdayStep",D,"FirstFr") : EndProc
      139. SubProc dt.FirstSa : Parameters float D : Return dt("WeekdayStep",D,"FirstSa") : EndProc
      140. SubProc dt.FirstSo : Parameters float D : Return dt("WeekdayStep",D,"FirstSo") : EndProc
      141. SubProc dt.FirstTu : Parameters float D : Return dt("WeekdayStep",D,"FirstTu") : EndProc
      142. SubProc dt.FirstWe : Parameters float D : Return dt("WeekdayStep",D,"FirstWe") : EndProc
      143. SubProc dt.FirstTh : Parameters float D : Return dt("WeekdayStep",D,"FirstTh") : EndProc
      144. SubProc dt.FirstSu : Parameters float D : Return dt("WeekdayStep",D,"FirstSu") : EndProc
      145. SubProc dt.PrevMo : Parameters float D : Return dt("WeekdayStep",D,"PrevMo") : EndProc
      146. SubProc dt.PrevDi : Parameters float D : Return dt("WeekdayStep",D,"PrevDi") : EndProc
      147. SubProc dt.PrevMi : Parameters float D : Return dt("WeekdayStep",D,"PrevMi") : EndProc
      148. SubProc dt.PrevDo : Parameters float D : Return dt("WeekdayStep",D,"PrevDo") : EndProc
      149. SubProc dt.PrevFr : Parameters float D : Return dt("WeekdayStep",D,"PrevFr") : EndProc
      150. SubProc dt.PrevSa : Parameters float D : Return dt("WeekdayStep",D,"PrevSa") : EndProc
      151. SubProc dt.PrevSo : Parameters float D : Return dt("WeekdayStep",D,"PrevSo") : EndProc
      152. SubProc dt.PrevTu : Parameters float D : Return dt("WeekdayStep",D,"PrevTu") : EndProc
      153. SubProc dt.PrevWe : Parameters float D : Return dt("WeekdayStep",D,"PrevWe") : EndProc
      154. SubProc dt.PrevTh : Parameters float D : Return dt("WeekdayStep",D,"PrevTh") : EndProc
      155. SubProc dt.PrevSu : Parameters float D : Return dt("WeekdayStep",D,"PrevSu") : EndProc
      156. SubProc dt.NextMo : Parameters float D : Return dt("WeekdayStep",D,"NextMo") : EndProc
      157. SubProc dt.NextDi : Parameters float D : Return dt("WeekdayStep",D,"NextDi") : EndProc
      158. SubProc dt.NextMi : Parameters float D : Return dt("WeekdayStep",D,"NextMi") : EndProc
      159. SubProc dt.NextDo : Parameters float D : Return dt("WeekdayStep",D,"NextDo") : EndProc
      160. SubProc dt.NextFr : Parameters float D : Return dt("WeekdayStep",D,"NextFr") : EndProc
      161. SubProc dt.NextSa : Parameters float D : Return dt("WeekdayStep",D,"NextSa") : EndProc
      162. SubProc dt.NextSo : Parameters float D : Return dt("WeekdayStep",D,"NextSo") : EndProc
      163. SubProc dt.NextTu : Parameters float D : Return dt("WeekdayStep",D,"NextTu") : EndProc
      164. SubProc dt.NextWe : Parameters float D : Return dt("WeekdayStep",D,"NextWe") : EndProc
      165. SubProc dt.NextTh : Parameters float D : Return dt("WeekdayStep",D,"NextTh") : EndProc
      166. SubProc dt.NextSu : Parameters float D : Return dt("WeekdayStep",D,"NextSu") : EndProc
      167. SubProc dt.LastMo : Parameters float D : Return dt("WeekdayStep",D,"LastMo") : EndProc
      168. SubProc dt.LastDi : Parameters float D : Return dt("WeekdayStep",D,"LastDi") : EndProc
      169. SubProc dt.LastMi : Parameters float D : Return dt("WeekdayStep",D,"LastMi") : EndProc
      170. SubProc dt.LastDo : Parameters float D : Return dt("WeekdayStep",D,"LastDo") : EndProc
      171. SubProc dt.LastFr : Parameters float D : Return dt("WeekdayStep",D,"LastFr") : EndProc
      172. SubProc dt.LastSa : Parameters float D : Return dt("WeekdayStep",D,"LastSa") : EndProc
      173. SubProc dt.LastSo : Parameters float D : Return dt("WeekdayStep",D,"LastSo") : EndProc
      174. SubProc dt.LastTu : Parameters float D : Return dt("WeekdayStep",D,"LastTu") : EndProc
      175. SubProc dt.LastWe : Parameters float D : Return dt("WeekdayStep",D,"LastWe") : EndProc
      176. SubProc dt.LastTh : Parameters float D : Return dt("WeekdayStep",D,"LastTh") : EndProc
      177. SubProc dt.LastSu : Parameters float D : Return dt("WeekdayStep",D,"LastSu") : EndProc
      178. Struct sDayInfo = dDay%,dMonth%,dYear%, dDP!, dDayno%, dWeekNo%, dWeekday%, dIsWorkday%, dIsHoliday%, dIsWorkHoliday%
      179. 'dDay% [1 - 31] Tag
      180. 'dMonth% [1 - 12] Monat
      181. 'dYear% [1583-3999] Jahr
      182. 'dDP! [...] XProfan-Datum
      183. 'dDayno% [1 - 366] Tagesnummer
      184. 'dWeekNo% [1 - 53] Wochennummer (kann im Vor- o. Folgejahr liegen)
      185. 'dWeekday% [1 - 7] (Mo - So)
      186. 'dIsWorkday% [0 - 1] Ist es ein Werktag? (Mo..Fr; kein Feiertag)
      187. 'dIsHoliday% [0 - 1] Ist es ein Feiertag?
      188. 'dIsWorkHoliday% [0 - 1] Ist es ein Feiertag, der auf einen Werktag fällt?
      189. Struct sMonthInfo = mMonth%, mYear%, mNoOfDays%, mNoOfWorkdays%, mNoOfWeekend%, mNoOfHolidays%, mNoOfWorkHolidays%
      190. 'mMonth% [1 - 12] Monat
      191. 'mYear% [1583-3999] Jahr
      192. 'mNoOfDays% [28 - 31] Wieviele Tage hat der Monat? (Ultimo)
      193. 'mNoOfWorkdays% [0 - 31] Wieviele Tage davon sind Arbeitstage?
      194. 'mNoOfWeekend% [0 - 31] Summe der Wochenend-Tage dieses Monats.
      195. 'mNoOfHolidays% [0 - 31] Summe der Feiertage.
      196. 'mNoOfWorkHolidays% [0 - 31] Summe der Feiertage, die auf Werktage fallen.
      197. Struct sYearInfo = yYear%, yNoOfDays%, yNoOfWorkdays%, yNoOfWeekend%, yNoOfHolidays%, yNoOfWorkHolidays%, yFirstWeek%, yNoOfWeeks%, yLastWeek%, yIsLeap%
      198. 'yYear% [1583-3999] Jahr
      199. 'yNoOfDays% [365 - 366] Wieviele Tage hat das Jahr?
      200. 'yNoOfWorkdays% [0 - 366] Wieviele Tage davon sind Arbeitstage?
      201. 'yNoOfWeekend% [0 - 366] Summe der Wochenend-Tage dieses Jahres.
      202. 'yNoOfHolidays% [0 - 366] Summe der Feiertage.
      203. 'yNoOfWorkHolidays% [0 - 366] Summe der Feiertage, die auf Werktage fallen.
      204. 'yFirstWeek% [1 - 53] Nr der ersten Woche des Jahres (kann auch 53 sein; Vorjahr)
      205. 'yNoOfWeeks% [51 - 53] Anzahl der Wochen des Jahres
      206. 'yLastWeek% [1 - 53] Nr der letzten Woche des Jahres (kann auch 1 sein; Folgejahr)
      207. 'yIsLeap% [0 - 1] Schaltjahr?
      Alles anzeigen
      Programmieren, das spannendste Detektivspiel der Welt.
    • Quellcode

      1. ' Var integer DoY[] = Array(integer 0,0,31,59,90,120,151,181,212,243,273,304,334)
      2. ' Var integer LDiM[] = Array(integer 0,31,28,31,30,31,30,31,31,30,31,30,31)
      3. '!!! Denkste
      4. ' dann eben so...
      5. Declare integer LDiM[12]
      6. LDiM[ 0] = 0
      7. LDiM[ 1] = 31
      8. LDiM[ 2] = 28
      9. LDiM[ 3] = 31
      10. LDiM[ 4] = 30
      11. LDiM[ 5] = 31
      12. LDiM[ 6] = 30
      13. LDiM[ 7] = 31
      14. LDiM[ 8] = 31
      15. LDiM[ 9] = 30
      16. LDiM[10] = 31
      17. LDiM[11] = 30
      18. LDiM[12] = 31
      19. // -- Init_Structures
      20. Declare memory DayInfo[], MonthInfo[], YearInfo, string HolidayStr[366], CalDayStr[366]
      21. Dim DayInfo[], sDayInfo
      22. Dim MonthInfo[], sMonthInfo
      23. Dim YearInfo, sYearInfo
      24. '!!! Strukturarrays sind möglich, aber man sollte ein Element extra spendieren !!!
      25. SetSize DayInfo[],367
      26. SetSize MonthInfo[],13
      27. Mat HolidayStr[] = ""
      28. Mat CalDayStr[] = ""
      29. // END -- Init_Structures
      30. Proc Create_CalendarInfo
      31. Parameters int Jahr, string Bundesland ' Bundesland = "SH"
      32. // "BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH" (ISO 3166-2:DE)
      33. Declare float DP,LastDat,DP2, int i,j, D,M,Y, WD, WN, string xx
      34. Mat HolidayStr[] = ""
      35. Mat CalDayStr[] = ""
      36. Proc isHoliday
      37. Parameters string mein_Bundesland, Aufzaehlung_der_Bundeslaender, float datum
      38. Declare int i, RE
      39. Var int isHoli = 0
      40. mein_Bundesland = Upper$(mein_Bundesland)
      41. Aufzaehlung_der_Bundeslaender = Upper$(Aufzaehlung_der_Bundeslaender)
      42. // "BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH" (ISO 3166-2:DE)
      43. // Brandenburg, Berlin, Baden-Württemberg, Bayern, Hansestadt Bremen, Hessen, Hansestadt Hamburg, Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Schleswig-Holstein, Saarland, Sachsen, Sachsen-Anhalt, Thüringen
      44. RE = Set("RegEx",0)
      45. If InStr( "[F]", Aufzaehlung_der_Bundeslaender )
      46. isHoli = 1
      47. Else
      48. If InStr( mein_Bundesland, Aufzaehlung_der_Bundeslaender ) // "(BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH)"
      49. isHoli = 1
      50. EndIf
      51. EndIf
      52. Set("RegEx",RE)
      53. If (datum > 0) and (datum < dt("SetDate",1990,07,22))
      54. If InStr( mein_Bundesland, "[BB,MV,SN,ST,TH]" ) // Neue Bundesländer: Ländereinführungsgesetz vom 22. Juli 1990
      55. isHoli = 0
      56. EndIf
      57. EndIf
      58. Return isHoli
      59. EndProc
      60. Proc Set_Cal
      61. 'Set_Cal(01,01,Jahr, "F", "Neujahr")
      62. 'Set_Cal(Easter + 0, "F", "Ostersonntag")
      63. Declare string Bundeslaender_oder_F, Eintrag
      64. Declare int DoY, isHoli, D,M,Y
      65. If %PCount = 5
      66. Parameters int DD,MM,YY, string BL, s
      67. D = DD : M = MM : Y = YY
      68. Bundeslaender_oder_F = BL
      69. Eintrag = s
      70. LastDat = dt("setDate",YY,MM,DD)
      71. DoY = dt("getDoY",LastDat)
      72. Else
      73. Parameters float da, string BL2, s2
      74. Bundeslaender_oder_F = BL2
      75. Eintrag = s2
      76. LastDat = da
      77. DoY = dt("getDoY",LastDat)
      78. D = DayInfo[DoY].dDay%
      79. M = DayInfo[DoY].dMonth%
      80. Y = DayInfo[DoY].dYear%
      81. EndIf
      82. isHoli = isHoliday( Bundesland, Bundeslaender_oder_F, LastDat )
      83. Case InStr("#", Eintrag) : Eintrag = Translate$(Eintrag,"#",Bundeslaender_oder_F)
      84. If isHoli
      85. If HolidayStr[DoY] = ""
      86. HolidayStr[DoY] = Eintrag
      87. Else
      88. HolidayStr[DoY] = HolidayStr[DoY] + Chr$(254) + Eintrag
      89. EndIf
      90. '!!! Leider nicht erlaubt
      91. 'With DayInfo[DoY], MonthInfo[M], YearInfo
      92. '!!! auch das Verschachteln geht nicht
      93. 'With DayInfo[DoY]
      94. 'With MonthInfo[M]
      95. 'With YearInfo
      96. DayInfo[DoY].dIsHoliday% = isHoli
      97. MonthInfo[M].mNoOfHolidays% = MonthInfo[M].mNoOfHolidays% + 1 'Summe der Feiertage im Monat
      98. YearInfo.yNoOfHolidays% = YearInfo.yNoOfHolidays% + 1 'Summe der Feiertage im Jahr
      99. If DayInfo[DoY].dIsWorkday% == 1
      100. Case DayInfo[DoY].dIsWorkHoliday% == 0 : MonthInfo[M].mNoOfWorkHolidays% = MonthInfo[M].mNoOfWorkHolidays% + 1 'Summe der Feiertage, die auf Werktage fallen (Monat)
      101. Case DayInfo[DoY].dIsWorkHoliday% == 0 : YearInfo.yNoOfWorkHolidays% = YearInfo.yNoOfWorkHolidays% + 1 'Summe der Feiertage, die auf Werktage fallen (Jahr)
      102. DayInfo[DoY].dIsWorkHoliday% = 1
      103. EndIf
      104. 'EndWith
      105. 'EndWith
      106. 'EndWith
      107. 'EndWith
      108. Else
      109. If CalDayStr[DoY] = ""
      110. CalDayStr[DoY] = Eintrag
      111. Else
      112. CalDayStr[DoY] = CalDayStr[DoY] + Chr$(254) + Eintrag
      113. EndIf
      114. EndIf
      115. EndProc
      116. Proc Get_Cal
      117. Parameters int Dayno, Cal_or_Holi
      118. If Cal_or_Holi
      119. If HolidayStr[Dayno] = ""
      120. Return ""
      121. Else
      122. Return Translate$(HolidayStr[Dayno], Chr$(254), Chr$(13)+Chr$(10)+Space$(8) )
      123. EndIf
      124. Else
      125. If CalDayStr[Dayno] = ""
      126. Return ""
      127. Else
      128. Return Translate$(CalDayStr[Dayno], Chr$(254), Chr$(13)+Chr$(10)+Space$(8) )
      129. EndIf
      130. EndIf
      131. EndProc
      132. // Liefert ein Wochenend-Array. 0 = Arbeitstag, 1 = Wochenende
      133. Declare int WeekendArr[7]
      134. Var int Beginning_of_the_Week = 1
      135. Var int Weekend_Days_one_Week = 2
      136. i = Beginning_of_the_Week : j = Weekend_Days_one_Week : MAT WeekendArr[] = 0
      137. While j > 0 : Dec j : Dec i : Case i < 1 : Inc i,7 : WeekendArr[i] = 1 : EndWhile
      138. D = 1 : M = 1 : Y = Jahr
      139. DP = dt("setDate",Y,M,D)
      140. WD = dt("getDoW",DP)
      141. WN = dt("getWoY",DP)
      142. With YearInfo
      143. .yYear% = Y 'Jahr
      144. .yIsLeap% = dt("isLeapYear",DP) 'Schaltjahr?
      145. .yNoOfDays% = 365 + .yIsLeap% 'Wieviele Tage hat das Jahr?
      146. .yNoOfWorkdays% = 0 'Wieviele Tage davon sind Arbeitstage?
      147. .yNoOfWeekend% = 0 'Summe der Wochenend-Tage dieses Jahres.
      148. .yNoOfHolidays% = 0 'Summe der Feiertage.
      149. .yNoOfWorkHolidays% = 0 'Summe der Feiertage, die auf Werktage fallen.
      150. .yFirstWeek% = WN 'Nr der ersten Woche des Jahres (kann auch 53 sein; Vorjahr)
      151. .yNoOfWeeks% = 1 'Anzahl der Wochen des Jahres
      152. .yLastWeek% = dt("getWoY",dt("setDate",Y,12,31)) 'Nr der letzten Woche des Jahres (kann auch 1 sein; Folgejahr)
      153. LDiM[2] = 28 + .yIsLeap%
      154. EndWith
      155. For i, 1, 12
      156. With MonthInfo[i]
      157. .mMonth% = i 'Monat
      158. .mYear% = Y 'Jahr
      159. .mNoOfDays% = LDiM[i] 'Wieviele Tage hat der Monat? (Ultimo)
      160. .mNoOfWorkdays% = 0 'Wieviele Tage davon sind Arbeitstage?
      161. .mNoOfWeekend% = 0 'Summe der Wochenend-Tage dieses Monats.
      162. .mNoOfHolidays% = 0 'Summe der Feiertage.
      163. .mNoOfWorkHolidays% = 0 'Summe der Feiertage, die auf Werktage fallen.
      164. EndWith
      165. EndFor
      166. YearInfo.yNoOfWorkdays% = 0 'Wieviele Tage davon sind Arbeitstage?
      167. YearInfo.yNoOfWeekend% = 0 'Summe der Wochenend-Tage dieses Jahres.
      168. YearInfo.yNoOfWeeks% = 0
      169. For i, 1, YearInfo.yNoOfDays%
      170. With DayInfo[i]
      171. .dDay% = D 'Tag
      172. .dMonth% = M 'Monat
      173. .dYear% = Y 'Jahr
      174. .dDP! = DP 'XProfan-Datum
      175. .dDayno% = i 'Tagesnummer
      176. .dWeekNo% = WN 'Wochennummer (kann im Vor- o. Folgejahr liegen)
      177. .dWeekday% = WD '(Mo - So)
      178. .dIsWorkday% = if(WeekendArr[WD],0,1) 'Ist es ein Werktag? (Mo..Fr; kein Feiertag)
      179. .dIsHoliday% = 0 'Ist es ein Feiertag?
      180. .dIsWorkHoliday% = 0 'Ist es ein Feiertag, der auf einen Werktag fällt?
      181. EndWith
      182. Inc D
      183. If D > MonthInfo[M].mNoOfDays% ' Monatswechsel
      184. MonthInfo[M].mNoOfWorkdays% = 0 'Wieviele Tage davon sind Arbeitstage?
      185. MonthInfo[M].mNoOfWeekend% = 0 'Summe der Wochenend-Tage dieses Monats.
      186. For j, i - MonthInfo[M].mNoOfDays% + 1, i
      187. Case DayInfo[j].dIsWorkday% == 1 : MonthInfo[M].mNoOfWorkdays% = MonthInfo[M].mNoOfWorkdays% + 1 'Wieviele Tage davon sind Arbeitstage?
      188. Case DayInfo[j].dIsWorkday% == 0 : MonthInfo[M].mNoOfWeekend% = MonthInfo[M].mNoOfWeekend% + 1 'Summe der Wochenend-Tage dieses Monats.
      189. EndFor
      190. YearInfo.yNoOfWorkdays% = YearInfo.yNoOfWorkdays% + MonthInfo[M].mNoOfWorkdays% 'Wieviele Tage davon sind Arbeitstage?
      191. YearInfo.yNoOfWeekend% = YearInfo.yNoOfWeekend% + MonthInfo[M].mNoOfWeekend% 'Summe der Wochenend-Tage dieses Jahres.
      192. D = 1
      193. Inc M
      194. EndIf
      195. Inc WD : Case WD > 7 : Dec WD,7
      196. If WD = Beginning_of_the_Week ' Wochenwechsel
      197. YearInfo.yNoOfWeeks% = YearInfo.yNoOfWeeks% + 1
      198. Case (YearInfo.yNoOfWeeks% < 2) and (YearInfo.yFirstWeek% > 10) : WN = 0 ' erste Wochenschaltung und Woche aus dem Vorjahr
      199. Inc WN
      200. Case (M == 12) and (D >= 25) and (WN == 53) and (YearInfo.yLastWeek% == 1) : WN = 1
      201. EndIf
      202. DP = DP + 1
      203. EndFor
      204. // ##########################################################################################################################
      205. // --- Jetzt die Kalendertage / Feiertage hinzufügen
      206. // "BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH" (ISO 3166-2:DE)
      207. Declare float Vierter_Advent, Ostern, xmas, Trinitatis_Stopp, Septua
      208. // Voraus-Berechnung, da an mehreren Stellen benötigt
      209. Vierter_Advent = dt("Advent4", Jahr)
      210. Trinitatis_Stopp = Vierter_Advent - 35 ' Ende der Trinitatis-Sonntage (Woche vor Volkstrauertag)
      211. Ostern = dt("Easter", Jahr)
      212. Septua = Ostern - 63 ' Ende der Epiphanias-Sonntage (Woche vor Septuagesimä)
      213. // Feiertage
      214. set_Cal( 1, 1, Jahr, "[F]", "Neujahr #")
      215. // LastDat wird in set_Cal gesetzt, so lassen sich davon abhängige Kalenderdaten leichter bearbeiten
      216. DP2 = dt("NextSo", LastDat)
      217. Case dt("getDoY", DP2) < 6 : set_Cal( DP2, "", "So. n. Neujahr")
      218. set_Cal( 6, 1, Jahr, "[BW,BY,ST]", "Hl. 3 Könige (Epiphanias) #")
      219. DP2 = dt("NextSo", LastDat)
      220. WhileLoop 1,6
      221. Case DP2 < Septua : set_Cal( DP2, Str$(&Loop), "#. So. n. Epiphanias")
      222. DP2 = dt("NextSo", DP2)
      223. EndWhile
      Alles anzeigen
      Programmieren, das spannendste Detektivspiel der Welt.
    • Quellcode

      1. set_Cal( Ostern - 2, "[F]", "Karfreitag #")
      2. set_Cal( Ostern , "[BB]", "Ostersonntag # (rk:1.So der Osterzeit)")
      3. set_Cal( Ostern + 1, "[F]", "Ostermontag #")
      4. set_Cal( Ostern + 39, "[F]", "Christi Himmelfahrt # (Vatertag/Herrentag)")
      5. set_Cal( Ostern + 49, "[BB]", "Pfingstsonntag # (7.So n Ostern)")
      6. set_Cal( Ostern + 50, "[F]", "Pfingstmontag #")
      7. set_Cal( Ostern + 53, "[BW,BY,HE,NW,RP,SL]", "Fronleichnam # (Corpus Domini, Corpus Christi)")
      8. Case Jahr >= 1934 : set_Cal( 1, 5, Jahr, "[F]", "Maifeiertag #")
      9. ' hier wird "deutschen" klein geschrieben
      10. xx = "Tag der deutschen Einheit #"
      11. If Between(Jahr,1954,1990)
      12. set_Cal( 17, 6, Jahr, "[F]", xx)
      13. ElseIf Jahr >= 1991
      14. set_Cal( 17, 6, Jahr, "[Gedenktag]", xx)
      15. EndIf
      16. set_Cal( 15, 8, Jahr, "[BY,SL]", "Mariä Himmelfahrt #")
      17. ' hier wird "Deutschen" groß geschrieben
      18. Case Jahr >= 1990 : set_Cal( 3, 10, Jahr, "[F]", "Tag der Deutschen Einheit #")
      19. xx = "Reformationstag #"
      20. Case Between(Jahr,1517,1989) : set_Cal( 31, 10, Jahr, " ", xx)
      21. Case Between(Jahr,1990,2016) : set_Cal( 31, 10, Jahr, "[BB,MV,SN,ST,TH]", xx) // Neue Bundesländer: Ländereinführungsgesetz vom 22. Juli 1990
      22. Case (Jahr = 2017) : set_Cal( 31, 10, Jahr, "[F]. Im Jahr 2017, dem 500. Jahr des Beginns der Reformation, ist der 31. Oktober einmalig ein gesamtdeutscher gesetzlicher Feiertag.",xx)
      23. Case Jahr >= 2018 : set_Cal( 31, 10, Jahr, "[BB,MV,SN,ST,TH]",xx)
      24. ' Case Jahr >= 2018 : set_Cal( 31, 10, Jahr, "[HB,HH,NI,SH,BB,MV,SN,ST,TH]",xx) // !!! *** in Planung *** !!!
      25. set_Cal( 1, 11, Jahr, "[BW,BY,NW,RP,SL]","Allerheiligen #")
      26. xx = "Buß- und Bettag #"
      27. Case Between(Jahr,1934,1938) : set_Cal( Vierter_Advent - 32, "[F]", xx)
      28. Case Between(Jahr,1946,1951) : set_Cal( Vierter_Advent - 32, "[BE,BW,HB,HE,HH,NI,NW,RP,SH,SL]", xx)
      29. Case Between(Jahr,1952,1980) : set_Cal( Vierter_Advent - 32, "[BE,BW,BY(ev),HB,HE,HH,NI,NW,RP,SH,SL]", xx)
      30. Case Between(Jahr,1981,1989) : set_Cal( Vierter_Advent - 32, "[BE,BW,BY,HB,HE,HH,NI,NW,RP,SH,SL]", xx)
      31. Case Between(Jahr,1990,1994) : set_Cal( Vierter_Advent - 32, "[F]", xx)
      32. Case Jahr >= 1995 : set_Cal( Vierter_Advent - 32, "[SN]", xx)
      33. set_Cal( 25, 12, Jahr, "[F]", "1. Weihnachtsfeiertag #")
      34. xmas = LastDat
      35. If (LastDat - 1) = Vierter_Advent
      36. set_Cal( 24, 12, Jahr, "", "4. Advent und Heiligabend")
      37. Else
      38. set_Cal( 24, 12, Jahr, "", "Heiligabend")
      39. set_Cal( Vierter_Advent, "", "4. Advent")
      40. EndIf
      41. Case dt("getDoW", xmas) <= 5 : set_Cal( dt("NextSo", xmas), "", "So. n. Weihnachten")
      42. set_Cal( 26, 12, Jahr, "[F]", "2. Weihnachtsfeiertag #")
      43. // Kalendertage
      44. set_Cal( 2, 2, Jahr, "", "Mariä Lichtmeß")
      45. set_Cal( 14, 2, Jahr, "", "Valentinstag")
      46. set_Cal( 25, 3, Jahr, "", "Mariä Verkündigung")
      47. set_Cal( 30, 4, Jahr, "", "Walpurgisnacht")
      48. Case Jahr >= 1933 : set_Cal(dt("FirstSo",dt("setDate",Jahr,5,1)) + 7, "", "Muttertag") // Muttertag: zweiter SO im Mai (Trick: erster SO + 7)
      49. Case Jahr >= 1964 : set_Cal( 5, 5, Jahr, "", "Europatag (Gründung des Europarates 1949)")
      50. Case Jahr >= 1985 : set_Cal( 9, 5, Jahr, "", "Europatag (Schuman-Erklärung (1950), mündete in EGKS u später EU)")
      51. set_Cal( 24, 6, Jahr, "", "Johannistag")
      52. set_Cal( 27, 6, Jahr, "", "Siebenschläfer")
      53. set_Cal( 29, 6, Jahr, "", "Peter und Paul")
      54. set_Cal( 24, 8, Jahr, "", "Bartholomäustag")
      55. set_Cal( 1, 9, Jahr, "", "Ägidii")
      56. set_Cal( 8, 9, Jahr, "", "Mariä Geburt")
      57. set_Cal( 29, 9, Jahr, "", "Michaelis")
      58. set_Cal( 31, 10, Jahr, "", "Halloween")
      59. set_Cal( 2, 11, Jahr, "", "Allerseelen")
      60. set_Cal( 11, 11, Jahr, "", "Martinstag (Martini)")
      61. set_Cal( 6, 12, Jahr, "", "Nikolaus")
      62. set_Cal( 8, 12, Jahr, "", "Mariä Empfängnis")
      63. set_Cal( 31, 12, Jahr, "", "Silvester")
      64. // Trinitatis-Sonntage (1..27)
      65. If Jahr >= 1334
      66. DP2 = Ostern + 56 + 7
      67. WhileLoop 1,27
      68. Case DP2 < Trinitatis_Stopp : set_Cal( DP2, Str$(&Loop), "#. So. n. Trinitatis")
      69. DP2 = DP2 + 7
      70. EndWhile
      71. EndIf
      72. // Jahreszeiten
      73. set_Cal( 21, 3, Jahr, "", "Frühlings-Tagundnachtgleiche")
      74. set_Cal( 21, 6, Jahr, "", "Sommer-Sonnenwende")
      75. set_Cal( 22, 9, Jahr, "", "Herbst-Tagundnachtgleiche")
      76. set_Cal( 21, 12, Jahr, "", "Winter-Sonnenwende")
      77. // Sommerzeit
      78. set_Cal( dt("LastSo",dt("setDate",Jahr, 3,1)), "(MESZ)", "Anfang der Sommerzeit #") // letzter SO im März
      79. set_Cal( dt("LastSo",dt("setDate",Jahr,10,1)), "(MEZ)", "Ende der Sommerzeit (Normalzeit) #") // letzter SO im Oktober
      80. // Erntedank rk & ev
      81. Case Jahr >= 1972 : set_Cal( dt("FirstSo",dt("setDate",Jahr,9,1)), "[rk]", "Erntedankfest (1. SO i Sept) #")
      82. Case Jahr >= 1770 : set_Cal( dt("NextSo",dt("setDate",Jahr,9,29)), "[ev]", "Erntedankfest (SO n Michaelis) #")
      83. xx = "Sternzeichen #"
      84. // Sternzeichen
      85. set_Cal( 21, 1, Jahr, "Wassermann", xx)
      86. set_Cal( 20, 2, Jahr, "Fische", xx)
      87. set_Cal( 21, 3, Jahr, "Widder", xx)
      88. set_Cal( 21, 4, Jahr, "Stier", xx)
      89. set_Cal( 21, 5, Jahr, "Zwillinge", xx)
      90. set_Cal( 22, 6, Jahr, "Krebs", xx)
      91. set_Cal( 23, 7, Jahr, "Löwe", xx)
      92. set_Cal( 24, 8, Jahr, "Jungfrau", xx)
      93. set_Cal( 24, 9, Jahr, "Waage", xx)
      94. set_Cal( 24, 10, Jahr, "Skorpion", xx)
      95. set_Cal( 23, 11, Jahr, "Schütze", xx)
      96. set_Cal( 22, 12, Jahr, "Steinbock", xx)
      97. // Advent
      98. ' Vierter_Advent = dt("Advent4", Jahr) // wurde weiter oben schon gesetzt
      99. set_Cal( Vierter_Advent - 7, "", "3. Advent")
      100. set_Cal( Vierter_Advent - 14, "", "2. Advent")
      101. set_Cal( Vierter_Advent - 21, "", "1. Advent")
      102. set_Cal( Vierter_Advent - 28, "", "Totensonntag (Ewigkeitssonntag) [G]")
      103. set_Cal( Vierter_Advent - 28, "", "Christkönigsfest [rk]")
      104. set_Cal( Vierter_Advent - 35, "", "Volkstrauertag")
      105. set_Cal( Vierter_Advent - 42, "", "Drittletzter SO des Kirchenjahres")
      106. // Ostern
      107. ' Ostern = dt("Easter", Jahr) // wurde weiter oben schon gesetzt
      108. // Karneval
      109. set_Cal( Ostern - 52, "", "Weiberfastnacht (Schmotziger DO) (-Karneval-)")
      110. set_Cal( Ostern - 51, "", "Rußiger Freitag (-Karneval-)")
      111. set_Cal( Ostern - 50, "", "Nelkensamstag (Schmalziger SA) (-Karneval-)")
      112. set_Cal( Ostern - 49, "", "Estomihi (7.So v Ostern)") // der mogelt sich VOR die Herrenfastnacht
      113. set_Cal( Ostern - 49, "", "Tulpensonntag (Herrenfastnacht) (-Karneval-)")
      114. set_Cal( Ostern - 48, "", "Rosenmontag (-Karneval-)")
      115. set_Cal( Ostern - 47, "", "Fastnacht (Veilchendienstag) (-Karneval-)")
      116. set_Cal( Ostern - 46, "", "Aschermittwoch (Beginn der Fastenzeit) (-Karneval-)")
      117. set_Cal( Ostern - 63, "", "Septuagesimae (9.So v Ostern)")
      118. set_Cal( Ostern - 56, "", "Sexagesimae (8.So v Ostern)")
      119. set_Cal( Ostern - 42, "", "Invokavit (6.FastenSo v Ostern)")
      120. set_Cal( Ostern - 35, "", "Reminiscere (5.FastenSo v Ostern)")
      121. set_Cal( Ostern - 28, "", "Okuli (4.FastenSo v Ostern)")
      122. set_Cal( Ostern - 21, "", "Laetare (3.FastenSo v Ostern)")
      123. set_Cal( Ostern - 14, "", "Judica (2.FastenSo v Ostern)")
      124. set_Cal( Ostern - 8, "", "[en] (Sat. of Lazarus)")
      125. set_Cal( Ostern - 7, "", "Palmsonntag (1.FastenSo v Ostern)")
      126. set_Cal( Ostern - 3, "", "Gründonnerstag")
      127. set_Cal( Ostern - 1, "", "Karsamstag (Ostersamstag)")
      128. set_Cal( Ostern + 7, "", "Quasimodogeniti (ev:1.So n Ostern)(rk:2.So der Osterzeit/Weißer Sonntag)")
      129. set_Cal( Ostern + 14, "", "Misericordias Domini (ev:2.So n Ostern)(rk:3.So der Osterzeit)")
      130. set_Cal( Ostern + 21, "", "Jubilate (ev:3.So n Ostern)(rk:4.So der Osterzeit)")
      131. set_Cal( Ostern + 28, "", "Kantate (ev:4.So n Ostern)(rk:5.So der Osterzeit)")
      132. set_Cal( Ostern + 35, "", "Rogate (ev:5.So n Ostern)(rk:6.So der Osterzeit)")
      133. set_Cal( Ostern + 42, "", "Exaudi (ev:6.So n Ostern)(rk:7.So der Osterzeit)")
      134. Case Y >= 1334 : set_Cal( Ostern + 56, "", "Trinitatis (8. So n Ostern; 1. SO n Pfingsten) Dreifaltigkeit/Dreieinigkeit")
      135. Case Y >= 1856 : set_Cal( Ostern + 63, "", "Herz Jesu Fest (2. SO n Pfingsten)")
      136. // --- Ausgabe der Daten ---
      137. ClearList 0
      138. var string wds = "MoDiMiDoFrSaSo"
      139. With YearInfo
      140. D = 1 : M = 1 : Y = .yYear%
      141. With DayInfo[1]
      142. WD = .dWeekday%
      143. DP = .dDP!
      144. EndWith
      145. AddString(0, "Kalender " $ Str$(Y) )
      146. AddString(0, "\nSchaltjahr: " $ if(.yIsLeap%,"Ja","Nein" ))
      147. AddString(0, "Feiertage berechnet für Bundesland - " $ Bundesland )
      148. AddString(0, "Wieviele Tage hat das Jahr? " $ Str$(.yNoOfDays%) )
      149. AddString(0, "Wieviele Tage davon sind Arbeitstage? " $ Str$(.yNoOfWorkdays%) )
      150. AddString(0, "Summe der Wochenend-Tage dieses Jahres: " $ Str$(.yNoOfWeekend%) )
      151. AddString(0, "Summe der Feiertage: " $ Str$(.yNoOfHolidays%) )
      152. AddString(0, "Summe der Feiertage, die auf Werktage fallen: " $ Str$(.yNoOfWorkHolidays%) )
      153. AddString(0, "Nr der ersten Woche des Jahres (kann auch 53 sein; Vorjahr): " $ Str$(.yFirstWeek%) )
      154. AddString(0, "Anzahl der Wochen des Jahres: " $ Str$(.yNoOfWeeks%) )
      155. AddString(0, "Nr der letzten Woche des Jahres (kann auch 1 sein; Folgejahr): " $ Str$(.yLastWeek%) )
      156. AddString(0, "\n" )
      157. EndWith
      Alles anzeigen
      Programmieren, das spannendste Detektivspiel der Welt.
    • Quellcode

      1. For i, 1, YearInfo.yNoOfDays%
      2. With DayInfo[i]
      3. xx = Format$("%2d",.dDay%) $ "." $ Format$("%2d",.dMonth%) $ "." $ Format$("%4d",.dYear%) $ " " $ Mid$(wds,(.dWeekday% - 1) * 2 + 1,2) $ " " $ \
      4. if(.dIsWorkday%,"a",".") $ if(.dIsHoliday%,"f",".") $ if(.dIsWorkHoliday%,"F",".") $ " [" $ Format$("%2d",.dWeekNo%) $ "] " $ get_Cal(.dDayno%, .dIsHoliday%)
      5. AddString(0, xx )
      6. EndWith
      7. Inc D
      8. If D > MonthInfo[M].mNoOfDays% ' Monatswechsel
      9. Select M
      10. CaseOf 1 : xx = "Januar" : CaseOf 2 : xx = "Februar" : CaseOf 3 : xx = "März" : CaseOf 4 : xx = "April" : CaseOf 5 : xx = "Mai" : CaseOf 6 : xx = "Juni"
      11. CaseOf 7 : xx = "Juli" : CaseOf 8 : xx = "August" : CaseOf 9 : xx = "September" : CaseOf 10 : xx = "Oktober" : CaseOf 11 : xx = "November" : CaseOf 12 : xx = "Dezember"
      12. EndSelect
      13. AddString(0, xx )
      14. With MonthInfo[M]
      15. AddString(0, "Wieviele Tage (Ultimo) hat der Monat? " $ Str$(.mNoOfDays%) )
      16. AddString(0, "Wieviele Tage sind Arbeitstage? " $ Str$(.mNoOfWorkdays%) )
      17. AddString(0, "Summe der Wochenend-Tage dieses Monats: " $ Str$(.mNoOfWeekend%) )
      18. AddString(0, "Summe der Feiertage dieses Monats: " $ Str$(.mNoOfHolidays%) )
      19. AddString(0, "Summe der Feiertage, die auf Werktage fallen: " $ Str$(.mNoOfWorkHolidays%) )
      20. AddString(0, "\n" )
      21. EndWith
      22. D = 1
      23. Inc M
      24. EndIf
      25. Inc WD : Case WD > 7 : Dec WD,7
      26. If WD = Beginning_of_the_Week ' Wochenwechsel
      27. AddString(0, "\n" )
      28. EndIf
      29. DP = DP + 1
      30. EndFor
      31. ' Kalenderdatei
      32. Declare int err
      33. MkDir "C:\TEMP"
      34. err = %IOResult
      35. var string Kalenderdatei = "C:\TEMP\KALENDER_" $ Str$(Y) $ "_TMP.txt"
      36. Move("ListToFile",Kalenderdatei)
      37. err = %IOResult
      38. ClearList 0
      39. Shell "NotePad " $ Kalenderdatei
      40. err = %IOResult
      41. Return 0
      42. EndProc
      43. // "BB|BE|BW|BY|HB|HE|HH|MV|NI|NW|RP|SH|SL|SN|ST|TH" (ISO 3166-2:DE)
      44. Create_CalendarInfo( 2014, dies_ist_mein_Bundesland)
      45. Create_CalendarInfo( 2015, dies_ist_mein_Bundesland)
      46. Create_CalendarInfo( 2016, dies_ist_mein_Bundesland)
      47. Create_CalendarInfo( 2017, dies_ist_mein_Bundesland)
      48. Create_CalendarInfo( 2018, dies_ist_mein_Bundesland)
      49. // Reset_Structures
      50. Dispose DayInfo[]
      51. Dispose MonthInfo[]
      52. Dispose YearInfo
      53. End
      Alles anzeigen
      Programmieren, das spannendste Detektivspiel der Welt.
    • Quellcode

      1. ' (etwas die Schere angesetzt)
      2. Kalender 2018
      3. Schaltjahr: Nein
      4. Feiertage berechnet für Bundesland - SH
      5. Wieviele Tage hat das Jahr? 365
      6. Wieviele Tage davon sind Arbeitstage? 261
      7. Summe der Wochenend-Tage dieses Jahres: 104
      8. Summe der Feiertage: 9
      9. Summe der Feiertage, die auf Werktage fallen: 9
      10. Nr der ersten Woche des Jahres (kann auch 53 sein; Vorjahr): 1
      11. Anzahl der Wochen des Jahres: 52
      12. Nr der letzten Woche des Jahres (kann auch 1 sein; Folgejahr): 1
      13. 1. 1.2018 Mo afF [ 1] Neujahr [F]
      14. 2. 1.2018 Di a.. [ 1]
      15. 3. 1.2018 Mi a.. [ 1]
      16. 4. 1.2018 Do a.. [ 1]
      17. 5. 1.2018 Fr a.. [ 1]
      18. 6. 1.2018 Sa ... [ 1] Hl. 3 Könige (Epiphanias) [BW,BY,ST]
      19. 7. 1.2018 So ... [ 1] 1. So. n. Epiphanias
      20. *** *** ***
      21. 14. 5.2018 Mo a.. [20]
      22. 15. 5.2018 Di a.. [20]
      23. 16. 5.2018 Mi a.. [20]
      24. 17. 5.2018 Do a.. [20]
      25. 18. 5.2018 Fr a.. [20]
      26. 19. 5.2018 Sa ... [20]
      27. 20. 5.2018 So ... [20] Pfingstsonntag [BB] (7.So n Ostern)
      28. 21. 5.2018 Mo afF [21] Pfingstmontag [F]
      29. 22. 5.2018 Di a.. [21]
      30. 23. 5.2018 Mi a.. [21]
      31. 24. 5.2018 Do a.. [21] Fronleichnam [BW,BY,HE,NW,RP,SL] (Corpus Domini, Corpus Christi)
      32. 25. 5.2018 Fr a.. [21]
      33. 26. 5.2018 Sa ... [21]
      34. 27. 5.2018 So ... [21] Trinitatis (8. So n Ostern; 1. SO n Pfingsten) Dreifaltigkeit/Dreieinigkeit
      35. 28. 5.2018 Mo a.. [22]
      36. 29. 5.2018 Di a.. [22]
      37. 30. 5.2018 Mi a.. [22]
      38. 31. 5.2018 Do a.. [22]
      39. Mai
      40. Wieviele Tage (Ultimo) hat der Monat? 31
      41. Wieviele Tage sind Arbeitstage? 23
      42. Summe der Wochenend-Tage dieses Monats: 8
      43. Summe der Feiertage dieses Monats: 3
      44. Summe der Feiertage, die auf Werktage fallen: 3
      45. 1. 6.2018 Fr a.. [22]
      46. 2. 6.2018 Sa ... [22]
      47. 3. 6.2018 So ... [22] 1. So. n. Trinitatis
      48. Herz Jesu Fest (2. SO n Pfingsten)
      49. 4. 6.2018 Mo a.. [23]
      50. 5. 6.2018 Di a.. [23]
      51. 6. 6.2018 Mi a.. [23]
      52. 7. 6.2018 Do a.. [23]
      53. 8. 6.2018 Fr a.. [23]
      54. 9. 6.2018 Sa ... [23]
      55. 10. 6.2018 So ... [23] 2. So. n. Trinitatis
      56. 11. 6.2018 Mo a.. [24]
      57. 12. 6.2018 Di a.. [24]
      58. 13. 6.2018 Mi a.. [24]
      59. 14. 6.2018 Do a.. [24]
      60. 15. 6.2018 Fr a.. [24]
      61. 16. 6.2018 Sa ... [24]
      62. 17. 6.2018 So ... [24] Tag der deutschen Einheit [Gedenktag]
      63. 3. So. n. Trinitatis
      64. 18. 6.2018 Mo a.. [25]
      65. 19. 6.2018 Di a.. [25]
      66. 20. 6.2018 Mi a.. [25]
      67. 21. 6.2018 Do a.. [25] Sommer-Sonnenwende
      68. 22. 6.2018 Fr a.. [25] Sternzeichen Krebs
      69. 23. 6.2018 Sa ... [25]
      70. 24. 6.2018 So ... [25] Johannistag
      71. 4. So. n. Trinitatis
      72. 25. 6.2018 Mo a.. [26]
      73. 26. 6.2018 Di a.. [26]
      74. 27. 6.2018 Mi a.. [26] Siebenschläfer
      75. 28. 6.2018 Do a.. [26]
      76. 29. 6.2018 Fr a.. [26] Peter und Paul
      77. 30. 6.2018 Sa ... [26]
      78. Juni
      79. Wieviele Tage (Ultimo) hat der Monat? 30
      80. Wieviele Tage sind Arbeitstage? 21
      81. Summe der Wochenend-Tage dieses Monats: 9
      82. Summe der Feiertage dieses Monats: 0
      83. Summe der Feiertage, die auf Werktage fallen: 0
      84. 1. 7.2018 So ... [26] 5. So. n. Trinitatis
      85. 2. 7.2018 Mo a.. [27]
      86. 3. 7.2018 Di a.. [27]
      87. 4. 7.2018 Mi a.. [27]
      88. 5. 7.2018 Do a.. [27]
      89. 6. 7.2018 Fr a.. [27]
      90. 7. 7.2018 Sa ... [27]
      91. 8. 7.2018 So ... [27] 6. So. n. Trinitatis
      92. 9. 7.2018 Mo a.. [28]
      93. 10. 7.2018 Di a.. [28]
      94. 11. 7.2018 Mi a.. [28]
      95. 12. 7.2018 Do a.. [28]
      96. 13. 7.2018 Fr a.. [28]
      97. 14. 7.2018 Sa ... [28]
      98. 15. 7.2018 So ... [28] 7. So. n. Trinitatis
      99. 16. 7.2018 Mo a.. [29]
      100. 17. 7.2018 Di a.. [29]
      101. 18. 7.2018 Mi a.. [29]
      102. 19. 7.2018 Do a.. [29]
      103. 20. 7.2018 Fr a.. [29]
      104. 21. 7.2018 Sa ... [29]
      105. 22. 7.2018 So ... [29] 8. So. n. Trinitatis
      106. 23. 7.2018 Mo a.. [30] Sternzeichen Löwe
      107. 24. 7.2018 Di a.. [30]
      108. 25. 7.2018 Mi a.. [30]
      109. 26. 7.2018 Do a.. [30]
      110. 27. 7.2018 Fr a.. [30]
      111. 28. 7.2018 Sa ... [30]
      112. 29. 7.2018 So ... [30] 9. So. n. Trinitatis
      113. 30. 7.2018 Mo a.. [31]
      114. 31. 7.2018 Di a.. [31]
      115. Juli
      116. Wieviele Tage (Ultimo) hat der Monat? 31
      117. Wieviele Tage sind Arbeitstage? 22
      118. Summe der Wochenend-Tage dieses Monats: 9
      119. Summe der Feiertage dieses Monats: 0
      120. Summe der Feiertage, die auf Werktage fallen: 0
      121. 1. 8.2018 Mi a.. [31]
      122. 2. 8.2018 Do a.. [31]
      123. 3. 8.2018 Fr a.. [31]
      124. 4. 8.2018 Sa ... [31]
      125. 5. 8.2018 So ... [31] 10. So. n. Trinitatis
      126. 6. 8.2018 Mo a.. [32]
      127. 7. 8.2018 Di a.. [32]
      128. 8. 8.2018 Mi a.. [32]
      129. 9. 8.2018 Do a.. [32]
      130. 10. 8.2018 Fr a.. [32]
      131. 11. 8.2018 Sa ... [32]
      132. 12. 8.2018 So ... [32] 11. So. n. Trinitatis
      133. 13. 8.2018 Mo a.. [33]
      134. 14. 8.2018 Di a.. [33]
      135. 15. 8.2018 Mi a.. [33] Mariä Himmelfahrt [BY,SL]
      136. 16. 8.2018 Do a.. [33]
      137. 17. 8.2018 Fr a.. [33]
      138. 18. 8.2018 Sa ... [33]
      139. 19. 8.2018 So ... [33] 12. So. n. Trinitatis
      140. 20. 8.2018 Mo a.. [34]
      141. 21. 8.2018 Di a.. [34]
      142. 22. 8.2018 Mi a.. [34]
      143. 23. 8.2018 Do a.. [34]
      144. 24. 8.2018 Fr a.. [34] Bartholomäustag
      145. Sternzeichen Jungfrau
      146. 25. 8.2018 Sa ... [34]
      147. 26. 8.2018 So ... [34] 13. So. n. Trinitatis
      148. 27. 8.2018 Mo a.. [35]
      149. 28. 8.2018 Di a.. [35]
      150. 29. 8.2018 Mi a.. [35]
      151. 30. 8.2018 Do a.. [35]
      152. 31. 8.2018 Fr a.. [35]
      153. August
      154. Wieviele Tage (Ultimo) hat der Monat? 31
      155. Wieviele Tage sind Arbeitstage? 23
      156. Summe der Wochenend-Tage dieses Monats: 8
      157. Summe der Feiertage dieses Monats: 0
      158. Summe der Feiertage, die auf Werktage fallen: 0
      159. 1. 9.2018 Sa ... [35] Ägidii
      160. 2. 9.2018 So ... [35] 14. So. n. Trinitatis
      161. Erntedankfest (1. SO i Sept) [rk]
      162. 3. 9.2018 Mo a.. [36]
      163. 4. 9.2018 Di a.. [36]
      164. 5. 9.2018 Mi a.. [36]
      165. 6. 9.2018 Do a.. [36]
      166. 7. 9.2018 Fr a.. [36]
      167. 8. 9.2018 Sa ... [36] Mariä Geburt
      168. 9. 9.2018 So ... [36] 15. So. n. Trinitatis
      169. 10. 9.2018 Mo a.. [37]
      170. 11. 9.2018 Di a.. [37]
      171. 12. 9.2018 Mi a.. [37]
      172. 13. 9.2018 Do a.. [37]
      173. 14. 9.2018 Fr a.. [37]
      174. 15. 9.2018 Sa ... [37]
      175. 16. 9.2018 So ... [37] 16. So. n. Trinitatis
      176. 17. 9.2018 Mo a.. [38]
      177. 18. 9.2018 Di a.. [38]
      178. 19. 9.2018 Mi a.. [38]
      179. 20. 9.2018 Do a.. [38]
      180. 21. 9.2018 Fr a.. [38]
      181. 22. 9.2018 Sa ... [38] Herbst-Tagundnachtgleiche
      182. 23. 9.2018 So ... [38] 17. So. n. Trinitatis
      183. 24. 9.2018 Mo a.. [39] Sternzeichen Waage
      184. 25. 9.2018 Di a.. [39]
      185. 26. 9.2018 Mi a.. [39]
      186. 27. 9.2018 Do a.. [39]
      187. 28. 9.2018 Fr a.. [39]
      188. 29. 9.2018 Sa ... [39] Michaelis
      189. 30. 9.2018 So ... [39] 18. So. n. Trinitatis
      190. Erntedankfest (SO n Michaelis) [ev]
      191. September
      192. Wieviele Tage (Ultimo) hat der Monat? 30
      193. Wieviele Tage sind Arbeitstage? 20
      194. Summe der Wochenend-Tage dieses Monats: 10
      195. Summe der Feiertage dieses Monats: 0
      196. Summe der Feiertage, die auf Werktage fallen: 0
      197. 1.10.2018 Mo a.. [40]
      198. 2.10.2018 Di a.. [40]
      199. 3.10.2018 Mi afF [40] Tag der Deutschen Einheit [F]
      200. 4.10.2018 Do a.. [40]
      201. 5.10.2018 Fr a.. [40]
      202. 6.10.2018 Sa ... [40]
      203. 7.10.2018 So ... [40] 19. So. n. Trinitatis
      204. 8.10.2018 Mo a.. [41]
      205. 9.10.2018 Di a.. [41]
      206. 10.10.2018 Mi a.. [41]
      207. 11.10.2018 Do a.. [41]
      208. 12.10.2018 Fr a.. [41]
      209. 13.10.2018 Sa ... [41]
      210. 14.10.2018 So ... [41] 20. So. n. Trinitatis
      211. 15.10.2018 Mo a.. [42]
      212. 16.10.2018 Di a.. [42]
      213. 17.10.2018 Mi a.. [42]
      214. 18.10.2018 Do a.. [42]
      215. 19.10.2018 Fr a.. [42]
      216. 20.10.2018 Sa ... [42]
      217. 21.10.2018 So ... [42] 21. So. n. Trinitatis
      218. 22.10.2018 Mo a.. [43]
      219. 23.10.2018 Di a.. [43]
      220. 24.10.2018 Mi a.. [43] Sternzeichen Skorpion
      221. 25.10.2018 Do a.. [43]
      222. 26.10.2018 Fr a.. [43]
      223. 27.10.2018 Sa ... [43]
      224. 28.10.2018 So ... [43] 22. So. n. Trinitatis
      225. Ende der Sommerzeit (Normalzeit) (MEZ)
      226. 29.10.2018 Mo a.. [44]
      227. 30.10.2018 Di a.. [44]
      228. 31.10.2018 Mi a.. [44] Reformationstag [BB,MV,SN,ST,TH]
      229. Halloween
      230. Oktober
      231. Wieviele Tage (Ultimo) hat der Monat? 31
      232. Wieviele Tage sind Arbeitstage? 23
      233. Summe der Wochenend-Tage dieses Monats: 8
      234. Summe der Feiertage dieses Monats: 1
      235. Summe der Feiertage, die auf Werktage fallen: 1
      236. 1.11.2018 Do a.. [44] Allerheiligen [BW,BY,NW,RP,SL]
      237. 2.11.2018 Fr a.. [44] Allerseelen
      238. 3.11.2018 Sa ... [44]
      239. 4.11.2018 So ... [44] 23. So. n. Trinitatis
      240. 5.11.2018 Mo a.. [45]
      241. 6.11.2018 Di a.. [45]
      242. 7.11.2018 Mi a.. [45]
      243. 8.11.2018 Do a.. [45]
      244. 9.11.2018 Fr a.. [45]
      245. 10.11.2018 Sa ... [45]
      246. 11.11.2018 So ... [45] Martinstag (Martini)
      247. 24. So. n. Trinitatis
      248. Drittletzter SO des Kirchenjahres
      249. 12.11.2018 Mo a.. [46]
      250. 13.11.2018 Di a.. [46]
      251. 14.11.2018 Mi a.. [46]
      252. 15.11.2018 Do a.. [46]
      253. 16.11.2018 Fr a.. [46]
      254. 17.11.2018 Sa ... [46]
      255. 18.11.2018 So ... [46] Volkstrauertag
      256. 19.11.2018 Mo a.. [47]
      257. 20.11.2018 Di a.. [47]
      258. 21.11.2018 Mi a.. [47] Buß- und Bettag [SN]
      259. 22.11.2018 Do a.. [47]
      260. 23.11.2018 Fr a.. [47] Sternzeichen Schütze
      261. 24.11.2018 Sa ... [47]
      262. 25.11.2018 So ... [47] Totensonntag (Ewigkeitssonntag) [G]
      263. Christkönigsfest [rk]
      264. 26.11.2018 Mo a.. [48]
      265. 27.11.2018 Di a.. [48]
      266. 28.11.2018 Mi a.. [48]
      267. 29.11.2018 Do a.. [48]
      268. 30.11.2018 Fr a.. [48]
      269. November
      270. Wieviele Tage (Ultimo) hat der Monat? 30
      271. Wieviele Tage sind Arbeitstage? 22
      272. Summe der Wochenend-Tage dieses Monats: 8
      273. Summe der Feiertage dieses Monats: 0
      274. Summe der Feiertage, die auf Werktage fallen: 0
      275. 1.12.2018 Sa ... [48]
      276. 2.12.2018 So ... [48] 1. Advent
      277. 3.12.2018 Mo a.. [49]
      278. 4.12.2018 Di a.. [49]
      279. 5.12.2018 Mi a.. [49]
      280. 6.12.2018 Do a.. [49] Nikolaus
      281. 7.12.2018 Fr a.. [49]
      282. 8.12.2018 Sa ... [49] Mariä Empfängnis
      283. 9.12.2018 So ... [49] 2. Advent
      284. 10.12.2018 Mo a.. [50]
      285. 11.12.2018 Di a.. [50]
      286. 12.12.2018 Mi a.. [50]
      287. 13.12.2018 Do a.. [50]
      288. 14.12.2018 Fr a.. [50]
      289. 15.12.2018 Sa ... [50]
      290. 16.12.2018 So ... [50] 3. Advent
      291. 17.12.2018 Mo a.. [51]
      292. 18.12.2018 Di a.. [51]
      293. 19.12.2018 Mi a.. [51]
      294. 20.12.2018 Do a.. [51]
      295. 21.12.2018 Fr a.. [51] Winter-Sonnenwende
      296. 22.12.2018 Sa ... [51] Sternzeichen Steinbock
      297. 23.12.2018 So ... [51] 4. Advent
      298. 24.12.2018 Mo a.. [52] Heiligabend
      299. 25.12.2018 Di afF [52] 1. Weihnachtsfeiertag [F]
      300. 26.12.2018 Mi afF [52] 2. Weihnachtsfeiertag [F]
      301. 27.12.2018 Do a.. [52]
      302. 28.12.2018 Fr a.. [52]
      303. 29.12.2018 Sa ... [52]
      304. 30.12.2018 So ... [52] So. n. Weihnachten
      305. 31.12.2018 Mo a.. [ 1] Silvester
      306. Dezember
      307. Wieviele Tage (Ultimo) hat der Monat? 31
      308. Wieviele Tage sind Arbeitstage? 21
      309. Summe der Wochenend-Tage dieses Monats: 10
      310. Summe der Feiertage dieses Monats: 2
      311. Summe der Feiertage, die auf Werktage fallen: 2
      Alles anzeigen
      Programmieren, das spannendste Detektivspiel der Welt.
    • Keine Ahnung wo ich das her habe...

      Quellcode

      1. ' Var integer LDiM[] = Array(integer 0,31,28,31,30,31,30,31,31,30,31,30,31)
      so klappt es natürlich einwandfrei

      Quellcode

      1. Var integer LDiM[] = 0,31,28,31,30,31,30,31,31,30,31,30,31


      Doch, jetzt weiß ich es wieder:

      Quellcode

      1. '!!! Strukturarrays sind möglich, aber man sollte ein Element extra spendieren !!!
      2. SetSize DayInfo[],367
      3. SetSize MonthInfo[],13
      Das Strukturarray funktionierte nicht, aber...

      Quellcode

      1. For i, 1, 12
      2. With MonthInfo[i]
      3. .mNoOfDays% = LDiM[i]
      4. '...
      5. EndWith
      6. EndFor
      "Element existiert nicht" - Fehler in der LDiM-Zeile leitete mich in die Irre.

      Es war gar nicht LDiM[] sondern das Strukturarray MonthInfo[].

      P.S.:
      Das nächste Mal stehen alle zugehörigen Quellcodes auch in EINEM Artikel - versprochen.
      Programmieren, das spannendste Detektivspiel der Welt.
    • Das mit der Hilfe dauert leider noch etwas. Im kurzen Urlaub zwischen den Jahren sind andere Dinge dazwischen gekommen.
      Ich habe aber XProfan4 schon fertig gemacht und werde heute oder morgen diese Version allen Subscriptions-Kunden zur Verfügung stellen.
      Hilfe und angepasste Version der Entwicklungsumgebung folgen dann später. Ich arbeite dran.

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de
    • Hallo Roland,
      wäre in der Hilfe auch eine Art
      Versions-History (mit den neuen Funktionen/Befehlen)
      möglich ?

      Hintergrund :
      Oftmals möchte man jemandem hier im Forum, oder auch in den anderen,
      mit Code helfen. Da stellte sich mir oft die Frage :
      Ist die Funktion/Befehl xy in Version 10, 11, x2, X3
      vorhanden ? Je nachdem, welche Version der Fragensteller
      hat, kommt man da schnell ins Schwitzen.
      Also mal grob gesagt :
      Eine Aufstellung, welche Befehle/Funktionen bei welcher
      Version hinzu gekommen sind. Das genügt schon ab der
      Version 10 oder 11. Frühere Versionen hat wohl kaum
      noch jemand in Betrieb.
    • Zum Ersten: Für alle Subscriptionskunden gibt es unter dem gewohnten Link jetzt die fertig Version (eben noch ohne Hilfe und angepasstem XProfed).

      Zum zweiten: In der Hilfe wird bei (fast) allen Funktionen und Befehlen angezeigt, seit welcher Version es diese gibt und bei welcher Version es wesentliche Änderungen gab. Oftmals wird in der Beschreibung auch auf Änderungen gegenüber früheren Version hingewiesen.
      Außerdem gibt es in der Hildfe den Punkt "Historie" (direkt hinter "Was ist neu ..."). Da kann man nachschauen, was in welcher Version hinzugekommen ist.

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de