Для опроса и назначения даты используются процедуры GetDate и SetDate, входящие в стандартный модуль Dos. Заголовки этих процедур имеют вид:
GetDate(Var год,месяц,число,день_недели: word);
SetDate(год,месяц,число: word).
Допустимые диапазоны для составных частей даты:
год 1980..2099
месяц 1..12
число 1..31
день недели 0..6
День недели с номером 0 - это воскресенье.
Процедуры GetDate и SetDate могут использоваться, например, для определения дня недели любого числа в диапазоне от 1980-го до 2099-го года.
Program WeekDay;
Uses Crt,Dos;
Type String11=string[11];
WeekAr=array[0..6] of String11;
Const WeekDays : WeekAr = ('воскресенье','понедельник',
'вторник','среда','четверг',
'пятница','суббота');
Var Y,M,D,Wd : word;
w : String11;
{ ----------------------------- }
FunctionWhatDay(Year,Month,Day : word): String11;
VarYf,Mf,Df,Wdf : word;
Begin
GetDate(Yf,Mf,Df,Wdf);
SetDate(Year,Month,Day);
GetDate(Year,Month,Day,Wdf);
WhatDay:=WeekDays[Wdf];
SetDate(Yf,Mf,Df);
End { WhatDay };
{ ----------------------------- }
Begin
ClrScr;
Writeln('Введите год'); Readln(Y);
Writeln('Введите месяц'); Readln(M);
Writeln('Введите число'); Readln(D);
w:=WhatDay(Y,M,D);
Writeln(' год: ',Y);
Writeln(' месяц: ',M);
Writeln(' число: ',D);
Writeln(' день недели: ',w);
End.
Назначением функции WhatDay является определение дня недели для произвольной даты. Для этого запоминается текущая дата в локальных переменных Yf, Mf, Df, записывается в календарь компьютера заданная дата, при обращении к процедуре GetDate определяется день недели, а затем процедурой SetDate восстанавливается текущая дата.