! PROGRAM : DATE - This calculates the day of the week from a given ! month, day, and year ! AUTHOR : Bob Livesay; Data Pulse, Inc. ! We got this code out of a book of handy subroutines. ! I don't like its use of simplistic data names but it ! seems to work so I decided not to mess with it. ! NOTE: It is up to you to verify the validity of the ! date and the year must really be 4 digits. !------------------------------------------------------------------------ map1 DAY(7), S, 9 map1 MONTH'TABLE(12) map2 MONTH'DAYS, B, 1 map2 MONTH'CODE, B, 1 map2 MONTH, S, 9 DAY(1)="Sunday" : DAY(2)="Monday" : DAY(3)="Tuesday" DAY(4)="Wednesday" : DAY(5)="Thursday" : DAY(6)="Friday" DAY(7)="Saturday" MONTH'DAYS(1)=31 : MONTH'CODE(1)=0 : MONTH(1)="January" MONTH'DAYS(2)=28 : MONTH'CODE(2)=3 : MONTH(2)="February" MONTH'DAYS(3)=31 : MONTH'CODE(3)=3 : MONTH(3)="March" MONTH'DAYS(4)=30 : MONTH'CODE(4)=6 : MONTH(4)="April" MONTH'DAYS(5)=31 : MONTH'CODE(5)=1 : MONTH(5)="May" MONTH'DAYS(6)=30 : MONTH'CODE(6)=4 : MONTH(6)="June" MONTH'DAYS(7)=31 : MONTH'CODE(7)=6 : MONTH(7)="July" MONTH'DAYS(8)=31 : MONTH'CODE(8)=2 : MONTH(8)="August" MONTH'DAYS(9)=30 : MONTH'CODE(9)=5 : MONTH(9)="September" MONTH'DAYS(10)=31 : MONTH'CODE(10)=0 : MONTH(10)="October" MONTH'DAYS(11)=30 : MONTH'CODE(11)=3 : MONTH(11)="November" MONTH'DAYS(12)=31 : MONTH'CODE(12)=5 : MONTH(12)="December" START'JOB: MO=2 : DA=27 : YR=1987 gosub GET'DAY ?tab(-1,0); "When the date is "; MONTH(MO); " "; & DA using "#Z"; ", "; YR using "####"; " "; & "The day is "; DAY(DAY'OF'WEEK) end GET'DAY: I1=int((YR-1500)/100) A=I1*5+(I1+3)/4 I2=int(A-int(A/7)*7) Y2=int(YR/100) Y3=int(YR-Y2*100) A=Y3/4+Y3+DA+MONTH'CODE(MO)+I2 DAY'OF'WEEK=int(A-int(A/7)*7)+1 if MO>2 goto WRAPUP'DATE if Y3=0 then A=I1-1 :& T1=int(A-int(A/4)*4) :& if T1=0 then DAY'OF'WEEK=DAY'OF'WEEK-1 :& goto WRAPUP'DATE T1=int(YR-int(YR/4)*4) if T1<>0 goto WRAPUP'DATE if DAY'OF'WEEK=0 then DAY'OF'WEEK=6 DAY'OF'WEEK=DAY'OF'WEEK-1 WRAPUP'DATE: if DAY'OF'WEEK=0 then DAY'OF'WEEK=7 return