Hamilton LaboratoriesHamilton C shell 2012User guideSamples

easter.csh

Oregon Coast

easter.csh
Previous | Next

#  Calculate when Easter will occur in any given year.
#  Copyright (c) 1991-2012 by Hamilton Laboratories.  All rights reserved.

proc easter (year)
   local a, b, c, d, e, f, g, h, i, k, l, m, n, month, day
   set month = January February March April May June ^
      July August September October November December
   if (year == "") @ year = `date`:3
   if (year >= 1583) then
      # Gregorian calendar
      @ a = year % 19;  @ b = year // 100;  @ c = year % 100
      @ d = b // 4;  @ e = b % 4;  @ f = (b + 8) // 25
      @ g = (b - f + 1) // 3
      @ h = (19 * a + b - d - g + 15) % 30
      @ i = c // 4;  @ k = c % 4
      @ l = (32 + 2 * e + 2 * i - h - k) % 7
      @ m = (a + 11 * h + 22 * l) // 451
      @ n = h + l - 7 * m + 114
      @ month = month[n // 31 - 1]
      @ day = n % 31 + 1
   else
      # Julian calendar
      @ a = year % 4;  @ b = year % 7;  @ c = year % 19;  
      @ d = (19 * c + 15) % 30
      @ e = (2 * a + 4 * b - d + 34) % 7
      @ f = d + e + 114
      @ month = month[f // 31 - 1]
      @ day = f % 31 + 1
   end
   return "$month $day $year"
end

easter $argv

Previous | Next