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, MONTH_Jan)) ' Western New Year
  22. holidays.addLast(New TPartialDate(4, MONTH_JUL)) ' US Independence Day
  23. holidays.addLast(New TPartialDate(25, MONTH_DEC)) ' Christmas Day
  24. ' US labor day
  25. holidays.addLast(New TNthDayOfWeekInMonth(DAY_FIRST, WEEKDAY_MONDAY, MONTH_SEP))
  26. ' Martin Luther King Day
  27. holidays.addLast(New TNthDayOfWeekInMonth(DAY_THIRD, WEEKDAY_MONDAY, MONTH_JAN))
  28. ' Presidents day
  29. holidays.addLast(New TNthDayOfWeekInMonth(DAY_SECOND, WEEKDAY_TUESDAY, MONTH_FEB))
  30. ' Thanksgiving
  31. holidays.addLast(New TNthDayOfWeekInMonth(DAY_FOURTH, WEEKDAY_THURSDAY, MONTH_NOV))
  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