system("dir a:"),
makewindow(2,7,7,"Directory for disk b:",0,40,20,35),
system("dir b:"),
makewindow(3,7,7,"",21,25,3,30).
Программа 31 представляет собой пример обслуживающей
программы копирования файлов с очень элегантным пользователь-
ским интерфейсом, основанном на управлении окнами. При такой
организации пользователь не обязан помнить, какое имя появля-
ется в команде ДОС copy (копирование) первым - имя копии или
имя файла, подлежащего копированию (это часто приводит к не-
разберихе многих начинающих пользователей ЭВМ). В программе
31 используется стандартный предикат concat (конкатенация),
который рассматривается в главе 9 и имеет вид:
concat(X,Y,Z)
Предикат вырабатывает истину, если переменная Z связана с ре-
зультатом конкатенации строк, с которыми связаны переменные X
и Y. Так, например, предикат
concat("hello"," mother",X)
будет удовлетворен и свяжет переменную X со значением "hello
mother" (здравствуй, мама), а предикат
concat("valerie","ann","valerie-ann")
выработает ложь (из-за лишнего дефиса в имени "valerie-ann").
/* Программа 31 */
goal
makewindow(1,7,7,"Source",0,0,20,35),
write("Which file do you want to copy ?"),
cursor(3,8),readln(X),
makewindow(2,7,7,"Destination",0,40,20,35),
write("What is the name of the new copy ?"),
cursor(3,8),readln(Y),
concat(X," ",X1),concat(X1,Y,Z),
concat("copy ",Z,W),
makewindow(3,7,7,"Process",14,15,8,50),
write(" Copyng ",X," to ",Y),cursor(2,3),
system(W).
Дата и время
~~~~~~~~~~~~
С использованием ДОС связано еще два стандартных предика-
та, которые удобны в употреблении: date (дата) и (time) (вре-
мя). Каждый из них может быть использован двумя способами,
что зависит от того, связаны ли при входе все их параметры
или свободны. Если все переменные в предикате
time(Hours,Minutes,Seconds,Hundredths)
связаны, то он приведет к установке внутренних системных ча-
сов (показывающих часы, минуты, секунды и сотые доли секун-
ды). Если же все переменные свободны, то они будут связаны с
текущими показаниями внутренних часов.
Предикат date также связан с внутренними системными часа-
ми; он действует аналогично и имеет следующую форму (включаю-
щую в себя год, месяц и число);
date(Year,Month,Day)
В программе 32 предикат time используется для вывода вре-
мени, уходящего на формирование листинга каталога для накопи-
теля А.
/* Программа 32 */
goal
makewindow(1,7,7,"Timer",8,10,17,60),
time(0,0,0,0),system("dir a:"),