ГЛАВА 5.Команды Clipperа (часть1)
Глава содержит общий список и детальное описание всех команд
Clipperа.
* Соглашения, использованные в описании синтаксиса команд и
функций.
* Обобщенный список всех команд, включая имя, синтаксис и
назначение.
* Детальное объяснение.
Соглашения, использованные в описании синтаксиса команд и
функций.
------------------------------------------------
Это руководство использует различные виды шрифта для различения
элементов языка и обсуждения их. Вот список принятых обозначений:
примеры - примеры исходного текста программ на Clipperе показаны
обычными буквами.
КЛЮЧЕВЫЕ СЛОВА - все команды и функции даны буквами верхнего
регистра.
Процедуры - имена функций и процедур, определенные
пользователем, написаны с большой буквы, например, Center().
Названия Клавиш - названия клавиш написаны с большой буквы,
например Ctrl-Стрелка вверх
Имена файлов/ИМЕНА ФАЙЛОВ - имена файлов Clipperа написаны с
большой буквы, например Myfile.prg.
Имена файлов DOS целиком написаны большими буквами,
включая расширения, например PROG.EXE
Тип файлов Clipperа указывается расширением в скобках, например
(.ntx) .
Определение символов
Таблица 5-1. Символы, использованные при описании синтаксиса
----------------------------------------------------------------
Символ Описание
----------------------------------------------------------------
<> Ввод пользователя
- 39 -
[] Дополнительно (по желанию)
/ Исключительное или
... - если продолжается символами, то это повторяющиеся
элементы
- входящий текст, если продолжается ключевым словом
Определение метасимволов.
Метасимволы используются в синтаксисе для описания общего вида
аргумента.
Таблица 5-2. Метасимволы, использованные в синтаксисе
----------------------------------------------------------------
Метасимвол Описание
----------------------------------------------------------------
синоним имя рабочей области
массив имя массива
условие логическое выражение
ограничитель символьная постоянная для ограничения
символьных строк
устройство устройство печати
шаблон директория символьное выражение
дисковод обозначение дисковода
выражение выражение любого вида
вырС символьное выражение
вырД выражение типа "дата" ("датное")
вырЛ логическое выражение
вырЧ числовое выражение
расширение расширение файла
поле поле базы данных
файл имя файла (не включая расширение)
ключевое выражение вырС, вырД или вырЧ для упорядочивания
или группировки
список перечень, разделенный запятыми
переменная переменная в памяти, любого типа
перемС переменная в памяти, символьного типа
параметр переменная или выражение любого типа
путь поиска путь к указанному директорию, начиная от
корневого
процедура процедура, функция (FUNC) или клиппер-программа
процесс отдельно скомпилированная или
ассемблированная клиппер-программа
клиппер-программа имя исполняемой из DOS программы
приглашение символьное выражение
ряд числовое выражение, указывающее позицию
на экране
обл.опр. часть файла базы данных, подлежащая обработке
шаблон шаблон, содержащий символы ? и *
текст строка символьных констант
переменная поле в файле или переменная в памяти
рабочая область номер рабочей области
Сводка команд Clipperа
?/?? <список выражений>
- 40 -
показывает результаты одного или больше выражений, разделенные
пробелами.
@ <вырЧ1>, <вырЧ2>, <вырЧ3> ,<вырЧ4> BOX <вырС>
рисует на экране рамку из указанных символов и заполняет ее
внутреннюю область.
@ <вырЧ1>, <вырЧ2> CLEAR [TO <вырЧ3>, <вырЧ3>]
стирает прямоугольную область экрана.
@ <вырЧ1>, <вырЧ2> PROMPT <вырС>[MESSAGE<вырС>]
рисует пункты меню и определяет массив сообщений для команды
MENU TO.
@ <вырЧ1>,<вырЧ2> [SAY <выражение> [PICTURE <вырС>]][GET <переменная>
[PICTURE <вырС>][RANGE <вырЧ1>,<вырЧ2>][VALID <вырЛ>]]
отображает и/или вводит данные в указанную позицию экрана. Вывод
возможен на экран или на принтер.
@ <вырЧ1>,<вырЧ2> TO <вырЧ3>,<вырЧ4> [DOUBLE]
рисует на экране одинарную или двойную рамку.
ACCEPT [<приглашение>] TO <переменная в памяти>
сохраняет символьную строку,введенную с клавиатуры, в изменяемой
APPEND BLANK
добавляет пустую запись в конец файла текущей базы данных.
APPEND [<обл.опр.>][FIELDS <список полей>] FROM <файл>/(<вырС>)[FOR
<условие>][WHILE <условие>][SDF]/[DELIMITED [WITH BLANK
/<ограничитель> /(<вырС>)]]
Добавляет строки в файл текущей базы данных из ASCII текстового
файла или файла другой базы данных.
AVERAGE [<обл.опр.>] <список выражений> TO <список переменных>
[FOR <условие>] [WHILE <условие>]
вычисляет среднее для последовательности числовых выражений для
указанного диапазона записей в текущей рабочей области и
записывает результаты в переменные.
CALL <процесс> [WITH <список выражений>]
позволяет Вам выполнить отдельно скомпилированную процедуру,
передав ей переменные.
CANCEL
прекращает выполнение программы
CLEAR
очищает экран, очищает все еще не введенные GETы, и
устанавливает курсор на строку 0, столбец 0
CLEAR ALL
закрывает все открытые файлы базы данных (включая относящиеся к
ним файлы индексов, формата и мемо-полей), удаляет все
переменные в памяти и переходит в первую рабочую область.
CLEAR GETS
стирает содержимое оставшихся GETов
CLEAR MEMORY
удаляет все глобальные и локальные переменные
CLEAR TYPEAHEAD
очищает буфер клавиатуры от любых оставшихся там символов
CLOSE ALL/ALTERNATE/DATABASES/FORMAT/INDEX
закрывает указанный тип файла
COMMIT
производит запись буферов на диск для всех рабочих областей
CONTINUE
продолжает поиск, начатый по команде LOCATE в текущей рабочей
области
COPY TO <файл>/(<вырС>) [<обл.опр.>][FIELDS <список полей>]
[SDF/DELIMITED WITH <ограничитель>/(<вырС2>)]
- 41 -
копирует весь или часть текущего файла базы данных в новый файл
COPY FILE <файл1>.<расширение> TO <файл2>.<расширение>
создает копию файла любого типа, находящегося на текущем для
Clipperа устройстве и директории
COPY STRUCTURE TO <файл>/(<вырС>) [FIELDS <список полей>]
создает пустой файл базы данных с определениями полей, взятыми
из текущего файла
COPY TO <файл>/(<вырС>) STRUCTURE EXTENDED [FIELDS <список полей>]
создает файл базы данных с четырьмя полями : Field_name,
Field_type, Field_len и Field_dec. Записи этого нового файла
являются определениями полей текущего файла базы данных.
COUNT [<обл.опр.>][FOR <условие>][WHILE <условие>] TO <переменная
в памяти>
подсчитывает количество записей в текущей рабочей области,
отвечающих условиям и лежащих в области определения
CREATE <файл>/(<вырС>)
создает файл пустой структуры
CREATE <файл1>/(<вырС1>) FROM <файл2>/(<вырС2>)
создает новый файл базы данных из указанного файла структуры
DECLARE <массив1>[<вырЧ1>][,<массив2>[<вырч2>]]...
создает один или больше массивов переменных
DELETE [<обл.опр.>][FOR <условие>][WHILE <условие>]
помечает к уничтожению строки в текущей рабочей области
DIR [<дисковод>:][<путь поиска>\[<шаблон>]
показывает имена файлов в указанном директории
DISPLAY [OFF] [<обл.опр.>] <список выражений> [FOR<условие>]
[WHILE <условие>] [TO PRINT][TO <файл>/(<вырС>)]
показывает результат одного или больше выражений, обработанных
для каждой строки в области определения, отвечающей условию
DO <процедура> [WITH <список параметров>}
выполняет указанную процедуру с способностью передать ей
фактические параметры
DO CASE ... CASE ... [OTHERWISE] ... ENDCASE
выбирает путь дальнейшего выполнения программы из набора условий
и соответствующих им ветвлений путем нахождения первого
выполненного условия
DO WHILE <условие> ... [EXIT] ... [LOOP] ... ENDDO
выполняет цикл, пока условие истинно
EJECT
выполняет "перевод страницы" и сбрасывает в ноль внутренние
PROW() и PCOL()
ERASE/DELETE FILE <имя файла>.<расширение>
удаляет с диска указанный файл
EXTERNAL <список процедур>
объявляет символ для линкера, позволяющий ссылаться с помощью
макроподстановок на процедуры, помещенные в оверлеи
FIND <символьная строка>/(<вырС>)
устанавливает указатель текущей строки на первую запись, ключ
индексирования которой совпадает с указанной строкой или
выражением
FOR <переменная> = <вырЧ1> TO <вырЧ2> [STEP <вырЧ3>] ... [EXIT] ...
NEXT
выполняет цикл заданное число раз
FUNCTION <процедура> ... RETURN <выражение>
определяет функцию, написанную пользователем на языке Clipperа
GO/GOTO <вырЧ> /BOTTOM/TOP
переводит указатель строки на конкретную запись в текущей
- 42 -
рабочей области
IF ...[ELSE] ... ENDIF
позволяет условное выполнение команд с ещей
альтернативой выбора
INDEX ON <выражение> TO <файл>/(<вырС>)
создает файл, содержащий индекс на строки в текущем файле базы
данных
INPUT [<приглашение>] TO <переменная>
осуществляет ввод выражения в переменную
JOIN WITH <синоним>/(<вырС1>) TO <файл>/(<вырС2>) FOR <условие>
[FIELDS <список полей>]
создает новый файл базы данных путем слияния выбранных записей и
полей из двух рабочих областей
KEYBOARD <вырС>
вставляет указанную строку в буфер клавиатуры
LABEL FORM <файл1>/(<вырС1>) [<обл.опр.>] [FOR <условие>]
[WHILE <условие>] [SAMPLE] [TO PRINT] [TO FILE <файл2>/(<вырС2>)]
создает метки (наклейки) по определениям, хранящимся в файле
(.lbl)
LIST [OFF] [<обл.опр.>] <список выражений>[FOR <условие>]
[WHILE <условие>] [TO PRINT] [TO FILE <файл>/(<вырС>)]
показывает результат одного или больше выражений для каждой
обработанной строки, при данных области определения и условии
LOCATE [<обл.опр.>] [FOR <условие>] [WHILE <условие>]
устанавливает указатель строки на первую запись, удовлетворяющую
условию, и лежащую в области определения
NOTE / *[<текст>] / [<команда>] && [<текст>]
вставляет неисполняемый комментарий на новой строке программы.
Коммментарий, следующий за "&&", может помещаться после команды
на той же или на отдельной строке
PACK
удаляет "насовсем" строки, помеченные к удалению в файле текущей
базы данных
PARAMETERS <список переменных>
указывает список переменных, принимающих переданные значения или
ссылки
PRIVATE <список переменных>
прячет указанные переменные, позволяя Вам в программе нижнего
уровня иметь переменные с такими же именами, как и в вызвавшей
ее, не изменяя значения последних
PROCEDURE <имя процедуры>
обозначает начало процедуры
PUBLIC <список переменных>/clipper
объявляет переменные глобальными
QUIT
прекращает работу программы, закрывает все открытые файлы, и
возвращает управление операционной системе
READ [SAVE]
входит в режим полноэкранного редактирования, используя текущий
набор GETов
RECALL [<обл.опр.>][FOR <условие>] [WHILE <условие>]
снимает отметки с записей, помеченных к удалению
REINDEX
пересоздает все открытые индексные файлы в текущей рабочей
области
RELEASE <список переменных> /[ALL [LIKE /EXCEPT <шаблон>]]
стирает переменные из памяти
- 43 -
RENAME <файл1>.<расширение> TO <файл2>.<расширение>
дает новое имя существующему файлу
REPLACE [<обл.опр.>][<синоним> ->] <поле1> WITH <выр1> [,<поле2> WITH
<выр2>,...] [FOR <условие>][WHILE <условие>]
REPORT FORM <файл1>/(<вырС1>) [<обл.опр.>][FOR <условие>]
[WHILE<условие>] [TO PRINT] [TO FILE <файл2>/(<вырС2>)]
[SUMMARY][PLAIN][HEADING <вырС3>][NOEJECT]
выдает табличный, по желанию, сгруппированный отчет с
постраничными и постолбцовыми заголовками по определениям,
хранящимся в файле (.frm)
RESTORE FROM <файл>/(<вырС>) [ADDITIVE]
извлекает переменные из файла памяти (.mem) и помещает их в
память
RESTORE SCREEN [FROM <переменная>]
повторно показывает экран, ранее показанный и сохраненный
командой SAVE SCREEN
RETURN [<выражение>]
заканчивает процедуру или программу, передавая управление либо
вызвавшей процедуре, либо операционной системе
RUN / !<клиппер-программа> / (<вырС>)
выполняет программу из DOS
SAVE TO <файл>/(<вырС>) [ALL [LIKE /EXCEPT <шаблон>]]
сохраняет переменные в файле памяти (.mem)
SAVE SCREEN [TO <переменная>]
записывает текущий экран в буфер или переменную
SEEK <выражение>
ищет в индексе первый ключ, совпадающий с указанным выражением
SELECT <рабочая область> /<синоним> /(<вырЧ>)
переходит из текущей в другую рабочую область
SET ALTERNATE TO <файл>/(<вырС>)
создает файл для строки выдачи, порожденной любыми командами,
кроме @ ... SAY ... GET
SET ALTERNATE on/OFF/(<вырЛ>)
определяет, дублируется-ли выдача на экран в открытый в
настоящее время альтернативный файл
SET BELL on/OFF/(<вырЛ>)
определяет, раздается-ли звонок при операциях ввода данных
SET SENTURY on/OFF/(<вырЛ>)
определяет, показывается-ли дата с указанием столетия
SET COLOR TO [<стандартный>[,<выделенный>] [,<граничный>]
[,<фоновый>] [,<отключенный>]] /(<вырС>)
устанавливает цвета, в которых будет производится выдача на
экран
SET CONFIRM on/OFF/(<вырЛ>)
определяет, требуется-ли нажатие клавиши 'Return' для завершения
приема в GET
SET CONSOLE on/OFF/(<вырЛ>)
определяет, производится-ли выдача на экран для ряда команд ( не
включая полноэкранные команды и функции расширения, такие как
ACHOICE() и DBEDIT() )
SET CURSOR on/OFF/(<вырЛ>)
включает и выключает изображение курсора
SET DATE AMERICAN /ANSI /BRITISH /ITALIAN /FRENCH /GERMAN
устанавливает формат даты для отображения, передачи аргументов и
возврата значений
SET DECIMALS TO <вырЧ>
устанавливает количество десятичных знаков для отображения
- 44 -
результатов вычислений
SET DEFAULT TO <дисковод>[:<путь поиска>]
делает дисковод и директорий текущими для поиска и создания
файлов
SET DELETED on/OFF/(<вырЛ>)
прячет/разрешает обрабатывать строки, помеченные к уничтожению
SET DELIMITERS on/OFF/(<вырЛ>)
определяет, обрамляют-ли GET ограничители
SET DELIMITERS TO [<вырС>] /[DEFAULT]
указывает символы, используемые для ограничения GETов
SET DEVICE TO SCREEN / PRINT
посылает результаты команды @ ... на экран/принтер
SET ESCAPE ON/off/(<вырЛ>)
при значении, по умолчанию, "ON", нажатие клавиши 'Esc' на
предложениях GET...READ игнорирует проверку по VALID; нажатие
'Alt-C' позволяет прервать программу. При значении "off" нажатие
'Esc' не позволяет завершить READ а нажатие 'Alt-C' игнорируется
SET EXACT on/OFF/(<вырЛ>)
требует/не требует точного соответствия при сравнении символов
SET EXCLUSIVE ON/off/(<вырЛ>)
определяет, будет-ли файл базы данных (и связанные с ним файлы)
открыт для коллективного или монопольного доступа
SET FILTER TO [<условие>]
представляет файл базы данных как-бы состоящим только из
записей, отвечающих условию
SET FIXED on/OFF/(<вырЛ>)
фиксирует/не фиксирует количество десятичных знаков, как они
определены в SET DECIMAL
SET FORMAT TO <процедура>
активизирует формат, который будет использован, когда встретится
команда READ
SET FUNCTION <вырЧ> TO <вырС>
определяет символьную строку, возвращаемую при нажатии
соответствующей функциональной клавиши
SET INDEX TO [<список файлов> / (<вырС1>),...]
открывает указанный индексный файл (файлы) или закрывает любые
открытые индексные файлы, усли использована без аргумента
SET INTENSITY ON/off/(<вырЛ>)
включает/выключает показ GETов выделенным цветом или инверсно
SET KEY <вырЧ> TO [<процедура>]
позволяет исполнить потом процедуру из любого "состояния
ожидания" по нажатию назначаемой сейчас клавиши, где "состояние
ожидания" - это любая команда (кроме INKEY() ),
приостанавливающая работу программы
SET MARGIN TO <вырЧ>
устанавливает левую границе принтера и экрана
SET MESSAGE TO <вырЧ> [CENTER]
назначает строку, где будут выдаваться сообщения (MESSAGE),
связанные с соответствующими приглашениями (PROMPT)
SET ORDER TO [<вырЧ>]
делает один из открытых индексных файлов управляющим
SET PATH TO [<список путей>]
указывает пути поиска, по которым Clipper ищет файлы
SET PRINT on/OFF/(<вырЛ>)
определяет, посылается-ли выдача всех команд, кроме @...SAY, на
принтер
SET PRINTER TO [<устройство>/<файл>/(<вырС>)]
- 45 -
определяет, куда направлять выдачу, предназначенную для печати
SET PROCEDURE TO [<файл >]
открывает названный процедурный файл во время компиляции и
включает все процедуры и пользовательские функции в текущий
объектный файл
SET RELATION TO [<ключ.выр1> / <RECNO()> / <вырЧ1> INTO <синоним1>]
[,TO <ключ.выр2>/<RECNO()>/<вырЧ2> INTO <синоним2>]...
связывает рабочие области согласно ключевым выражениям
SET SCOREBOARD on/OFF/(<вырЛ>)
определяет, будут-ли сообщения Clipperа появляться на строке 0
SET SOFTSEEK on/OFF/(<вырЛ>)
позволяет "относительный" поиск. Если искомая запись не найдена,
то указатель ставится туда, где она должна была-бы быть
SET TYPEAHEAD TO <вырЧ>
задает размер буфера клавиатуры
SET UNIQUE on/OFF/(<вырЛ>)
определяет, появляются-ли в индексе строки только с уникальными
ключами
SET WRAP on/OFF/(<вырЛ>)
позволяет/не позволяет кольцевое движение по меню
SKIP <вырЧ1>[ALIAS <рабочая область>/<синоним>/(<вырЧ2>)
передвигает указатель строки вперед или назад на указанное число
записей в указанной рабочей области
SORT [<обл.опр.>] ON <поле1> [/A][/C][/D][,<поле2>[/A][/C][/D]] ...
TO <файл>/(<вырС>)[FOR <условие>] [WHILE <условие>]
копирует строки, соответствующие области определения и условию,
из текущей рабочей области в другой файл базы данных в
отсортированном порядке
STORE <выражение> TO <список переменных> / <переменная> = <выражение>
сохраняет результат выражения в одну или больше переменных
SUM [<обл.опр.>] <список вырЧ> TO <список переменных> [FOR <условие>]
[WHILE <условие>]
TEXT [TO PRINT][TO FILE <файл>] ... ENDTEXT
выводит блок текста
TOTAL ON <ключевое выражение> [<обл.опр.>][FIELDS <список полей>] TO
<файл>/(<вырС>) [FOR <условие>][WHILE <условие>]
обобщает строки по ключевому признаку, суммируя указанные
ключевые поля и записывая результаты во второй файл базы данных
TYPE <файл1> [TO PRINT][TO FILE <файл2>]
показывает содержимое текстового файла
UNLOCK [ALL]
снимает замки с файлов и записей, ранее установленные функция (FUNC)ми
FLOCK() и RLOCK()
UPDATE ON <ключевое выражение> FROM <синоним> REPLACE <поле1> WITH
<выр1>[,<поле2> WITH <выр2>]... [RANDOM]
обновляет текущий файл базы данных из другого файла базы данных
по отношениям один-к-одному и один-ко-многим
USE [<файл>/(<вырС1>)] [INDEX <список файлов>/(<вырС2>)
[,(<вырС3>)]...] [EXCLUSIVE] [ALIAS <синоним>/(<вырС4>)]
открывает существующий файл базы данных (.dbf), связанные с ним
мемо-файлы (.dbt), и, по желанию, соответствующие индексные
файлы (.ntx/.ndx) в текущей рабочей области
WAIT [<приглашение>] [TO <переменная>]
задерживает выполнение программы до нажатия какой-либо клавиши
ZAP
удаляет все строки из активного файла базы данных, оставляя
заголовок файла
- 46 -
Детальное описание команд
? / ??
синтаксис : ? / ?? <список выражений>
показывает результаты одного или более выражений, разделяя их
пробелами.
<список выражений> - это список значений любого типа,
перечисленный через запятую. Список может состоять из любой
комбинации типов данных, включая тип мемо. Команда имеет два
вида. Первый - "?" - сначала переводит курсор в начало следующей
строки и потом уже выводит информацию. Второй - "??" - наоборот,
сразу выводит информацию, позволяя последовательным командам
"??" выводить на ту же строку.
Заметьте, что результат каждого выражения из заданного списка
отделяется от предыдущего пробелом.
примеры : - вывод на две строки
? "привет"
? "всем"
результат :
привет
всем
- вывод на одну строку
?? "привет"
?? "всем"
результат :
привет всем
library : CLIPPER.LIB
Смотри также : @...SAY, TEXT
@...BOX
синтаксис @ <вырЧ1>,<вырЧ2>,<вырЧ3>,<вырЧ4> BOX <вырС>
Рисует на экране рамку и заполняет ее символами. Символы для
каждой стороны и каждого угла можно задавать.
<вырЧ1> - номер верхней строки (от 0 до 24)
<вырЧ2> - номер левого столбца (от 0 до 79)
<вырЧ3> - номер нижнего ряда (от 0 до 24)
<вырЧ4> - номер правого столбца (от 0 до 79)
<вырС> - строка из восьми символов, задающих границу и девятого
- заполнения. BOX рисует рамку, используя эту строку, начиная с
левого верхнего угла и далее по часовой стрелке.
примеры : нарисовать рамку, охватывающую весь экран, задав символы
для углов, сторон и заполнения :
- 47 -
frame = CHR(201)+CHR(205)+CHR(187)+CHR(186)+;
CHR(188)+CHR(205)+CHR(200)+CHR(186)+CHR(176)
@ 1,0,24,79 BOX frame
Определение границ для нескольких распространенных рамок :
* одинарная
single = CHR(218)+CHR(196)+CHR(191)+CHR(179)+;
CHR(217)+CHR(196)+CHR(192)+CHR(179)
* двойная
double = CHR(201)+CHR(205)+CHR(187)+CHR(186)+;
CHR(188)+CHR(205)+CHR(200)+CHR(186)
* двойной верх и одинарный бок
double_single = CHR(213)+CHR(205)+CHR(184)+CHR(179)+;
CHR(190)+CHR(205)+CHR(212)+CHR(179)
* одинарный верх и двойной бок
single_double = CHR(214)+CHR(196)+CHR(183)+CHR(186)+;
CHR(189)+CHR(196)+CHR(211)+CHR(186)
library : CLIPPER.LIB
Смотри также : @...CLEAR, @...TO
@...CLEAR
синтаксис @<вырЧ1>,<вырЧ2> CLEAR [TO <вырЧ3>,<вырЧ4>]
Очищает прямоугольную область экрана.
<вырЧ1...вырЧ2> - определяют координаты верхнего левого угла -
строку и столбец, соответственно.
TO - определяет нижний правый угол (<вырЧ3> и <вырЧ4>) стираемой
области. Если этот угол не указан, то, по умолчанию, принимаются
следующие координаты - строка 24, столбец 79.
примеры :
@ 10,10 CLEAR TO 20,40
@ 10,10 CLEAR
library : CLIPPER.LIB
Смотри также : @...BOX, CLEAR, SCROLL()
@...PROMPT
синтаксис @ <вырЧ1>,<вырЧ2> PROMPT <вырС1> [MESSAGE <вырС>]
- 48 -
Рисует меню и определяе массив сообщений, используемый командой
MENU TO.
<вырЧ1> - строка, где поместить данный пункт меню (приглашение)
<вырЧ2> - столбец, где начнется приглашение
<вырС1> - строка с текстом приглашения
MESSAGE - определяет поясняющее сообщение, выдаваемое каждый
раз, когда подсвечивается данный пункт меню. Эти сообщения
выдаются на строке, определенной командой SET MESSAGE.
@...PROMPT - это отображающая часть системы световых меню
Clipperа. Каждое предложение @...PROMPT рисует один пункт меню.
После этого командой MENU TO вызывается механизм обслуживания
светового меню. Приглашения могут быть нарисованы в любом
порядке и в любых позициях экрана. Светящаяся строка ходит по
ним в том порядке, в котором они были перечислены в программе.
Для одного меню можно определить до 32 пунктов.
Цвет : приглашения окрашены в текущий стандартный цвет, а
подсвеченная строка - в текущий выделенный цвет.
Пример
CLEAR
SET WRAP ON
SET MESSAGE TO 23 CENTER
@ 1,3 PROMPT "файл"
@ 1,COL()+2 PROMPT "редактировать"
@ 1,COL()+2 PROMPT "искать"
@ 1,COL()+2 PROMPT "дополнить"
@ 1,COL()+2 PROMPT "печать"
MENU TO choice
library : CLIPPER.LIB
Смотри также : MENU TO, SET COLOR, SET MESSAGE, SET WRAP, ACHOICE()
@...SAY...GET
синтаксис @ <вырЧ1>,<вырЧ2> [SAY <выражение>[ PICTURE <вырС>]][GET
<переменная> [PICTURE <вырС>] [RANGE <вырЧ3>,<вырЧ4>]
[VALID <вырЛ>]]
<вырЧ1> - координата строки
<вырЧ2> - координата столбца
SAY - показывает результат выражения любого типа (включая мемо) в
казанных координатах на текущем устройстве, в текущем
стандартном цвете (смотри SET COLOR). Clipper поддерживает два
устройства - экран (SCREEN) и принтер (PRINT). Если выбрано
устройство печати (SET DEVICE TO PRINT), то выдача от команд
отправляется на принтер. В остальных случаях она идет на экран.
Чтобы направить выдачу в файл, дайте команду SET DEVICE TO PRINT
и, затем, перенаправьте распечатку в файл : SET PRINTER TO <имя
выходного файла>. Все, что предназначалось для принтера, попадет
- 49 -
в текстовый файл.
GET - показывает <переменую> (поле или переменную в памяти) в
указанной позиции экрана и добавляет ее в список ждущих GETов.
Ближайшая команда READ включает полноэкранный режим
редактирования, позволяющий Вам использовать полный набор клавиш
редактирования и движения по экрану. Полный список клавиш
смотрите в описании команды READ.
Clipper поддерживает ввод в поля других рабочих областей, если
ссылаться на них используя синонимы. Для примера :
@ 10,10 GET <синоним> -> <имя поля>
GETы отбражаются в "выделенном" цвете, кроме случая, когда
"отключенный" цвет был установлен командой SET COLOR. В таком
случае текущий GET показан "выделенным" цветом, а остальные -
"отключенным" цветом. GETы не направляются на принтер или в файл
командой SET DEVICE TO PRINT.
PICTURE: - определяет маску для ввода в GET и форматирует вывод через
SAY. Clipper имеет два механизма управления форматированием:
функции и шаблоны. Функции действуют на весь SAY или GET, тогда
как шаблоны маскируют символы позиция за позицией.
Функции: - в данном случае функция (FUNC) - это символ, предшествуемый
символом "@". Если за функцией следует символ шаблона, то он
должен быть отделен пробелом. Определяя каждую PICTURE, можно
использовать несколько функций.
ТАБЛИЦА 5-3. СИМВОЛЫ ФУНКЦИЙ PICTURE.
-------------------------------------
------------------------------------------------------------
Функция Действие
------------------------------------------------------------
A Допускает только алфавитные символы в GETе.
B Показывает числа, выровненные по левому
краю.
C Показывает "CR" после положительных чисел.
D Показывает даты в формате SET DATE.
E Показывает даты в Британском формате, числа
в Европейском ( точка и запятая меняются
местами ).
K Очищает GET, если первой нажата не клавиша
управления курсором.
R Вставлены нешаблонные символы.
S<n> Позволяет горизонтальную прокрутку в GETе.
X Показывает "DB" после отрицательных чисел.
Z Показывает нули как пробелы.
( Вкладывает отрицательные числа в скобки с
начальными пробелами.
) Вкладывает отрицательные числа в скобки без
начальных пробелов.
! Переводит алфавитные символы в верхний
- 50 -
регистр.
------------------------------------------------------------
Шаблоны: - если символы шаблона задаются, то они следуют за функция (FUNC)ми
в строке PICTURE. Каждая позиция в выводном или вводном потоке
привязана к символу в той же позиции шаблона.
ТАБЛИЦА 5-4. СИМВОЛЫ ШАБЛОНА PICTURE.
-------------------------------------
-------------------------------------------------------------
Шаблон Действие
-------------------------------------------------------------
A Показывает только алфавитные символы.
N Показывает только алфавитные и цифровые
символы.
X Показывает любой символ.
9 Показывает цифры для любого типа данных,
включая знак для чисел.
# Показывает цифры, знаки и пробелы для
любого типа данных.
L Показывает логические значения "T" или "F".
Y Разрешает только "Y" или "N".
! Переводит алфавитный символ в верхний
регистр.
$ Показывает знак доллара в знакоместе
начального пробела числа.
* Показывает звездочку в знакомемте начального
пробела числа.
. Указывает позицию десятичной точки.
, Указывает позицию запятой.
-------------------------------------------------------------
Другие символы, указанные в шаблоне, замещают символ в той же
позиции исходного потока и выдачи. Если, однако, Вы используете
функцию "R", то указанные нешаблонные символы вставляются в
изображение, но не в принятое значение, если PICTURE
использовано с GET.
RANGE: - ограничивает ввод в перемbr /br /lt;обл.опр.lt;вырС делает один из открытых индексных файлов управляюgt;/(br /br /щимbr /br /lt;обл.опр.lt;вырС делает один из открытых индексных файлов управляющимbr /br /lt;обл.опр.lt;вырС делает один из открытых индексных файлов управляющименbr /gt;lt;выражениеные датно - входящий текст, если продолжается ключеbr /gt;]br /br /br / [WHILE вым словом рисует на экране одинарную или двойную рамку. STORE го и числового типа,
указывая нижнюю и верхнюю допустимые границы ( нижняя
предш RELEASE br /ествует верхней). Если значение не попадает в разрешенный
диапазон, то выдается соответствующее в области SCOREBOARD и
управление возвращается в этот GET. Если Вы прекращаете ввод
нажатием "Esc", то проверка диапазона не производится. В этом
случае <переменная> сохраняет свое исходное значение.
VALID: - проверяет ввод в GET по логическому выражению. Как и RANGE,
VALID проверяет введенное при завершении ввода в GET, кроме
выхода нажатием "Esc" при установленном SET ESCAPE ON. Если
проверяющее логическое выражение возвращает ложь (.F.), то
управление возвращается в GET и Вы не можете покинуть GET пока
проверка не вернет истину (.T.) или Вы не нажмете "Esc".
Это проверочное выражение может содержать или само быть
- 51 -
функцией, определенной пользователем. Это полезно для проверки
по таблицам и других видов пост-обработки.
Одна из уникальных возможностей Clipperа - это то, что внутри
своей функции, вызванной VALID, Вы можете изменить содержимое
текущего GETа. Вы просто присваиваете новое значение текущей
изменяемой (STORE или REPLACE). Когда управление вернется к
GETу, Clipper подставит новое значение.
Подсказка: - Вы можете создать систему подсказок, действующую на
экране, состоящем из @...SAY...GETов. Сначала назначьте новую
процедуру на нужную клавишу командой SET KEY TO. Затем, внутри
этой этой процедуры, определите текущий GET, используя функцию
READVAR() и выдайте нужную подсказку. Причем в теле этой
процедуры, вызываемой через SET KEY, Вы можете изменять
содержимое текущего GETа таким же образом, как через VALID.
Примеры: - использование VALID для проверки ввода в GET:
number=0
@10,10 SAY "Введите число больше нуля:";
GET number;
VALID n>0
Ввод в другую область:
SELECT 1
USE invoice
APPEND BLANK
SELECT 2
USE inventory
@1,1 GET invoice -> Cust_no
READ
Пример функции "@E":
net_income=7125.50
@1,1 SAY net_income PICTURE "@E 9,999.99"
Результат: 7.125,50
Пример функции "@)":
net_loss= -125.50
@1,1 SAY net_loss PICTURE "@)"
Результат: (125.50)
Функция "@K" предлагает вводимое значение, но
стирает его, если нажата любая клавиша, кроме
управляющих курсором:
file="Accounts"
@1,1 SAY "Введите файл" GET file PICTURE "@K"
READ
Функция "@S<n>" позволяет прокрутку длинной
символьной строки в горизонтальном окне:
long="Эта строка слишком длинна."
@1,1 GET long PICTURE "@S10"
READ
library: CLIPPER.LIB
- 52 -
См. также: ?/??,@...TO,@...CLEAR,CLEAR,CLEAR GETS,READ,
SET BELL,SET CONFIRM,SET DELIMITERS,SET DEVICE,
SET FORMAT,SET INTENSITY,TEXT,COL(),ROW(),PCOL(),
PROW(),SETPRC()
@...TO
Написание: @<вырЧ1>,<вырЧ2> TO <вырЧ3>,<вырЧ4> [DOUBLE]
Рисует на экране одинарные или двойные рамки.
<вырЧ1...вырЧ4> определяют координаты рамки: вырЧ1 и вырЧ2
задают верхний левый угол, а вырЧ3 и вырЧ4 - нижний правый. Если
координаты строк (<вырЧ1> и <вырЧ3>) одинаковы, то Clipper
рисует горизонтальную линию. Если одинаковы координаты столбцов
(<вырЧ2> и <вырЧ4>), то рисуется вертикальная линия.
DOUBLE: - рисует рамку двойной линией. Если эта опция не указана, то
рамка будет одинарной. @...TO очень похожа на @...BOX с двумя
исключениями. Во-первых, @...BOX позволяет определить символы,
используемые для рисования рамки и, во-вторых, обеспечивает
заполнение рамки символами. Однако, @...TO легче в
использовании, поскольку Вам не надо запоминать необходимые
символы.
Пример: @10,10 CLEAR TO 20,40
@10,10 TO 20,40 DOUBLE
library: CLIPPER.LIB
См. также: @...BOX,@...CLEAR,ACHOICE(),DBEDIT(),SCROLL()
ACCEPT
Написание: ACCEPT [<приглашение>] TO <переменная>
Вводит строку с клавиатуры в указанную переменную.
<переменная> - это имя изменяемой, куда помещается введенная
строка.
<приглашение> - символьная строка, высвечиваемая перед вводимой
областью.
ACCEPT помещает введенную с клавиатуры строку во вновь созданную
символьную переменную. Нажатие клавиши "RETURN" подтверждает
ввод и является единственной клавишей, заканчивающей ввод. Если
"RETURN" - это единственная нажатая клавиша, то ACCEPT создает
переменную с нулевым значением ("").
Пример: ACCEPT "Введите значение: " TO var
- 53 -
library: CLIPPER.LIB
См. также: @...SAY...GET,INPUT,WAIT,INKEY()
APPEND BLANK
Написание: APPEND BLANK
Добавляет новую, пустую запись в конец текущего файла БД и
делает ее текущей записью.
Пример: USE sales
?FIELD(1) && Результат: Salesman
?LASTREC() && Результат: 83
APPEND BLANK
?LASTREC() && Результат: 84
name=FIELD(1)
?EMPTY(&name) && Результат:.T.
Сеть: Когда работа идет в сети, и текущий файл открыт для
коллективного пользования, APPEND BLANK пытается добавить и,
затем, запереть новую запись. Если другой пользователь уже запер
файл БД, или пытался сделать APPEND BLANK в то же самое время,
функция (FUNC) NETERR() вернет истину (.T.). Заметьте, что вновь
добавленная запись остается запертой, пока Вы не запрете другую
запись или же отопрете командой UNLOCK. Добавление записей
командой APPEND BLANK не отменяет FLOCK(), сделанный текущим
пользователем.
Смотрите подробности в главе 10 - "Использование Clipperа в
локальной сети".
Сетевой пример: В этом примере APPEND BLANK добавляет запись, если
NETERR() не возвращает ошибку:
SET EXCLUSIVE OFF
IF NET_USE("Accounts",.F.,5) && успешное USE
APPEND BLANK
IF NETERR()
? "недоступно"
ELSE
<обработка новой строки>
ENDIF
ENDIF
library: CLIPPER.LIB
См. также: APPEND FROM,SET CARRY,SET CONFIRM,SET FORMATAPPEND FROM
- 54 -
Написание: APPEND [<обл.опр.>][FIELDS<список полей>]FROM
<файл>(<вырС>)[FOR<условие>][WHILE<условие>][SDF]/
[DELIMITED[WITH BLANK/<ограничитель>/(<вырС>)]]
Добавляет строки в текущий файл БД из ASCII текстового файла или
из другого файла БД.
<файл> - имя файла-источника. Если его тип не указан, то, по
умолчанию, тип(.dbf) и расширения не требуется. Если тип указан,
то расширение предполагается (.txt), если не указано другое.
FIELDS: - Если указана эта опция,то данные добавляются только в
перечисленные поля.
Область определения: - это часть исходного файла БД, откуда
добавлять строки. В Clipperе указание "NEXT <n>" добавляет
первые <n> записей и имеет приоритет перед любыми условиями FOR
и WHILE. Указание "RECORD <n>" добавляет только запись номер <n>
из исходного файла БД в целевой файл БД. По умолчанию, область
определения - все строки (ALL).
Условие: - Опция FOR определяет внутри данной области определения
множество записей, подлежащих добавлению. Опция WHILE определяет
множество записей, отвечающих условию, начиная с первой строки
исходного файла и до тех пор, пока условие верно.
Тип: - Clipper может импортировать из файлов трех типов: SDF,
DELIMITED и (.dbf).
SDF означает ASCII файл формата системных данных. Каждая запись
- фиксированной длины, заканчивается символами возврата каретки
и перевода строки; метка конца файла - "Ctrl-Z" (1A -
шестнадцатеричное).
DELIMITED: - означает ASCII текстовый файл, в котором поля
разделены запятыми, и символьные поля ограничены двойными
кавычками (по умолчанию). Ограничители не обязательны, и Clipper
правильно добавляет символьные поля, не охваченные
ограничителями. Поля и строки имеют переменную длину и
заканчиваются возвратом каретки и переводом строки. Метка конца
файла "Ctrl-Z" (шестнадцатеричное 1A).
DELIMITED WITH BLANK означает ASCII текстовый файл, где поля
разделены одним пробелом и символьные поля не охвачены
ограничителями.
DELIMITED WITH <ограничитель> означает ASCII текстовый файл, где
символьные поля охвачены указанным ограничителем.
Записи в исходном файле, помеченные к удалению, добавляются и в
целевом файле уже не помечаются к удалению. Однако, после
установки SET DELETED ON, помеченные строки просто не
добавляются. В отличие от DBASE III PLUS целевое и исходное поля
должны иметь одинаковый тип и название. Если это не так, то при
выполнении команды Вы получите сообщение об ошибке "Type
conflict in REPLACE (Q/A/I)?".
- 55 -
Ширина полей: - Если целевое поле шире, то Clipper заполняет его
пробелами, если уже, то он обрезает исходные данные.
Пример добавления с использованием списка полей:
USE Sales
APPEND FIELDS Branch,Salesman,Amount;
FROM Branch;
FOR Branch=100
Пример с областью определения:
APPEND RECORD 5 FROM TEMP
Работа в сети: Заметим, что APPEND FROM не требует запирания целевого
файла с помощью FLOCK() или открытия в монопольном режиме (USE
EXCLUSIVE) для правильной работы. Clipper автоматически
обрабатывает состязания для целевого файла в процессе
дополнений.
library: CLIPPER.LIB
См. также: COPY,FREAD()
AVERAGE
Написание: AVERAGE [<обл.опр.>]<список выражений>TO
<список переменных>[FOR<условие>][WHILE<условие>]
Находит среднее последовательности выражений и записывает
результаты в переменные для указанного диапазона записей в
текущем файле БД.
<список выражений> - список числовых значений, подлежащих
усреднению для каждой обработанной строки.
<список переменных> - указывает переменные, принимающие
результаты. Создается при выполнении команды. Содержимое
существующих одноименных переменных замещается вычисленными
значениями. Этот список должен содержать точно такое же
количество элементов, как и список выражений.
<область определения> - часть текущегог файла БД, подлежащая
усреднению. По умолчанию - это все строки (ALL).
Условие FOR задает множество записей в данной области
определения. Условие WHILE задает множество записей, отвкчающих
условию, начиная с текущей и пока условие верно.
Пример: USE Sales
AVERAGE FIELDS Amount TO avg_amount;
FOR UPPER (Branch)="100"
library: CLIPPER.LIB
- 56 -
См. также: SUM,TOTAL