Calendar: Difference between revisions
Content added Content deleted
(Add Seed7 example) |
|||
Line 560: | Line 560: | ||
puts cal(Integer(ARGV[0]), columns)</lang> |
puts cal(Integer(ARGV[0]), columns)</lang> |
||
=={{header|Seed7}}== |
|||
<lang seed7>$ include "seed7_05.s7i"; |
|||
include "time.s7i"; |
|||
const func string: center (in string: stri, in integer: length) is |
|||
return ("" lpad (length - length(stri)) div 2 <& stri) rpad length; |
|||
const proc: printCalendar (in integer: year, in integer: cols) is func |
|||
local |
|||
var time: date is time.value; |
|||
var integer: dayOfWeek is 0; |
|||
const array string: monthNames is [] ("January", "February", "March", "April", "May", "June", |
|||
"July", "August", "September", "October", "November", "December"); |
|||
var array array string: monthTable is 12 times 9 times ""; |
|||
var string: str is ""; |
|||
var integer: month is 0; |
|||
var integer: position is 0; |
|||
var integer: row is 0; |
|||
var integer: column is 0; |
|||
var integer: line is 0; |
|||
begin |
|||
for month range 1 to 12 do |
|||
monthTable[month][1] := " " & center(monthNames[month], 20); |
|||
monthTable[month][2] := " Mo Tu We Th Fr Sa Su"; |
|||
date := date(year, month, 1); |
|||
dayOfWeek := dayOfWeek(date); |
|||
for position range 1 to 43 do |
|||
if position >= dayOfWeek and position - dayOfWeek < daysInMonth(date.year, date.month) then |
|||
str := succ(position - dayOfWeek) lpad 3; |
|||
else |
|||
str := "" lpad 3; |
|||
end if; |
|||
monthTable[month][3 + pred(position) div 7] &:= str; |
|||
end for; |
|||
end for; |
|||
writeln(center("[Snoopy Picture]", cols * 24 + 4)); |
|||
writeln(center(str(year),cols * 24 + 4)); |
|||
writeln; |
|||
for row range 1 to succ(11 div cols) do |
|||
for line range 1 to 9 do |
|||
for column range 1 to cols do |
|||
if pred(row) * cols + column <= 12 then |
|||
write(" " & monthTable[pred(row) * cols + column][line]); |
|||
end if; |
|||
end for; |
|||
writeln; |
|||
end for; |
|||
end for; |
|||
end func; |
|||
const proc: main is func |
|||
begin |
|||
printCalendar(1969, 3); |
|||
end func;</lang> |
|||
The output of this program is: |
|||
<pre> |
|||
[Snoopy Picture] |
|||
1969 |
|||
January February March |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 1 2 1 2 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23 |
|||
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30 |
|||
31 |
|||
April May June |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 6 1 2 3 4 1 |
|||
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8 |
|||
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15 |
|||
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22 |
|||
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29 |
|||
30 |
|||
July August September |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 |
|||
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 |
|||
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 |
|||
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 |
|||
28 29 30 31 25 26 27 28 29 30 31 29 30 |
|||
October November December |
|||
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su |
|||
1 2 3 4 5 1 2 1 2 3 4 5 6 7 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
|||
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 |
|||
</pre> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |