This code will help you to calculate the date of Thanksgiving for the current system year.
H NoMain *,Procedure Prototype D ThanksGiving PR D P ThanksGiving B Export *,Procedure Interface D ThanksGiving PI D D DayOfWeek S 2 0 D YrsPassed S 4 0 D Nov1 S D datfmt(*ISO) D ISO_Today S D datfmt(*ISO) D Thanksgiving S D datfmt(*ISO) D SatDay S D datfmt(*ISO) inz(D'2003-10-04') *,Make variable Nov1 the first day of November for the current year C Time ISO_Today C Eval YrsPassed = %subdt(ISO_Today:*Y)-2000 C Eval Nov1 = D'2000-11-01' + %years(YrsPassed) *,DayOfWeek 1=Sunday, 2=Monday........ *,If 0 then it is Saturday, make it 7 C Eval DayOfWeek = %rem(%diff(Nov1:SatDay:*D):7) C If DayOfWeek = 0 C Eval DayOfWeek = 7 C EndIf *,The following will take the first day of November *,add the number of days to get the first Thursday *,and then add 3 week to get the 4th Thursday. C Select *,Sun C When DayOfWeek = 1 C Eval ThanksGiving = Nov1 + %days(4) + %days(21) *,Mon C When DayOfWeek = 2 C Eval ThanksGiving = Nov1 + %days(3) + %days(21) *,Tues C When DayOfWeek = 3 C Eval ThanksGiving = Nov1 + %days(2) + %days(21) *,Wed C When DayOfWeek = 4 C Eval ThanksGiving = Nov1 + %days(1) + %days(21) *,Thu C When DayOfWeek = 5 C Eval ThanksGiving = Nov1 + %days(21) *,Fri C When DayOfWeek = 6 C Eval ThanksGiving = Nov1 + %days(6) + %days(21) *,Sat C When DayOfWeek = 7 C Eval ThanksGiving = Nov1 + %days(5) + %days(21) C EndSL C Return ThanksGiving P ThanksGiving E
================================== MORE INFORMATION ON THIS TOPIC ==================================
The Best Web Links: tips, tutorials and more.
Ask your programming questions--or help out your peers by answering them--in our live discussion forums.
Ask the Experts yourself: Our application development gurus are waiting to answer your programming questions.
This was first published in November 2003