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 >
Wrap
Text File
|
1992-09-20
|
2KB
|
65 lines
% -- Program: Last_Wed.T
% -- Language: Turing
% -- Written: JCE, 89-3-20
% -- Purpose: To determine the last Wednesday of every month in a given year.
type Days : enum (Su, Mo, Tu, We, Th, Fr, Sa, Invalid)
const Special_day := Days.We /* parameter? */
const Day_name : array Days of string := init
("Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Sat", "XXX")
const Jan := 1; const Feb := 2; const Dec := 12 /* enum/for problem? */
var Days_in : array Jan .. Dec of 28 .. 31 := init
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
fcn Is_leap (Year : int) : boolean
result Year mod 4 = 0
end Is_leap
fcn Next (Day : Days) : Days
if Day = Days.Sa then
result Days.Su
else
result succ (Day)
end if
end Next
proc Get_parameters (var Year : int, var Day_of_week : Days)
put "Please enter the year, e.g. 89: " ..;
get Year
loop
put "Enter the day of the week that 1 Jan. fell on, e.g. Su: " ..
var In_day_name : string
get In_day_name
for D : Days
Day_of_week := D
exit when In_day_name (1 .. 2) = Day_name (D) (1 .. 2)
end for
exit when Day_of_week not= Days.Invalid
end loop
end Get_parameters
% -- -- -- -- -- -- -- Main -- -- -- -- -- -- --
var Year : int
var Day_of_week : Days
Get_parameters (Year, Day_of_week)
if Is_leap (Year) then
Days_in (Feb) := 29
end if
put skip, "Last ", Day_name (Special_day), "day of every month: "
for Month : Jan .. Dec
for Day_of_month : 1 .. Days_in (Month)
if Day_of_week = Special_day then
if Days_in (Month) - Day_of_month < 7 then
put Month : 2, ". ", Year, "-", Month, "-",
Day_of_month
end if
end if
Day_of_week := Next (Day_of_week)
end for
end for