*Zellerday v0.1 *24/12/2020 *Author Brian Gaze *Zeller's rule *Pass in dayofmonth, month, year function main(args) *'reinit' * say "temps.gs " args * Get arguments if (args='?') return else day=subwrd(args,1);if(day='');day="";endif month=subwrd(args,2);if(month=''); month="";endif year = subwrd(args,3);if(year=''); year="";endif endif ****day of the month k k=day *****get m which is the month number,year ***** return day if month = MAR m= 1 endif if month = APR m= 2 endif if month = MAY m= 3 endif if month = JUN m= 4 endif if month = JUL m= 5 endif if month = AUG m= 6 endif if month = SEP m= 7 endif if month = OCT m= 8 endif if month = NOV m= 9 endif if month = DEC m= 10 endif if month = JAN m= 11 endif if month = FEB m= 12 endif *****Get last 2 digits of the year D = substr(year,3,2) *Subtract 1 from year if month is January or February if m=11 D=D-1 endif if m=12 D=D-1 endif *****C is first 2 digits of the year C=20 *get remainder of [(13*m-1)/5] xz = (13*m-1)/5 xzform=xz if valnum(xzform) =2 xzlen = strlen(xz) xz1dp = math_format('%.1f',xz) *substr (string, start, length) xzform= substr(xz1dp,1,xzlen-2) endif *get remainder of [D/4] xzd= D/4 xzdform=xzd if valnum(xzdform) =2 xzdlen= strlen(xzd) xzd1dp = math_format('%.1f',xzd) xzdform= substr(xzd1dp,1,xzdlen-3) endif *f = k + [(13*m-1)/5] + D + [D/4] + [C/4] - 2*C f = k + xzform + D + xzdform + C/4 - 2*C *grads command *rc = math_mod(num1,num2); *num1 any number *num2 any number not equal to zero *rc the integer part of the remainder when num1 is divided by num2 if f>-1 daynum = math_mod(f,7) endif if f<0 daynum = math_mod(f,-7) endif if daynum<0 daynum = daynum +7 endif if daynum=0 week = Sun endif if daynum=1 week = Mon endif if daynum=2 week = Tue endif if daynum=3 week = Wed endif if daynum=4 week = Thu endif if daynum=5 week = Fri endif if daynum=6 week = Sat endif return week