-------------------------------------------------------------------
SET ALTERNATE Направление вывода в текстовый файл
-------------------------------------------------------------------
SET ALTERNATE TO [<файл>]

SET ALTERNATE on | OFF | <вырL>


Аргументы

TO <файл> указывает файл, открываемый как стандартный ASCII файл с
расширением (.txt). Имя файла может иметь расширение, имя дисковода,
и/или маршрут. Если файл с указанным именем существует, то его
содержимое запирается новой информацией.

Переключение (режим ON | OFF) SET ALTERNATE on | OFF указывает
направлять вывод в данный файл или нет. Команда SET ALTERNATE OFF
выходной файл не закрывает, а только приостанавливает вывод в него
до следующий команды SET ALTERNATE ON.

<вырL> логическое выражение, которое может быть заключено в круглые
скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Выходной файл, открываемый командой SET ALTERNATE, не относится к
какой то конкретной рабочей области и может быть только один.
Закрыть файл можно командами CLOSE ALTERNATE, CLOSE ALL или SET
ALTERNATE TO без аргументов. Заметьте, что команда @...SAY не
выводит информацию в файл не по режиму SET ALTERNATE TO, не по
команде SET PRINTER TO <имя файла>.

Пример использования

SET ALTERNATE TO Listfile
SET ALTERNATE ON
USE Customer NEW
DO WHILE !EOF()
? Customer->Lastname, Customer->City
SKIP
ENDDO
SET ALTERNATE OFF
CLOSE ALTERNATE
CLOSE Customer

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET BELL Переключение звука при полноэкранных операциях
-------------------------------------------------------------------

SET BELL on | OFF | <вырL>


78

Аргументы

ON включает звук.

OF выключает звук.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Звук выдается в следующих ситуациях:


Ввод символа в последней позиции строки для
команды GET.

Попытка ввода неверных данных в команде GET.
Тип данных контролируется типом данных поля,
переменной памяти или шаблоном PICTURE.

Вы можете вывести также звук командой ?? CHR(7) или функцией TONE().

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET CENTURY Переключение формата вывода дат
-------------------------------------------------------------------

SET CENTURY on | OFF | <вырL>

Аргументы

ON выводит первые две цифры года.

OFF отменяет вывод первых цифр года.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Когда установлен режим CENTURY OFF, цифры столетий в датах не могут
быть введены и не выводятся. Для операций вычисления с датами
результат будет верным т.к. учитывается года в полном формате. В
режиме CENTURY ON в поле даты год выводится в четырех числовом
формате. Даты без такого формата года не выводятся и не вводятся.

Клиппер поддерживает даты в диапазоне от 01/01/0100 до 12/31/2999.

79


Пример использования
SET CENTURY OFF
? DATE() //Результат: 09/01/87
SET CENTURY ON
? DATE() //Результат: 09/01/1987


Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET COLOR* Определение цветов для раскраски экрана
-------------------------------------------------------------------

SET COLOR TO [<стандартный>], [<выделенный>], [<бордюр>],
[<фон>], [<не выбранный>] / (<вырС>)

Аргументы

<стандартный>/<выделенный>: Это цвета соотвествующие
основному цвету и иногда фоновому. <Cтандартный> цвет
применяется для вывода в таких командах, как @..SAY, и ?.
<выделенный> цвет используется только в выводе GET.

<бордюр>: цвет бордюра.

<фон>: Поддерживается правильно не на всех компьютерах, для
которых фирма Nantucket обеспечивает драйверы.

<не выбранный>: Цвет <не выбранный> позволяет текущему GET
выводится цветом <выделенный> в то время, как другие GET будут
иметь <не выбранный> цвет.

Атрибуты: Интенсивный и мигание тоже являются атрибутами цветов.
Интенсивный цвет определяется знаком "+", а мигание знаком """.
Каждый указанный атрибут относится к основному цвету независимо от
того где он встречается в определении цветов.

Команда SET COLOR TO без агрументов восстанавливает значения цветов
по умолчанию: W/N,N/W,,,N/W.

Применение

Всего несколько цветов используются для управления экраном. Каждый
цвет указывается литерой или числом. При установки цветов литеры и
числа не должны использоваться совместно. Для чисел цифра слева от
знака "/" задает четыре старших бита байта атрибута цвета, а число
справа определяет 4 младших бита. Таблица ниже приводит список
используемых цветов:

Цвета применяемые в Clipper
_____________________________________________________________________

Цвет Число Литера Монохромный


80


_____________________________________________________________________

Черный 0 N Черный
Синий 1 B Подчеркивание
Зеленый 2 G Белый
Голубой 3 BG Белый
Красный 4 R Белый
Фиолетовый 5 RB Белый
Коричневый 6 GR Белый
Белый 7 W Белый
Серый 8 N+ Черный
Ярко-синий 9 B+ Яркое подчеркивание
Ярко-зеленый 10 G+ Ярко-белый
Ярко-голубой 11 BG+ Ярко-белый
Ярко-красный 12 R+ Ярко-белый
Ярко-фиолетовый 13 RB+ Ярко-белый
Желтый 14 GR+ Ярко-белый
Ярко-белый 15 W+ Подчеркивание
Подчеркивание U Подчеркивание
Пустой X Пустой
Инверсия I
_____________________________________________________________________


Внимание ! Команда SET COLOR с числами в аргументах при
компановке с файлом ANSI.OBJ не поддерживаются.

Переменные цвета: Для более простого управления цветами,
разрешается присваивать цвета переменным памяти. Это позволяет вам
цетрализовать присвоение цветов и уменьшит ошибки выполнения,
связанные с установкой цветов. Для этого заведите переменную памяти
и присвойте ей строку с аргументами для команды SET COLOR TO. Далее,
применяя макроподстановку, можно установить цвета командой SET COLOR
TO.

Если вы имеете большое количество переменных для цветов в большой
прикладной системе, вы можете присвоить переменным, содержащим
установки цветов, имена начинающиеся с "с_". Далее после запуска
программы генерации перекрестных ссылок можно сгруппировать
переменные.

Пример использования

Следующий пример демонстрирует применение цветов для подавления
вывода на экран во время ввода зашитного пароля:

SET COLOR TO W+/N, X
password = SPACE(5)
@ 13, 12 SAY "Пароль :";
GET password;
VALID Password(password,"secret")
READ
SET COLOR TO


81

FUNCTIONN Password
PARAMETERS getvar, word
IF getvar <> word
@ 22, 00
WAIT "Неверный пароль. Нажмите любую клавишу..."
@ 23, 00
RETURN .F.
ENDIF
RETURN .T.

Следующий пример делает текущий GET красным на белом цвете в то
время, как остальные GET будут черного цвета на белом:

color = "W/N,R/W,,,N/W"
SET COLOR TO &color
STORE SPACE(10) TO one, two, three
@ 1, 1 SAY "Введите один:" GET one
@ 2, 1 SAY "Введите два " GET two
@ 3, 1 SAY "Введите три: " GET three
READ

Library: CLIPPER.LIB

-------------------------------------------------------------------
SET CONFIRM Переключение режимов прекращения ввода текущего GET
-------------------------------------------------------------------

SET CONFIRM on | OFF | <вырL>
Аргументы

ON требует нажатия клавиши выхода для перехода в другой Get:

OFF не требует нажатия клавиши выхода при заполнении Get до конца.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимат значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Следуюшие клавиши заканчивают GET в Clipper:
Ctrl-Home
Ctrl-End
Вверх
Вниз
Ctrl-C,PgUp
Ctrl-W,PgDn
Esc
Return

Обратите внимание: команда CONFIRM на MENU TO не влияет.

82


Library: CLIPPER.LIB

-------------------------------------------------------------------
SET CONSOLE Переключение режима вывода команд на экран
-------------------------------------------------------------------

SET CONSOLE ON | off| <вырL>
Аргументы

ON выводит комманды на экран.

OFF отменяет вывод комманд на экран.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Команда SET CONSOLE влияет на все команды вывода на экран, включая
команды с приглашениями, такие как ACCEPT, INPUT, WAIT. Команды
@...SAY...GET, @...PROMPT, @...BOX, @...CLEAR TO, @...TO и CLEAR
выводят информацию на экран независимо от режима SET CONSOLE.

Пример использования

USE Sales NEW
SET CONSOLE OFF
REPORT FORM Sales TO PRINTER
SET CONSOLE ON

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET CURSOR Переключает режим отображения курсора
-------------------------------------------------------------------

SET CURSOR ON | off | <вырL>

Аргументы

ON отображение курсора.

OFF отмена отображения курсора.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

В режиме CURCOR OFF ввод с клавиатуры на и отображение ввода на
экране могут не совпадать. Курсор полностью спрятан и данные


83


вводятся без видимого курсора.

Применяется этот режим в том случае, когда необходимо зарисовать
экран. Реально курсор необходимо показывать в тех местах программы,
где производится полноэкранное редактирование переменных памяти и в
некоторых случаях редактирования строки.

Пример использования

LOCAL lAnswer := .F.
@ 24, 0
@ 24, 14 SAY "Хотите закончить [Y/N]";
GET lAnswer;
PICTURE "Y"
SET CURSOR ON
READ
SET CURSOR OFF

Library: CLIPPER.LIB

-------------------------------------------------------------------
SET DATE Определение формата даты для вывода, операций с дат
-------------------------------------------------------------------
ами
SET DATE FORMAT [TO] <формат даты>
SET DATE [TO]
AMERICAN | ansi | british | french | german | italian | japan | usa

Аргументы

<формат даты> - символьная строка для указания формата даты,
если указано предложение FORMAT. Содержит 12 символов или меньше.

По умолчанию формат AMERICAN.

Форматы для SET DATE
????????????????????????????????????????????????
Установка Формат
????????????????????????????????????????????????
AMERICAN мм/дд/гг
ANSI гг.мм.дд
BRITISH дд/мм/гг
FRENCH дд/мм/гг
GRMAIN дд.мм.гг
ITALIAN дд-мм-гг
JAPAN гг-мм-дд
USA мм-дд-гг
????????????????????????????????????????????????

Применение

Команда SET DATE устанавливает глобально формат даты и определяет
поведение всех функций связанных с обработкой даты во всей


84


программе. Это позволяет разрабатывать программное обеспечение
совместимое с разными форматами даты разных стран.

Пример использования

Пример использования предложения FORMAT :

SET DATE FORMAT "yyyy:mm:dd"

Пример установки даты в среде DOS:

C>SET CLIP_DATE=dd/mm/yy

или:

FUNCTION AppConfig
SET DATE FORMAT TO GETENV("CLIP_DATE")
RETURN NIL

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET DECIMALS Определяет количество выводимых цифр после запятой
-------------------------------------------------------------------

SET DECIMALS TO [<вырN>]

Аргументы

<вырN> числовое выражение, определяющее количество цифр после
запятой.

SET DECIMAL TO без аргументов эквивалентно SET DECIMAL TO 0.

Применение

Функции, на которые влияет формат, устанавливаемый командой SET
DECIMALS TO, это SQRT(), EXP(), LOG() и деление (если установлен
режим FIXED OFF). Другие функции выводят то количество цифр после
запятой, которое получилось в результате вычислений. Если установлен
режим SET FIXED ON, то все числа подчиняются формату установленному
командой SET DECIMALS.

Пример использования

SET DECIMALS TO 2 //По умолчанию

? 2/4 //Результат: 0.50
? 2/3 //Результат: 0.33
SET DECIMALS TO 4
? 2/4 //Результат: 0.5000
? 2/3 //Результат: 0.3333

85


Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET DEFAULT Установка диска и каталога для создания и сохранени
-------------------------------------------------------------------
я файлов
SET DEFAULT TO [<маршрут>]

Аргументы

<маршрут> определяет каталог, который вы хотите назначить по
умолчанию. Если вы указываете диск и маршрут, то после имени диска
должно быть двоеточие.

Команда SET DEFAULT TO без аргументов определяет каталог
используемый последним.

Применение

При запуске Клиппер рабочим становится каталог из которого был
сделан первоначальный запуск. Однако, в программе вы можете изменить
его командой SET DEFAULT.

Обратите внимание, что диск и маршрут, к которым идет обращение по
умолчанию, не влияют на путь поиска файлов. Установить маршрут
поиска для доступа к файлам нужно командой SET PATH. Команда SET
DEFAULT определяет только место, где будут записаны новые файлы, а
на поиск и доступ к другим файлам не влияет.

Также, заметьте, команда SET DEFAULT не изменяют рабочий диск и
каталог DOS. Выполните команду RUN для изменения маршрута доступа к
каталогам DOS.

Пример использования

SET PATH TO
? FILE("Sales.dbf") // Результат: .F.
//
SET DEFAULT TO C:\CLIPPER\FILES
? FILE("Sales.dbf") // Результат: .T.
//
SET DEFAULT TO C: // Сменить диск
SET DEFAULT TO \ // Сменить корневой директорий
SET DEFAULT TO .. // Сменить директорий

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET DELETED Переключение режима фильтрации удаленных записей
-------------------------------------------------------------------

SET DELETED on | OFF | <вырL>

86


Аргументы

ON игнорирует записи, помеченные на удаление.

OFF действует с записями, помеченными на удаление.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истина" (.T.), если указано ON,
значение "ложь", если OFF.

Применение

Когда установлен режим SET DELETED ON, большинство команд игнорируют
записи помеченные для удаления. Однако, если вы укажете запись по ее
номеру (команда GOTO или другие, поддерживающие фразу RECORD) запись
помеченная для уничтожения выведется тоже. Команда SET DELETED ON не
влияет на команды INDEX и REINDEX.

Команда RECALL ALL учитывает режим SET DELETED и не восстанавливает
некоторые записи.

Замечание

Фильтрация удаленных записей: Чтобы не учитывать
удаленные записи при фильтрации в отдельной области выполните выбор
рабочей области и затем SET FILTER TO !DELETED().

Пример использования

USE Sales NEW
? LASTREC() // Результат: 84
//
DELETE RECORD 4
COUNT TO nCount
? nCount // Результат: 84
//
SET DELETED ON
COUNT TO nCount
? nCount // Результат: 83

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET DELIMITERS Определяет символ для разделения в команде GET
-------------------------------------------------------------------

SET DELIMITERS on | OFF | <вырL>
SET DELIMITERS TO [<вырС> | DEFAULT]

Аргументы

ON выводит разделители для GET переменных.

87


OFF отменяет вывод разделителей.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

TO <вырС> определяет один или несколько символов разделителей.
Один символ означает что он будет использоваться как начальный и
конечный разделитель. Два символа определяют: первый - начальный
разделитель, второй - конечный. Указание DEFAULT или SET без списка
разделителей устанавливают разделителем двоеточие.

Применение

Можно использовать пробел в символьном выражении для подавления
правого или левого разделителей.

Пример использования

LOCAL cVar := SPACE(5), cVar2 := SPACE(5)
SET DELIMITERS ON
SET DELIMITERS TO ": "
@ 1, 0 SAY "Введите" GET cVar
SET DELIMITERS TO "[]"
@ 2, 0 SAY "Введите" GET cVar2
READ

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET DEVICE Направляет вывод команд @...SAY на экран или на при
-------------------------------------------------------------------
нтер
SET DEVICE TO SCREEN | printer

Аргументы

Screen: Определяет экран как устройство на которое направляется
вывод команды @...SAY независимо от состояния команд SET PRINTER и
SET CONSOLE.

Printer: Направляет весь вывод команды @..SAY на устройство
определенное в команде SET PRINTER TO. Этим устройством могут быть
принтер, сетевой принтер или файл.

Применение

Когда установлено SET DEVICE TO PRINTER, команда @...SAY все
пересылает на принтер и ничего не отображает на экране. Все команды
@...GET в этом случае игнорируются. Выполнении команды @...SAY при
направлении на принтер, приводит к автоматическому переводу страницы
когда текущая позиция печатающей головки принтера меньше граничной
позиции печати. EJECT устанавливает счетчик строк и колонок в ноль.


88


Вы можете определить новые значения для колонки и строки принтера с
помощью функции SETPRC().

Чтобы направить вывод команды @...SAY в файл, установите SET
PPRINTER TO <файл>, после команды SET DEVICE TO PRINTER.

Пример использования

SET DEVICE TO PRINTER
@ 2,10 SAY "Привет !!"
EJECT

SET PRINTER TO Output.txt
SET DEVICE TO PRINTER
@ 10, 10 SAY "Файл: Output.txt"
@ 11, 10 SAY DATE()
SET PRINTER TO // Закрыть файл
SET DEVICE TO SCREEN

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET ESCAPE Переключение возможности прерывания READ клавишей E
-------------------------------------------------------------------
SC
SET ESCAPE ON | off | <вырL>

Аргументы

ON позволяет прервать READ клавишей Esc.

OFF не позволяет прервать READ клавишей Esc.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Нажатие клавиши <ESC> в режиме SET ESCAPE ON приводит к
прекращению ввода и окончанию комманды READ.

SET ESCAPE OFF делает невозможным прерывание программы клавишей
<ESC>. Однако можно обрабатывать нажатие клавиши ESC командой SET
KEY и иметь специальную процедуру обработки клавиш для READ.

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET EPOCH Управляет выводом цифр столетия в дате
-------------------------------------------------------------------

SET EPOCH TO <вырN>


89

Аргументы

<вырN> указывает базовый год столетнего периода в котором все
даты, выводятся с отображением только двух последних цифр года.

Применение

SET EPOCH комманда определения вывода даты с двумя последними
цифрами года. При выводе даты цифры года сравниваются с базовым
годом, указанным в комманде SET EPOCH. Если цифры года в дате
больше, чем в базовом, выводятся две последние цифры года, в
противном случае выводятся две последние цифры даты следующего
столетия.

По умолчанию SET EPOCH равен 1900.

Клиппер поддерживает даты в периоде от 01/01/0100 до 12/31/2999.

Пример использования


SET DATE FORMAT TO "mm/dd/yyyy"
? CTOD("05/27/1904") // Результат: 05/27/1904
? CTOD("05/27/67") // Результат: 05/27/1967
? CTOD("05/27/04") // Результат: 05/27/1904
//
SET EPOCH TO 1960
? CTOD("05/27/1904") // Результат: 05/27/1904
? CTOD("05/27/67") // Результат: 05/27/1967
? CTOD("05/27/04") // Результат: 05/27/2004

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET EXACT* Определяет способ сравнения двух символьных строк
-------------------------------------------------------------------

SET EXACT on | OFF | <вырL>

Аргументы

ON заставляет точно сравнивать символьные строки, включая их
длину.

OFF возобновляет обычное сравнение символьных строк.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.


Применение


90

В режиме SET EXACT OFF сравнение ведется по следующим правилам:

1. Если строки эквивалентны, то возвращается значение "истинно"
(.T.).

2. Затем, сравниваются символы в одинаковых позициях для каждой
строки пока длинна строки с правой стороны от оператора не
исчерпается или сравнение вернет значение "ложно" (.F.).

В этом два смысла:

1. Две строки могут быть равны даже при разных длинах.

2. Строка с длинной более нуля может равняться нулевой строке. Это
происходит потому, что нулевая строка справа от оператора имеет
длину ноль и никаких сравнений не делается. Возвращается результат
"истинно" (.Т.).

В режиме SET EXACT ON две строки должны совпадать строго, кроме
пробелов в конце. Значение "истинно" (.T.) возвращается, когда
сравниваемые строки в одном регистре и одинаковой длинны.

В режиме EXACT ON, когда используются операции отношения кроме
двойного равенства (==), строки сравниваются исключая лидирующие
пробелы. При использовании двойного равенства пробелы учитываются.

SET EXACT - совместимая комманда и поэтому не рекомендована.

Замечание

Совместимость: В Клиппер 5.0 SET EXACT эффективна
только для операций отношения. Для комманд SEEK и FIND не
эффективна.В этом случае используйте пример пользовательской функции
SeekExact().

Пример использования

SET EXACT OFF
? "123" = "12345" // Результат: .F.
? "12345" = "123" // Результат: .T.
? "123" = "" // Результат: .T.
? "" = "123" // Результат: .F.
? "123" = "123 " // Результат: .F.
//
SET EXACT ON
? "123" = "12345" // Результат: .F.
? "12345" = "123" // Результат: .F.
? "123" = "" // Результат: .F.
? "" = "123" // Результат: .F.
? "123" = "123 " // Результат: .T.

Library: CLIPPER.LIB.


91

-------------------------------------------------------------------
SET EXCLUSIVE* Переключает режим автоматической блокировки файлов
-------------------------------------------------------------------
в сети
SET EXCLUSIVE ON | off | <вырЛ>

Применение

В режиме EXCLUSIVE ON, все базы данных и связанные с ними файлы
открываются в монопольном режиме и не могут быть использованы другим
пользователем пока не будут закрыты (CLOSE).

В режиме EXCLUSIVE OFF, весь доступ не в режиме разделения должен
контролироваться программно с помощью функций RLOCK(), FLOCK() и
команды USE...EXCLUSIVE.

SET EXCLUSIVE совместимая комманда и поэтому не рекомендована. Она
заменяется EXCLUSIVE и SHARED предложениями в комманде USE.


-------------------------------------------------------------------
SET FILTER Фильтрует базу данных по указанному условию
-------------------------------------------------------------------

SET FILTER TO <условие>

Аргументы

<условие> - логическое условие, определяющее необходимый набор
записей.

Отключение фильтра происходит по команде SET FILTER TO без условия.

Применение

Когда условие фильтра установлено командой SET FILTER, то файл базы
данных действует так, как если бы он содержал только записи
удовлетворяющие указанному условию. Каждая рабочая область может
иметь свой активный фильтр. Если выполнится команда SET FILTER, то
она не действует пока указатель записи не будет передвинут с текущей
записи. Обычно для активизации используется команда GO TOP.

Как команды SET DELETED, фильтр не влияет на команду INDEX и
REINDEX. Доступ к отфильтрованным записям можно получить командой
GOTO или другими с указание фразы RECORD <номер>.

Пример использования

USE Employee INDEX Name NEW
SET FILTER TO Age > 50
LIST Lastname, Firstname, Age, Phone
SET FILTER TO


92

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET FIXED Переключение режима контроля формата числового выво
-------------------------------------------------------------------
да
SET FIXED on | OFF | <вырL>

Аргумент

ON: Выводятся все числа по формату управляемому командой
установки десятичной запятой SET DECIMAL (по умолчанию две цифры
после запятой).

OFF: В режиме FIXED OFF формат вывода всех чисел зависит от типа
операций.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

SET FIXED переключает управление выводом десятичных знаков в
соответствии с SET DECIMAL.

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET FORMAT* Активизация процедуры формата для команды READ
-------------------------------------------------------------------

SET FORMAT TO <процедура>

Аргументы

<процедура> файл формата (.fmt), файл программы (.prg) или
процедура.

Команда SET FORMAT TO без аргументов снимает текущий формат.

Применение

Процедура формата такая же, как и другие процедуры Clipper, отличие
только в методе вызова. Форматы не открываются во время выполнения,
а обрабатываются во время компиляции программы. Поэтому, когда
Клиппер во время компиляции встречает команду SET FORMAT TO,
пытается скомпилировать указанный файл формата с диска, также как
ссылки на другие процедуры. Поэтому, процедура формата может
помещаться в файле процедуры.

Замечание


93

Правильная компиляция соответствующих файлов формата при
использовании .CLP файла возможна, если файл формата будет иметь
расширение тоже (.prg).

Определения формата не могут быть вложенными. Клиппер игнорирует
команду SET FORMAT внутри процедуры формата во время компиляции.

Клиппер не производит очистку экрана перед выполнением файла формата.

Разрешается использовать команды внутри файла формата, что расширяет
возможности.

Клиппер не поддерживает многостраничный процедуру формата и поэтому
команды READ внутри процедуры формата игнорируются.

SET FORMAT is совместимая комманда и поэтому не рекомендована.

Активные процедуры формата: Клиппер поддерживает только одну
процедуру активного формата для всех рабочих областей

Пример использования

USE Sales NEW
SET FORMAT TO SalesScr
DO WHILE LASTKEY() != 27
APPEND BLANK
READ
ENDDO
RETURN

PROCEDURE SalesScr
@ 12, 12 SAY "Branch : " GET Branch
@ 13, 12 SAY "Salesman : " GET Salesman
RETURN

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET FUNCTION Присваивает строку символов функциональной клавише
-------------------------------------------------------------------

SET FUNCTION <вырN> TO <вырС>

Аргументы

<вырN> - номер функциональной клавиши.

<вырС> - символьная строка, которая помешается в буфер
клавиатуры при нажатии на функциональную клавишу во время ожидания
ввода с клавиатуры.

Применение


94

Команда SET FUNCTION может назначать функциональной клавише строку,
помещаемую в буфер клавиатуры. Строка может содержать контрольные
символы, такие как Ctrl-C (эквивалент PgDn) завершающие команду
READ.

Функциональные клавиши с номерами от 2 до 40 могут быть назначены
данной командой. Функциональная клавиша зарезервирована под
использование с процедурой Help.prg, и ей нельзя назначить строку.

Список значений функциональных клавиш.
????????????????????????????????????????????????????
Номер клавиши Фактическая клавиша
????????????????????????????????????????????????????
1-10 F1-F10
11-20 Shift-F1-Shift-F10
21-30 Ctrl-F1 - Ctrl-F10
31-40 Alt -F1 - Alt -F10
????????????????????????????????????????????????????

????????????????????????????????????????????????????????????????????
 Внимание

В Клиппер 5.0, SET FUNCTION обрабатывается пре-процессором в SET KEY
и KEYBOARD. Это означает, что SET FUNCTION имеет эффект стирания
любого SET KEY для этих же клавиш.
????????????????????????????????????????????????????????????????????

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET INDEX Открытие определенных индексных файлов
-------------------------------------------------------------------

SET INDEX TO [<список файлов>]

Аргументы

<список файлов> список от одного до 15 индексных файлов с
расширением (.ntx) или (.ndx) для текущей рабочей области,
разделенных запятой.

Применение

Команда SET INDEX назначает расширение (.ndx) или (.ntx), если
другого не указано. Вы можете в имени файла указать имя дисковода
или добавить маршрут поиска.

Команды CLOSE INDEX или SET INDEX баз аргументов приводит к закрытию
всех индексных файлов для текущей рабочей области.

Когда открываются более чем один индексный файл для активной базы
данных, то первый индексный файл становится управляющим. У87br /Использовbr p/pgt;/аниеказатель


95


записи, поэтому, устанавливается на первую логическую запись в
индексном файле. Во время обработки файла базы данных, все открытые
индексные файлы корректируются при добавлении или изменении ключевой
записи. Для активизации другого управляющего базой данных индекса
без команды SET INDEX можно использовать команду SET ORDER.

Пример использования

xcIndex1 = "Name"
xcIndex2 = "Account"
SET INDEX TO (xcIndex1), (xcIndex2)

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET INTENSITY Переключение цвета вывода GET
-------------------------------------------------------------------

SET INTENSITY ON | off | <вырL>

Применение

В режиме INTENSITY OFF, GET выводится тем же цветом, что и SAY -
стандартным. Если INTENSUTY ON (по умолчанию), то GET появляется
выделенным цветом. Помните, что INTENSITY не влияет на вывод других
команд и функций таких, как MENU...TO, ACHOICE() и DBEDIT().

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET KEY Позволяет выполнить процедуру по нажатию клавиши
-------------------------------------------------------------------

SET KEY <вырN> TO [<процедура>]

Аргументы

<вырN> значение, возвращаемое функцией INKEY() для определенной
клавиши.

<процедура> - процедура, выполняемая при нажатии указанной
клавиши. Если процедура не указана, то переназначение реакции на
клавиши не действует.

Применение

Помните, функция INKEY() делает ожидания состояния. Одновременно
можно установить 32 клавиши. Комманды, использующие состояние
ожидания: AHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT(), INPUT(), READ,
WAIT.

????????????????????????????????????????????????????????????????????
 Внимание


96

В Клиппер 5.0, SET FUNCTION обрабатывается препроцессором в SET
KEY и KEYBOARD. Это означает, что SET FUNCTION имеет эффект стирания
любого SET KEY для этих же клавиш.
?????????????????????????????????????????????????????????????????????

Замечания

Старшинство: SET KEY определяются имеют старшинство над
SET ESCAPE и SETCANCEL().

CLEAR в процедуре SET KEY: CLEAR не используется для
стирания экрана, так как уничтожает все Get и заканчивает READ. Для
стирания экрана используйте CLEAR SCREEN или CLS.

Окончание READ из процедуры SET KEY: Следующая таблица
иллюстрирует некоторые методы окончания комманды READ из процедуры
SET.

Окончание комманды READ из процедуры SET KEY Procedure
???????????????????????????????????????????????????????????????????
Комманда Действие
???????????????????????????????????????????????????????????????????
CLEAR GETS Заканчивает READ без сохранения текущих GET
BREAK Заканчивает READ без сохранения текущих GET
KEYBOARD Ctrl-W Заканчивает READ с сохранением текущих GET
KEYBOARD Esc Заканчивает READ без сохранения текущих GET
???????????????????????????????????????????????????????????????????

Пример использования

Пример использования SET KEY для вызова процедуры, которая печатает
список значений, когда пользователь нажимает клавишу F2:

#include "Inkey.ch"
//
SET KEY K_F2 TO ScrollAccounts
USE Accounts NEW
USE Invoices NEW
@ 10, 10 GET Invoices->Id
READ
RETURN

PROCEDURE ScrollAccounts( cProc, nLine, cVar )
IF cVar = "ID"
SAVE SCREEN
Accounts->(DBEDIT(10, 10, 18, 40, {"Company"}))
KEYBOARD CHR(K_CTRL_Y) + Accounts->Id + CHR(K_HOME)
RESTORE SCREEN
ELSE
TONE(100, 2)
ENDIF
RETURN


97

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET MARGIN Установка левого отступа от края бумаги на принтере
-------------------------------------------------------------------

SET MARGIN TO [<вырN>]

Аргументы

<вырN> определяет колонку отступа слева от края бумаги.

Применение

Команда SET MARGIN не оказывает влияния на вывод на экран, но для
всех операций с принтером определяет начальную позицию печати во
всех командах, включая REPORT и LABEL FORM.

Если установка SET MARGIN не производится, то по умолчанию отступ
равен 0.

Пример использования

USE Sales NEW
SET MARGIN TO 5
LIST Branch, Salesman TO PRINTER
SET MARGIN TO

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET MESSAGE Устанавливает линию на экране, в которой появится с
-------------------------------------------------------------------
ообщения
SET MESSAGE TO [<вырN> [CENTER |CENTRE]]

Аргументы

<вырN> определяет линию в которой будет выводится сообщение.

Сообщение появится в линии <вырЧ>, колонке 0, если не используется
опция CENTER | CENTRE. Подавление вывода сообщений происходит по
команде SET MESSAGE TO 0 или SET MESSAGE, без аргументов.

CENTER | CENTRE центриует строку в указанной линии экрана.

Пример использования

SET MESSAGE TO 23 CENTER
SET WRAP ON
@ 5, 5 PROMPT "Один" MESSAGE "Выбор один"
@ 6, 5 PROMPT "Два" MESSAGE "Выбор два"


98


MENU TO nChoice
//
IF nChoice == 0
EXIT
ELSEIF nChoice == 1
Proc1()
ELSEIF nChoice == 2
Proc2()
ENDIF

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET ORDER Назначает один из открытых индексных файлов как упр
-------------------------------------------------------------------
авляющий
SET ORDER TO [<вырN>]

Аргументы

<вырN> - выражение, определяющее номер управляющего индексного
файла равный позиции этого файла в списке открытия индексных файлов
для данной рабочей области.

SET ORDER TO 0: команда восстанавливает в базе данных
естественный порядок следования записей (по порядку номеров записей)
при открытых индексных файлах.

Применение

При использовании команды SET ORDER TO с новым управляющим индексом,
все индексы корректируются если вы добавили или отредактировали
запись. После изменения управляющего индекса, указатель записи
продолжает указывать на туже запись, что позволяет менять индексы
эффективно Определить порядковый номер индекса в списке можно с
помощью функции INDEXORD().

Пример использования

USE Customers NEW
INDEX ON Lastname TO Names
INDEX ON City + State TO Region
SET INDEX TO Names, Region
//
SET ORDER TO 2
? INDEXKEY(INDEXORD()) // Результат: City + State
//
SET ORDER TO 0
? INDEXKEY(INDEXORD()) // Результат: нулевое значение
//
SET ORDER TO 1
? INDEXKEY(INDEXORD()) // Результат: Lastname

99


Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET PATH Устанавливает маршрут для доступа к файлам
-------------------------------------------------------------------

SET PATH TO [<список маршрутов>]

Аргументы

<список маршрутов>- указывает маршрут для поиска файлов, если
они не найдены в текущем каталоге. Маршрут должен определять
требуемый каталог. Он состоит из полного списка каталогов,
разделенных символом обратная косая черта ("\"), начиная с
корневого. Каждый маршрут в списке отделяется от другого символом
точка с запятой.

SET PATH TO без аргументов освобождает список маршрутов от
использования, и Клиппер будет осуществлять поиск только в текущем
каталоге.

Применение

Команда SET PATH дает возможность Клиппер вести поиск и обрабатывать
файлы на разных дисках и каталогах. При обращении к файлу Clipper
сначала осуществляет поиск в рабочем каталоге на текущем диске.
Текущий диск и каталог устанавливаются при запуске программы или по
команде SET DEFAULT. Если файл не найден, Клиппер ищет файлы по
списку каталогов, указанному в команде SET PATH пока не будет
найдено первое вхождение. Функция FILE() при поиске существующих
файлов, учитывает все маршруты, указанные в команде SET PATH.

Маршруты, однако, используются только для поиска существующих
файлов. Если вы хотите создать файл в новом каталоге или на другом
диске, то нужно изменить текущий каталог на новый командой SET
DEFAULT TO <маршрут>.

SET PATH TO без аргументов удаляет список маршрутов и Clipper
осуществляет поиск только в DEFAULT директории.

Пример использования

Простейший пример использования SET PATH:

SET PATH TO A:\INVENTORY;B:\VENDORS

Пример определения пути в среде ДОС:

SET CLIP_PATH=C:\APPS\DATA,C:\APPS\PROGS

и использование в вашей программе:

SET PATH TO (GETENV("CLIP_PATH"))


100

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET PRINTER Назначает устройство вывода на принтер
-------------------------------------------------------------------

SET PRINTER on | OFF | <вырL>
SET PRINTER TO [<устройство> | <файл>]

Аргументы

ON дублирование вывода на принтер.

OFF отмена дублирования.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

TO <устройство> определяет имя устройства, куда направляется
вывод.

<файл> направляет весь вывод, включая команды @...SAY, в
указанный файл. Если расширение файла не указано, Клиппер добавляет
к имени файла расширение (.prn).

Команда SET PRINTER TO без аргументов закрывает файл вывода на
печать и устанавливает назначение вывода по умолчанию.

Команда SET PRINTER TO с не существующим именем устройства создает
файл с этим именем и направляет вывод в него.

Применение

SET PRINTER направляет вывод на принтер из любой команды имеющей
печать на определенное устройство. Имена устройств могут быть
такими: LPT1, LPT2, LPT3 (все порты параллельного вывода), COM1,
COM2 (последовательный порт).

Внимание! При указании имени устройств не добавляйте двоеточие.

Эти возможности имеют следующие применение:

Вы можете менять порты, управляя несколькими принтерами.

Вы можете направить вывод в файл чтобы распечатать его
позже или переслать на другой компьютер через сеть.

Вы можете освободить параллельное печатающее устройство и
направить вывод на устройство, используемое по умолчанию.

Пример использования


101

Пример вывода, используя комманду ? :

USE Customer NEW
SET PRINTER ON
SET CONSOLE OFF
DO WHILE !EOF()
? Customer->Name, Customer->Phone
SKIP
ENDDO
EJECT
SET PRINTER OFF
SET CONSOLE ON
CLOSE
RETURN


Пример вывода в существующий файл :

SET PRINTER TO Prnfile.txt
SET DEVICE TO PRINTER
SET PRINTER ON
//
@ 0, 0 SAY "Это пойдет в Prnfile.txt"
? "Пусть будет так!"
//
SET DEVICE TO SCREEN
SET PRINTER OFF
SET PRINTER TO // Закрыть файл

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET PROCEDURE* Компиляция всех процедур и функций текущий объектн
-------------------------------------------------------------------
ый файл
SET PROCEDURE TO [<файл>]

Аргументы

<файл> - имя файла содержащего процедуры. Если расширение не
указано, то предполагается расширение (.prg).

Применение

Файл процедур может содержать любое количество процедур или
определенных пользователем функций. Когда Клиппер встречает команду
SET PROCEDURE TO, то он начинает компилировать текст из этого файла.
Обычно, в Клиппер процедурный файл соответствует включаемым файлам
других компиляторов.

Команды CLOSE PROCEDURE и SET PROCEDURE без аргументов игнорируются.

102


SET PROCEDURE -совместимая комманда и поэтому не рекомендована.
Применяйте директиву #include и (.clp) файл.

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET RELATION Устанавливает отношения двух рабочих областей
-------------------------------------------------------------------

SET RELATION TO [<ключ.выр1> | <вырN> INTO <алиас1>],
[ <ключ.выр2> | <вырN> INTO <алиас2>...],
[ADDITIVE]

Аргументы

<ключ. выр> - выражение, используемое для отбора необходимых
записей в вспомогательной рабочей области всякий раз, когда
указатель записи перемещается по основной рабочей области. Для этого
вспомогательная рабочая область не должна иметь открытые в команде
USE индексные файлы для этой базы данных.

Функция RECNO() устанавливает отношения между основной и
вспомогательной рабочими областями. По номеру записи основной
рабочей области, функция переходит к записи с таким же номером в
вспомогательной области каждый раз, когда указатель записи в
основной области перемещается. При этом вспомогательная рабочая
область не должна иметь для этой базы данных открытые в команде USE
индексные файлы.

Для этого типа отношений рекомендуется, чтобы вспомогательная
рабочая область не имела открытых индексных файлов.

<вырN> это выражение используется для вычисления номера записи и
перехода к ней в вспомогательной рабочей области каждый раз, когда
перемещается указатель записи в основной рабочей области. Для этого
вспомогательная рабочая область не должна иметь открытые в команде
USE индексные файлы.

<алиас> определят вспомогательную рабочую область.

Уничтожить все отношения можно командой SET RELATION TO без
аргументов.

ADDITIVE: Эта фраза позволяет добавить указанное отношение к уже
существующему набору для текущей рабочей области. Если эта фраза не
указана, то уже существующие отношения освобождаются перед вновь
создаваемыми.

Применение

Отношения, установленные командой SET RELATION, перемещают указатель
записи в вспомогательной области в соответствии с перемещением
указателя записи в основной области. Если записи в вспомогательной


103


области не соответствуют основной, то указатель записи
устанавливается на запись LASTREC() + 1, функция EOF() возвращает
значение (.T.), а - FOUND() возвращает (.F.).

Замечание

Команда SET RELATION не подчиняется команде SOFTSEEK и всегда
работает как, при режиме SOFTSEEK OFF. Если соответствие записей в
вспомогательной рабочей области не найдено, то указатель записи в
этой области устанавливается на запись с номером LASTREC() + 1.

Пример использования

Пример показывает создание отношений для трёх рабочих
областей:

USE Invoices INDEX Invoices NEW
USE Zip INDEX Zipcode NEW
USE Customer NEW
SET RELATION TO CustNum INTO Invoices, Zipcode INTO Zip
LIST Customer, Zip->City, Invoices->Number, Invoices->Amount

Позднее можно добавить новое отношение, используя ADDITIVE:

USE BackOrder INDEX BackOrder NEW
SELECT Customer
SET RELATION TO CustNum INTO BackOrder ADDITIVE

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET SCOREBOARD Переключение вывода сообщений в команде READ и MEMO
-------------------------------------------------------------------
EDIT()
SET SCOREBOARD ON | off | <вырL>

Аргументы

ON позволяет выводить сообщения из READ and MEMOEDIT() на
нулевой строке экрана.

OFF подавляет эти сообщения.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимет значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

В режиме SCOREBOARD ON сообщения о режимах выводятся на экране в
нулевой линии. Сообщение включает в себя: сообщения о ошибке в фразе
RANGE, запрос на прекращение для MEMOEDIT() и сообщение о режиме
вставки для команд MEMOEDIT() и READ.


104

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET SOFTSEEK Переключение режима "относительного" поиска
-------------------------------------------------------------------

SET SOFTSEEK on | OFF | <вырL>

Аргументы

ON устанавливает указатель записи на следующую запись с
индексом, большим, чем ключ поиска.

OFF устанавливает указатель записи в конец файла.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

В режиме SOFTSEEK ON, когда запись соответствующая аргументу поиска
не найдена, указатель записи устанавливается на следующую запись с
индексом, имеющим большее значение, чем ключ поиска. Если же
записей, с ключом большим чем аргумент поиска нет, то указатель
записи устанавливается на запись с номером LASTREC() + 1, функция
EOF() возвращает значение (.T.), а FOUND() - значение (.F.).

Команда SET EXACT не влияет на поиск, если установлен режим SET
SOFTSEEK ON. Команда SET RELATION игнорирует SOFTSEEK и
устанавливает указатель записи в вспомогательной рабочей области,
как в режиме SOFTSEEK OFF.

Пример использования

SET SOFTSEEK ON
USE Salesman INDEX Salesman NEW
ACCEPT "Введите продавца: " TO cSearch
SEEK cSearch
DO CASE
CASE FIELD->Salesman = cSearch
? "Идет поиск:", FOUND(), EOF(), FIELD->Salesman
CASE !EOF()
? "идет относительный поиск:", FOUND(), EOF(), FIELD->Salesman
OTHERWISE
? "Не найдено:", FOUND(), EOF(), FIELD->Salesman
ENDCASE

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET TYPEAHEAD Установка размера буфера клавиатуры


105


-------------------------------------------------------------------

SET TYPEAHEAD TO <вырN>

Аргументы

<вырN> определяет количество символов в буфере клавиатуры в
диапазоне от 0 до 4096.

Установка размера буфера клавиатуры в 0 делает невозможным реакцию
системы на клавиши Alt-C и Alt-D во время длинных циклов.

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET UNIQUE* Переключает режим присоединения не уникальных ключе
-------------------------------------------------------------------
й в индексы
SET UNIQUE on | OFF | <вырL>

Аргументы

ON создание индексных файлов с уникальными ключами.

OFF создание индексных файлов с уникальными ключами.

<вырL> логическое выражение, которое может быть заключено в
круглые скобки. Принимает значение "истинно" (.T.), если указано ON,
значение "ложно", если OFF.

Применение

Во время создания или исправления индексного файла в тех случаях,
когда одна или несколько записей имеют одинаковое значение ключа,
Клиппер в индексный файл включает только первую из них запись.

Помните, что режим SET UNIQUE глобальный, и не относится только к
определенному индексному файлу. Поэтому, команда REINDEX в режиме
UNIQUE ON исключает не уникальные ключи из всех индексных файлов в
текущей рабочей области. По этим причинам, применяйте ее
внимательно.

SET UNIQUE - совместимая команда и поэтому не рекомендована. Она
заменяется предложением UNIQUE в комманде INDEX.

Library: CLIPPER.LIB.

-------------------------------------------------------------------
SET WRAP Переключение циклического сдвига в меню
-------------------------------------------------------------------

SET WRAP on | OFF | <вырL>

106


Применение

В режиме WRAP ON, когда светящаяся линия выбора разделов меню
указывает на последний раздел, то нажатие клавиш "вправо" и "вниз"
перемещает линию выбора в первому разделу. Если светящаяся линия
указывает на первый раздел меню, то клавиши "влево" и "вверх"
перемещают ее на последний раздел меню.

Library: CLIPPER.LIB.