Lparameters pDate
Private xY, xC, xN, xK, xI
Private xJ, xM, xD, xHoliday
xHoliday = ''
Do Case
Case Month(pDate) = 1 And ;
Day(pDate) = 1
xHoliday = "New year's day"
Case Month(pDate) = 1 And ;
Day(pDate) = 2 And ;
Dow(pDate) = 2
xHoliday = "Monday after new year"
Case Month(pDate) = 2 And ;
Dow(pDate) = 2 And ;
Day(pDate) > 14 And ;
Day(pDate) < 22
xHoliday = "Family Day"
Case Month(pDate) = 5 And ;
DOW(pDate) = 2 And ;
DAY(pDate) > 21 And ;
DAY(pDate) < 29
xHoliday = 'Victoria Day'
Case Month(pDate) = 7 And ;
Day(pDate) = 1
xHoliday = 'Canada Day'
Case Month(pDate) = 7 And ;
Day(pDate) = 2 And ;
Dow(pDate) = 2
xHoliday = 'Monday after Canada Day'
Case Month(pDate) = 8 And ;
Dow(pDate) = 2 And ;
Day(pDate) < 8
xHoliday = 'Civil Holiday'
Case Month(pDate) = 9 And ;
Dow(pDate) = 2 And ;
Day(pDate) < 8
xHoliday = 'Labour Day'
Case Month(pDate) = 10 And ;
Dow(pDate) = 2 And ;
Day(pDate) > 7 And ;
Day(pDate) < 15
xHoliday = 'Thanksgiving'
Case Month(pDate) = 12 And ;
Day(pDate) = 25
xHoliday = 'Christmas Day'
Case Month(pDate) = 12 And ;
Day(pDate) = 26
xHoliday = 'Boxing Day'
Case Month(pDate) = 12 And ;
Day(pDate) = 27 And ;
Dow(pDate) = 2
xHoliday = 'Monday after Christmas'
Case Month(pDate) = 12 And ;
Day(pDate) = 28 And ;
Dow(pDate) = 2
xHoliday = 'Monday after Christmas'
Case Month(pDate) = 12 And ;
Day(pDate) = 27 And ;
Dow(pDate) = 3
xHoliday = 'Tuesday after Christmas'
Case Month(pDate) = 12 And ;
Day(pDate) = 28 And ;
Dow(pDate) = 3
xHoliday = 'Tuesday after Christmas'
Otherwise
xY = Year(pDate)
xC = Int(xY / 100)
xN = xY - 19 * Int(xY / 19)
xK = Int((xC - 17) / 25)
xI = xC - Int(xC / 4) - ;
Int((xC - xK) / 3) + 19 * xN + 15
xI = xI - 30 * Int(xI / 30)
xI = xI - Int(xI / 28) * (1 - Int(xI / 28) * ;
Int(28 / (xI + 1)) * Int((21 - xN) / 11))
xJ = xY + Int(xY / 4) + xI + 2 - xC + Int(xC / 4)
xJ = xJ - 7 * Int(xJ / 7)
xL = xI - xJ
xM = 3 + Int((xL + 40) / 44)
xD = xL + 28 - 31 * Int(xM / 4)
Do Case
Case pDate = Date(xY, xM, xD) - 2
xHoliday = 'Good Friday'
Case pDate = Date(xY, xM, xD) + 1
xHoliday = 'Easter Monday'
Case Dow(pDate) = 1
xHoliday = 'Sunday'
Case Dow(pDate) = 7
xHoliday = 'Saturday'
Endcase
Endcase
Return xHoliday
DOW(pDate) = 2 And ;
DAY(pDate) > 21 And ;
DAY(pDate) < 29
xHoliday = 'Victoria Day'
Case Month(pDate) = 7 And ;
Day(pDate) = 1
xHoliday = 'Canada Day'
Case Month(pDate) = 7 And ;
Day(pDate) = 2 And ;
Dow(pDate) = 2
xHoliday = 'Monday after Canada Day'
Case Month(pDate) = 8 And ;
Dow(pDate) = 2 And ;
Day(pDate) < 8
xHoliday = 'Civil Holiday'
Case Month(pDate) = 9 And ;
Dow(pDate) = 2 And ;
Day(pDate) < 8
xHoliday = 'Labour Day'
Case Month(pDate) = 10 And ;
Dow(pDate) = 2 And ;
Day(pDate) > 7 And ;
Day(pDate) < 15
xHoliday = 'Thanksgiving'
Case Month(pDate) = 12 And ;
Day(pDate) = 25
xHoliday = 'Christmas Day'
Case Month(pDate) = 12 And ;
Day(pDate) = 26
xHoliday = 'Boxing Day'
Case Month(pDate) = 12 And ;
Day(pDate) = 27 And ;
Dow(pDate) = 2
xHoliday = 'Monday after Christmas'
Case Month(pDate) = 12 And ;
Day(pDate) = 28 And ;
Dow(pDate) = 2
xHoliday = 'Monday after Christmas'
Case Month(pDate) = 12 And ;
Day(pDate) = 27 And ;
Dow(pDate) = 3
xHoliday = 'Tuesday after Christmas'
Case Month(pDate) = 12 And ;
Day(pDate) = 28 And ;
Dow(pDate) = 3
xHoliday = 'Tuesday after Christmas'
Otherwise
xY = Year(pDate)
xC = Int(xY / 100)
xN = xY - 19 * Int(xY / 19)
xK = Int((xC - 17) / 25)
xI = xC - Int(xC / 4) - ;
Int((xC - xK) / 3) + 19 * xN + 15
xI = xI - 30 * Int(xI / 30)
xI = xI - Int(xI / 28) * (1 - Int(xI / 28) * ;
Int(28 / (xI + 1)) * Int((21 - xN) / 11))
xJ = xY + Int(xY / 4) + xI + 2 - xC + Int(xC / 4)
xJ = xJ - 7 * Int(xJ / 7)
xL = xI - xJ
xM = 3 + Int((xL + 40) / 44)
xD = xL + 28 - 31 * Int(xM / 4)
Do Case
Case pDate = Date(xY, xM, xD) - 2
xHoliday = 'Good Friday'
Case pDate = Date(xY, xM, xD) + 1
xHoliday = 'Easter Monday'
Case Dow(pDate) = 1
xHoliday = 'Sunday'
Case Dow(pDate) = 7
xHoliday = 'Saturday'
Endcase
Endcase
Return xHoliday
No comments:
Post a Comment