holidays.bmx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. Rem
  2. Generate a set of dates using a collection of date generators
  3. Output looks like:
  4. Enter year : 2007
  5. Holidays for 2007 :
  6. 2007-Jan-01 [Mon]
  7. 2007-Jan-15 [Mon]
  8. 2007-Feb-13 [Tue]
  9. 2007-Jul-04 [Wed]
  10. 2007-Sep-03 [Mon]
  11. 2007-Nov-22 [Thu]
  12. 2007-Dec-25 [Tue]
  13. Number Holidays: 7
  14. End Rem
  15. SuperStrict
  16. Framework Boost.DateTime
  17. Import BRL.StandardIO
  18. Import BRL.LinkedList
  19. Local year:Int = Input("Enter year : ").toInt()
  20. Local holidays:TList = New TList
  21. holidays.addLast(New TPartialDate(1, EMonth.January)) ' Western New Year
  22. holidays.addLast(New TPartialDate(4, EMonth.July)) ' US Independence Day
  23. holidays.addLast(New TPartialDate(25, EMonth.December)) ' Christmas Day
  24. ' US labor day
  25. holidays.addLast(New TNthDayOfWeekInMonth(ENthDay.First, EWeekday.Monday, EMonth.September))
  26. ' Martin Luther King Day
  27. holidays.addLast(New TNthDayOfWeekInMonth(ENthDay.Third, EWeekday.Monday, EMonth.January))
  28. ' Presidents day
  29. holidays.addLast(New TNthDayOfWeekInMonth(ENthDay.Second, EWeekday.Tuesday, EMonth.February))
  30. ' Thanksgiving
  31. holidays.addLast(New TNthDayOfWeekInMonth(ENthDay.Fourth, EWeekday.Thursday, EMonth.November))
  32. Local allHolidays:TList = New TList
  33. For Local hol:TYearBasedGenerator = EachIn holidays
  34. allHolidays.addLast(hol.getDate(year))
  35. Next
  36. ' get the dates into the correct order!
  37. allHolidays.sort()
  38. ' print out the holidays for the year
  39. Print "~n~nHolidays for " + year + " :"
  40. For Local holiday:TDate = EachIn allHolidays
  41. printDate(holiday)
  42. Next
  43. Print "~nNumber Holidays: " + allHolidays.count()
  44. Function printDate(date:TDate)
  45. Print date.toString() + " [" + WeekDay(date.dayOfWeek()) + "]"
  46. End Function