home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyth_os2.zip / python-1.0.2 / Demo / stoffel / Last_Wed.T < prev    next >
Text File  |  1992-09-20  |  2KB  |  65 lines

  1. % -- Program: Last_Wed.T
  2. % -- Language: Turing
  3. % -- Written: JCE, 89-3-20
  4. % -- Purpose: To determine the last Wednesday of every month in a given year.
  5.  
  6. type Days : enum (Su, Mo, Tu, We, Th, Fr, Sa, Invalid)
  7.  
  8. const Special_day := Days.We /* parameter? */
  9. const Day_name : array Days of string := init
  10.     ("Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Sat", "XXX")
  11.  
  12. const Jan := 1;  const Feb := 2;  const Dec := 12 /* enum/for problem? */
  13. var Days_in : array Jan .. Dec of 28 .. 31 := init
  14.     (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  15.  
  16. fcn Is_leap (Year : int) : boolean
  17.     result Year mod 4 = 0
  18. end Is_leap
  19.  
  20. fcn Next (Day : Days) : Days
  21.     if Day = Days.Sa then
  22.     result Days.Su
  23.     else
  24.     result succ (Day)
  25.     end if
  26. end Next
  27.  
  28. proc Get_parameters (var Year : int, var Day_of_week : Days)
  29.     put "Please enter the year, e.g. 89: " ..;
  30.     get Year
  31.     loop
  32.     put "Enter the day of the week that 1 Jan. fell on, e.g. Su: " ..
  33.     var In_day_name : string
  34.     get In_day_name
  35.     for D : Days
  36.         Day_of_week := D
  37.         exit when In_day_name (1 .. 2) = Day_name (D) (1 .. 2)
  38.     end for
  39.     exit when Day_of_week not= Days.Invalid
  40.     end loop
  41. end Get_parameters
  42.  
  43. % -- -- -- -- -- -- -- Main -- -- -- -- -- -- --
  44.  
  45. var Year : int
  46. var Day_of_week : Days
  47. Get_parameters (Year, Day_of_week)
  48. if Is_leap (Year) then
  49.     Days_in (Feb) := 29
  50. end if
  51.  
  52. put skip, "Last ", Day_name (Special_day), "day of every month: "
  53.  
  54. for Month : Jan .. Dec
  55.     for Day_of_month : 1 .. Days_in (Month)
  56.     if Day_of_week = Special_day then
  57.         if Days_in (Month) - Day_of_month < 7 then
  58.         put Month : 2, ".  ", Year, "-", Month, "-",
  59.             Day_of_month
  60.         end if
  61.     end if
  62.     Day_of_week := Next (Day_of_week)
  63.     end for
  64. end for
  65.