{$APPTYPE CONSOLE}
uses
Windows, SysUtils, DateUtils;
const
CMonths:
array
[
1..12
]
of
String
= (
'January'
,
'February'
,
'March'
,
'April'
,
'May'
,
'June'
,
'July'
,
'August'
,
'September'
,
'Octomber'
,
'November'
,
'December'
);
var
SYear:
Word
;
SMonth:
Byte
;
function
FillStr(
const
aStr:
String
;
const
aLength:
byte
):
String
;
var
b:
byte
;
begin
Result:=
''
;
if
aLength-Length(aStr) >
0
then
for
b:=
1
to
aLength-Length(aStr)
do
Result:=Result+
' '
;
Result:=Result+aStr;
end
;
procedure
WriteMonth(
const
aYear:
Word
;
const
aMonth:
Byte
);
var
SDay:
Byte
;
col, b:
byte
;
begin
Writeln
(
' '
,CMonths[aMonth]);
col:=DayOfWeek(EncodeDate(aYear,aMonth,
1
))-
2
;
if
(col >
1
)
and
(col <
255
)
then
for
b:=
1
to
col
do
Write
(
' '
);
if
col =
255
then
col:=
1
;
for
SDay:=
1
to
DaysInMonth(EncodeDate(SYear,SMonth,
1
))
do
begin
Inc(Col);
if
Col >=
8
then
begin
Col:=
1
;
Writeln
;
end
;
write
(FillStr(Inttostr(SDay),
3
));
end
;
end
;
begin
SYear:=YearOf(Now());
Writeln
(
'Year: '
,SYear);
for
SMonth:=
1
to
12
do
begin
WriteMonth(SYear, SMonth);
Writeln
;
Writeln
;
end
;
Readln;
end
.