ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 1

			      -1-
Торговые марки

    FoxBASE, FoxBASE+ и FoxBASE+/MAC являются зарегистрированными тор-
говыми марками.  FoxPro  является  торговой маркой фирмы Fox Holdings,
Inc. В данном руководстве могут использоваться другие торговые марки.

    Содержание
Язык программирования FoxPro
 Использование языка FoxPro
    Командное окно
    Создание программ
    Сохранение программ
    Модификация программ
    Выполнение программ
    Дополнительная информация о программах
    Возможности оперативной помощи FoxPro
 Понятия языка программирования FoxPro
    Команды м функции
    Соглашения о синтаксисе команд и функций
    Выражения
    Диапазон записей: scope (контекст), For и While
    Рабочие области баз данных
    Функции и поля памяти memo
    Типографские соглашения

Команды и функции по категориям
 Типы данных
    Символьные функции
    Числовые функции
    Функции даты и времени
    Преобразование данных
 Базы данных
    Манипуляции с полями
    Манипуляции с базами данных
    Манипуляции с записями
    Индексы
    Связи
 Программирование
    Отладка и обработка ошибок
    Выполнение программ
    Команды структурного программирования
    Функции для работы с файлами на низком уровне
    Манипуляции с переменными памяти
    Манипуляции с массивами
    Управление событиями
 Ввод и вывод
    Форматирование данных
    Печать
    Линейки меню и всплывающие меню
    Окна
    Печать, клавиатура и "мышь"
    Отчеты и этикетки
 Среда FoxPro
    Среда
    Работа с файлами
 Работа в сети (FoxPro/LAN)
    Сетевые команды и функции

			     -2-


Команды и Функции
    Эта часть  содержит  полное описание команд и функций FoxPro.  Эта
часть организована в алфавитном порядке и начинается на странице 3-1.

Системные Переменные Памяти
    Эта часть  содержит  полное  описание  системных переменных памяти
FoxPro.  Эта часть организована в алфавитном порядке и	начинается  на
странице 4-1.

    1. Язык программирования FoxPro.
    --------------------------------

    FoxPro - это программа, созданная для управления данными - катало-
гизации,  поддержки и обработки информации. Хотя Вы можете производить
многие операции базы данных через систему меню и интерфейс,  овладение
обширными  возможностями  FoxPro  требует некоторого знания лежащего в
основе языка программирования.
    Эта часть содержит ряд тем,  которые помогут Вам использовать про-
цедурный язык,	включая объяснение соглашений,	которые мы используем,
чтобы  описать	синтаксис  и  правильное  применение  команд и функций
FoxPro.
    FoxPro имеет элегантный интерфейс с пользователем, который обеспе-
чивает простое манипулирование данными.  При пользовании  интерфейсом,
соответствующие вашим  действиям команды FoxPro генерируются в Команд-
ном окне.  Командное окно является шлюзом между интерфейсом  и	языком
FoxPro.
    Командное окно содержит предисторию всех команд, созданных во вре-
мя интерактивного  сеанса  в FoxPro,  и тем самым обеспечивает широкие
возможности для освоения языка. Изучая сгенерированные команды при ра-
боте с интерфейсом вы быстро узнаете язык.
    Команды, сгенерированные в Командном окне, могут быть легко выпол-
нены заново  путем перемещения курсора на строку с этой командой и на-
жатия клавиши Enter.  Долгий интерактивный сеанс в  FoxPro  генерирует
длинный список команд в Командном окне.  Вы можете копировать и встав-
лять эти команды в программы FoxPro.
    Программы FoxPro  вместе  с  командами  FoxPro являются мощнейшими
средствами манипулирования данными. Доступ ко всем возможностям FoxPro
осуществляется через его язык.

	       Использование языка FoxPro

    Командное окно

    Команды FoxPro  могут быть исполнены непосредственно из Командного
окна. Для этого наберите нужный текст с Командном окне и нажмите  кла-
вишу Enter.  Для выполнения этой команды еще раз, с помощью клавиш уп-
равления курсором установить курсор на строку с нужной командой и наж-
мите клавишу Enter или кнопку "мыши".
    Т.к. Командное  окно  является  специальным  окном	редактирования
текста,  вы можете редактировать команды, используя правила редактиро-
вания в FoxPro.  В Командном окне вы можете редактировать,  вставлять,
удалять, урезать, копировать текст.
    Более подробная информация о Командном  окне  приводится  в  Главе
Оконный Меню  в  книге	документации  по FoxPro "Руководство по Интер-
фейсу" ("Interface Guide").

			 -3-

    Создание программ

    Программы FoxPro позволяют выполнять последовательности заданных в
программных файлах команд.
    Выполнение программ имеет неоспоримые преимущества перед введением
отдельных команд в Командное окно:
    - Программы позволяют выполнять многие команды автоматически,  тем
самым экономя время и затраты на набор.
    - Программы можно модифицировать и выполнять снова.
    - Программы могут вызывать другие программы.
    - Некоторые структурированные команды доступны только из программ.
    - Программы FoxPro обеспечивают непараллельное выполнение.
    Программы FoxPro представляют собой  текстовые  файлы,  содержащие
наборы команд.	В  FoxPro  они	могут  быть созданы одним из следующих
способов:
    - Выбрать New...  из всплывающего меню File. Появляется диалог Но-
вый Файл (New File).  Выбрать селективную кнопку Program (Программа) и
затем выбрать ОК.
    - В Командном окне набрать команду MODIFY COMMAND.
    Откроется новое окно с именем UNTITLED.PRG. Введите вашу программу
в это окно.  Окно редактирования программ поддерживает все стандартные
возможности редактирования в FoxPro. Для получения подсказки о возмож-
ностях редактирования текста в FoxPro,	находясь в окне редактирования
текста, нажмите клавишу F1.
    Внимание !!!
    Если вы  работаете в FoxPro в интерактивном режиме и хотите сохра-
нить сгенерированные в Командном окне команды, вы можете скопировать и
вставить  их непосредственно в окно редактирования программы.  Примеры
программ из файла  помощи  можно  также  копировать  и	вставлять  не-
посредственно в программы.  Копирование примеров программ из файла по-
мощи является быстрым и простым  способом  изучения  работы  команд  и
функций FoxPro.

    Сохранение программ

    После создания программы, убедитесь, что вы сохранили ее. Для сох-
ранения вашей непоименованной программы,  выберете пункт  Save...  или
Save As...(Сохранить как...) из всплывающего меню File.  Появится диа-
лог Сохранить Как (Save As).  После сохранения программы вы можете вы-
полнять ее или модифицировать.

    Модификация программ

    После сохранения программы вы можете ее модифицировать. Первым де-
лом вы должны открыть программу.  Открытие программы в FoxPro осущест-
вляется одним из следующих способов:
    - Выбрать пункт Open...(Открыть...) из всплывающего меню File. По-
является диалог из списка доступных файлов.  Из всплывающего меню Type
(Тип) выберете пункт Program.  Выберете модифицируемую программу и за-
тем выберете ОК.
    - В Командном окне наберите команду MODIFY COMMAND, и через пробел
от нее,  имя модифицируемой программы,	затем нажмите Enter. Программа
откроется для модификации.  Например, для модификации программы с име-
нем MYPROGRM, в Командном окне задайте следующую команду:
    MODIFY COMMAND myprogm
    После открытия программы вы можете делать изменения.  После произ-
водства изменений, сохраните ваше программу.

		       -4-
    Выполнение программ

    После создания программы вы можете выполнить  ее.  Для  выполнения
программы вы должны:
    - Выбрать пункт Do... из всплывающего меню Program. В списке прог-
рамм укажите выполняемую программу и выберете ОК.
    - Наберите в Командном окне команду DO, и через пробел от нее, имя
выполняемой программы,	затем нажмите Enter.  Например, для выполнения
программы с именем MYPROGRM, в Командном окне задайте следующую коман-
ду:
    DO myprogm

    Дополнительная информация о программах

    Полная информация о создании,  редактировании и  сохранении  прог-
раммных   файлов  приводится  в  секции  "Текстовый  Редактор"  ("Text
Editor") главы "Базовый Интерфейс" ("Interface Basics") книги докумен-
тации по FoxPro "Руководство по Интерфейсу" ("Interface Guide").  Воз-
можности текстового редактора также описываются в топике  Редактирова-
ние Текста (Text editing) оперативной помощи FoxPro.
    Информация о выполнении программных файлов имеется	в  главе  Меню
Programm  в  книге  документации по FoxPro "Руководство по Интерфейсу"
("Interface Guide") или в топике Do оперативной помощи FoxPro.

    Возможности оперативной помощи FoxPro

    Оперативная помощь всегда доступна в  FoxPro.  Оперативная	помощь
включает в себя краткую информацию о каждой команде, функции и систем-
ной переменной,  а также общую информацию о FoxPro. Оперативная помощь
в FoxPro является контекстно-зависимой.
    Для доступа к оперативной помощи,  нажмите клавишу F1 или выберете
пункт Help...  (Помощь...) из всплывающего меню System. После этого на
экране появится Окно Помощи (Window Help) со списком топиков.  В  этом
окне выберете нужный вам топик.
    Вы можете переходить к связанным с данной темой топикам, путем вы-
бора пункта  See  Also	(Смотри Также) во всплывающем меню.  Вы можете
также выделить текст в топике помощи и выбрать текстовую  кнопку  Look
Up (Искать).  Таким  образом  вы можете выходить на описание встретив-
шейся в топике команды или функции.
    Если выделенный текст является топиком помощи,  то на экране появ-
ляется соответствующая информация. Если никакой топик не соответствует
выделенной информации, то выводится диалог со всеми доступными топика-
ми. Выделяется ближайший подходящий топик. Вы можете выбрать из списка
этот топик или другой.
    Для получения справки о команде или функции в Командном окне или в
программе, выделите эту команду или функцию и нажмите F1.
    В системных  окнах,  диалогах  и  пунктах  системных  меню	FoxPro
доступна контекстно-зависимая помощь. Для получения контекстно-зависи-
мой помощи при нахождении в меню или диалоге нажмите F1.
    Дополнительная информация о возможностях оперативной помощи FoxPro
имеется в главе Меню System в  книге  документации  по	FoxPro	"Руко-
водство по Интерфейсу" ("Interface Guide").

			  -5-

	   Понятия языка программирования FoxPro

    Команды и функции

    Язык программирования  FoxPro состоит из двух элементов - команд и
функций.  Команды выполняют некоторые действия,  а функции  возвращают
значение. Например,  команда BROWSE позволяет просматривать содержимое
базы данных.  Функция DATE() возвращает системную дату,  установленную
на вашем компьютере. Функции имеют две круглые скобки, которые отлича-
ют их от команд.
    Команды и  функции	могут  комбинироваться для создания операторов
FoxPro. Функции не используются сами по себе,  но всегда  используются
вместе с командами FoxPro.
    Например, знак вопроса (?) является командой,  которая  направляет
вывод на экран. DATE() является функцией, возвращающей текущую систем-
ную дату.  Они могут комбинироваться для вывода системной даты на  эк-
ран:
    ? DATE()
    Команда STORE присваивает значение переменной памяти.  В этом при-
мере, функция TIME() возвращает текущее системное время,  и это значе-
ние заносится в переменную памяти BEGINTIME:
    STORE TIME() TO begintime

    Соглашения о синтаксисе команд и функций

    Команды и функции FoxPro состоят из одной или более компонент. Эти
компоненты определяют порядок использования команды или функции.
    Давайте посмотрим на типичный синтаксис  команды  FoxPro.  Команда
REPLACE используется  для  обновления полей в записи базы данных.  Вот
синтаксис команды REPLACE:
    REPLACE  WITH  [ADDITIVE]
      [, WITH  [ADDITIVE]] ...
      [] [FOR ] [WHILE ] [NOOPTIMIZE]
    В следующей таблице приводится список компонент команды REPLACE:
Тип компоненты	 Пример в команде REPLACE
 Ключевые слова  REPLACE, WITH, ADDITIVE, FOR, WHILE, NOOPTIMIZE
 Выражения	 expr1, expr2, expL1, expL2
 Имена		 field1, field2
    В данном  руководстве  в  синтаксисе команд и функций используются
специальные типографские соглашения.  Они показывают, должна ли данная
компонента команды или функции задаваться вами, является ли она обяза-
тельной или нет, и т.д.
ЗАГЛЫВНЫЕ  ЗАГЛАВНЫЕ БУКВЫ  используются  для  написания ключевых слов
БУКВЫ	   FoxPro. Каждая команда или функция FoxPro содержит, по край-
	   ней мере  одно  ключевое слово.  FoxPro использует ключевые
	   слова для идентификации команды или функции. Ключевые слова
	   иногда называют зарезервированными словами, так как	FoxPro
	   предварительно резервирует их для внутреннего использования.

			  -6-

    Примерами ключевых	слов в команде REPLACE являются REPLACE (кото-
рое FoxPro идентифицирует как команду),  WITH,	ADDITIVE, FOR, WHILE и
NOOPTIMIZE.  WITH,  ADDITIVE,  FOR,  WHILE и NOOPTIMIZE называются еще
предложениями или опциями команды.
    Ключевое слово может задаваться своими первыми 4-мя символами.
 < >	   Угловые скобки < > , заключающие в  себе текст, написанный
	   строчными буквами, указывает на задаваемую вами информацию.
	   Этой информацией может быть имя файла, выражение, имя пере-
	   менной памяти и т.д. При использовании команды или функции
	   вы заменяете текст и угловые скобки на нужное имя или выра-
	   жение.
  ()	   Круглые скобки должны включаться во все функции FoxPro. Вклю-
	   чайте их, как показано в синтаксисе соответствующей функции.
  []	   Квадратные скобки  указывают  на  необязательные компоненты
	   команд и  функций FoxPro.  При выдаче команды не указывайте
	   их. Например, команда REPLACE поддерживает различные опции,
	   и вы  можете  задавать  различные  их наборы.  Показанные в
	   квадратных  скобках	опции  и  ключевые   слова   ADDITIVE,
	   , FOR  ,  WHILE  и NOOPTIMIZE являются
	   необязательными.
   |	   Вертикальная черта разделяет опции,	только одна из которых
	   может быть указана.
  ...	   Многоточие показывает,  что команда или функция,  или часть
	   команды или функции, может быть продолжена в том же режиме.
	   Например, функция INLIST() поддерживает большое число аргу-
	   ментов. Многоточие в ее синтаксисе показывает, что вы може-
	   те включать более трех показанных аргументов.

    Выражения

    Выражением в FoxPro является комбинация значений полей баз данных,
функций, значений  переменных  памяти,	значений  элементов   массива,
констант и операторов.	В FoxPro выражения бывают 4-х типов - символь-
ные, числовые, типа даты и логические.
    Выражения в  командах и функциях FoxPro определяются следующим об-
разом:
Выражение    Тип выражения
       Символьный
       Числовой
       Даты
       Логический
       Символьный, числовой, даты или логический
  Список выражений, разделенных запятыми
    Если в команде или функции используются более одного выражения од-
ного типа,  то для указания на его позицию в команде или функции к вы-
ражению добавляется номер. Например, функция CHRTRAN() имеет следующий
синтаксис:
    CHRTRAN(,,)
    CHRTRAN() требует	наличия  трех  аргуметов  ,    и
, являющихся символьными выражениями.
    Поля баз  данных,  функции,  переменные памяти и элементы массива,
комбинируемые для создания выражения,  обязательно должны  иметь  один
тип данных.  Если они имеют различные типы, то FoxPro выдает сообщение
об ошибке "Оператор/операнд имеют недопустимый тип" ("Operator/operand
type mismatch").

			 -7-


    Символьные выражения
    Символьные выражения состоят из:
    - полей баз данных символьного типа;
    - функций, возвращающих символьное значение;
    - переменных  памяти  и элементов массивов,  которые содержат сим-
вольные данные;
    - констант символьного типа, называемых строковыми литералами.
    Строковый литерал представляет собой строку символов,  заключенную
в одинарные или двойные кавычки.  Например, 'Ohio' или "Ohio". Кавычки
должны соответствовать друг другу.  Это значит, что вы не можете начи-
нать строку одинарной кавычкой и заканчивать двойной, и наоборот.
    Внутри строки вы можете использовать кавычки противоположного  ти-
па. Например, строка "Don't touch" является допустимым строковым лите-
ралом.
    Важно !!!
    В документации  по	FoxPro	вы  встретите  понятие	пустой	строки
(null). Пустая строка,	это символьная строка длины 0. Она не содержит
никаких символов.
    Пустая строка  задается парой кавычек без символов между ними - ""
или ''.
	Операторы, работающие с символьными выражениями
Оператор  Операция
   +	  Слияние строковых выражений (две строки соединяются в одну)
   -	  Слияние строковых выражений (хвостовые пробелы первой строки
	  переносятся в конец второй строки)
   $	  Сравнение символьных выражений

    Числовые выражения
    Числовые выражения состоят из:
    - полей баз данных числового типа;
    - функций, возвращающих числовое значение;
    - переменных памяти и элементов массивов,  которые содержат число-
вые данные;
    - числовых констант.
    Числовыми константами являются числа- 0, 1, -1, 3.1415 и т.д.
       Операторы, работающие с числовыми выражениями
       (в порядке последовательности их выполнения)
Оператор  Операция
  ()	  Круглые скобки - используется для группировки выражений
 **, ^	  Возведение в степень
  *, /	  Умножение и деление
   %	  Модуль (остаток)
  +, -	  Сложение и вычитание

    Выражения типа даты
    Выражения типа даты состоят из:
    - полей баз данных типа даты;
    - функций, возвращающих значение типа даты;
    - переменных памяти и элементов массивов,  которые содержат данные
типа даты;
    - констант даты.
    Константы типа даты являются числами - 1, 2, 3, 100 и т.д. Конста-
ныт типа  даты	представляют дни;  вы можете складывать и вычитать эти
константы (число дней) к или из заданной даты.

		     -8-

    Дата может	быть задана использованием фигурных скобок.  Например,
команда
    STORE {12/25/91} TO xmax
переменную памяти типа даты XMAS и заносит в нее дату 12/25/91.
    Обе команды
    STORE {  /	/  } TO blankdate
    STORE { } TO blankdate
создают пустую переменную памяти типа даты BLANKDATE.  FoxPro рассмат-
ривает неправильную дату как пустую.

    Логические выражения
    Логические выражения имеют одно из двух значений - истина и  ложь.
В FoxPro часто для из задания используются .T. и .F.
    Логические выражения состоят из:
    - полей баз данных логического типа;
    - функций, возвращающих логическое значение;
    - переменных  памяти и элементов массивов,	которые содержат логи-
ческие данные;
    - Выражений других типов (символьных,  числовых или даты),	разде-
ленных специальным операторами отношения.
       Операторы, работающие с логическими выражениями
       (в порядке последовательности их выполнения)
Оператор  Операция
  ()	  Круглые скобки - используется для группировки выражений
 !, NOT   Логическое отрицание
  AND	  Логическое И
  OR	  Логическое включающее ИЛИ

	Операторы отношения в логических выражениях
Оператор   Операция
   <	   Меньше чем
   >	   Больше чем
   =	   Равно
<>, #, !=  Не равно
   <=	   Меньше или равно чем
   >=	   Больше или равно чем
   ==	   Сравнение строк символов

    Имена
    Некоторые команды и функции FoxPro требуют задания имен. Вот неко-
торые примеры имен, используемых в FoxPro:
    - имена файлов баз данных;
    - имена псевдонимов баз данных;
    - имена полей баз данных,
    - имена индексных файлов;
    - имена файлов;
    - имена массивов и переменных памяти;
    - имена окон;
    - имена линеек меню;
    - имена всплывающих меню.
    В следующей таблице первая колонка содержит имена, как они появля-
ются в синтаксисе команд и  функций.  Вторая  колонка  описывает,  что
именно включается в команду или функцию.

		      - 9-

------------------------------------------
Имя	      Что включается
------------------------------------------
	      Имя файла
       Имя поля базы данных
  Список имен полей базы данных
       Имя массива переменных памяти
      Имя переменной памяти или элемента массива
 Список имен переменных памяти
   Имя меню
    Имя пункта меню
  Имя всплывающего меню
  Список имен всплывающих меню
 Имя окна
 Список имен окон
------------------------------------------
    При включении  списка имен,  имена в нем должны отделяться друг от
друга запятыми.
    Команда REPLACE , например, требует обязательного задания по край-
ней мере одного имени field1, имени поля базы данных.
    Имя не является выражением,  переменной памяти,  элементом массива
или полем базы данных. Имя не должно заключаться в кавычки.

    Именованные выражения
    Хотя имя не может быть переменной памяти или элементом массива, но
вы можете создавать именованные выражения,  которые подставляют значе-
ние переменной	памяти	или элемента массива символьного типа как имя.
Именованные выражения обеспечивают  гибкость  в  командах  и  функциях
FoxPro.
    Занесите имя в переменную памяти (или элемент  массива).  Это  имя
может быть  подставлено в команду или функцию,	заключением этой пере-
менной памяти в круглые скобки.
    Например, команда  REPLACE требует задания имени поля базы данных.
Вы можете занести имя этого поля в переменную  памяти  и  использовать
именованное выражение  в  команде  REPLACE  в  том  месте,  где должно
присутствовать имя поля:
    STORE 'city' TO mvarcity
    REPLACE (mvarcity) WITH 'Perrysburg'
    Здесь имя  поля  базы  данных  CITY  заносится в переменную памяти
MVARCITY. Именованное выражение (mvarcity) заменяет имя поля в команде
REPLACE.
    Аналогичный процесс, называемый макроподстановкой, позволяет заме-
нять имена переменными памяти. Макроподстановка, амперсенд (&), распо-
ложенная до переменной памяти говорит FoxPro,  что значение переменной
памяти должно  использоваться как имя.	Команды и функции,  содержащие
именованные выражения,	выполняются быстрее, чем если-бы они содержали
макроподстановки -  всегда  используйте  именованные  выражения вместо
макроподстановок.
			  -10-

    Дополнительная аббревиатура

    Эта таблица содержит сокращения,  наиболее используемые в описании
команд и функций FoxPro.
_______________________________________________________
  Аббревиатура	 Значение
_______________________________________________________
alias		 псевдоним рабочей области
array		 имя массива
border string	 строка определения символов границы
column		 столбец экрана
command 	 команда FoxPro
delimiter	 символ разделения
dir		 каталог (директорий)
drive		 имя дисковода
fcode		 код функции
key		 индексное выражение
list		 набор выражений, полей,...
macro name	 имя, назначенное макросу клавиатуры
memo field	 имя поля памяти типа "memo"
pad name	 имя, назначенное пункта меню
parm list	 список параметров
path		 маршрут
port		 имя серийного или параллельного выходной порта
procedure name	 имя, назначенное процедурному файлу
raw		 строка экрана
scope		 контекст (диапазон записей базы данных)
skel		 макет спецификации файла
statements	 набор команд FoxPro
text lines	 текст, не являющийся командой FoxPro
topic		 суть файла помощи Help FoxPro
var		 переменная памяти, элемент массива и поле базы данных
work area	 рабочая область базы данных
_______________________________________________________

    Диапазон записей: scope (контекст), For и While

    Когда команда работает с записями в базе данных, вам обычно требу-
ется определить, на какие записи действует команда. Вы определяете ди-
апазон записей, используя scope (контекст), предложения FOR и WHILE.

    Scope (контекст)
    Задание контекста  позволяет вам заставляет команду действовать на
определенные записи текущей базы данных. Контекст Scope может быть оп-
ределен одним из следующих способов:
    ALL 	- Команда действует на все записи в базе данных.
    NEXT  - Команда действует на  записей, начиная с теку-
		  щей. Например, NEXT 1 действует на текущую запись.
    RECORD  - Команда действует на заданную запись базы данных
		    под номером .
    REST	- Команда действует на ряд записей, начиная с
		  текущей  записи и заканчивая последней записью
		  в файле.

    FOR 
    Диапазон записей может быть определен,  используя предложения  FOR
 и WHILE .
    При включении предложения FOR, командой будут обрабатываться толь-
ко записи, удовлетворяющие заданному логическому условию .

		       -11-

    Технология Рашмора (Rushmore) и предложения FOR
    Технология Рашмора (Rushmore)  является  запатентованным  способом
доступа к данным,  который позволяет осуществлять доступ к наборам за-
писей со скоростью,  сравнимой со скорость доступа к одной  индексиро-
ванной записи.
    Использование этой	технологии  обеспечивает  выполнение   сложных
операций с записями базы данных в сотни и даже тысячи раз быстрее, чем
при обычной обработке.	Для персональных компьютеров это предоставляет
возможности обработки баз данных, содержащих миллионы записей, со ско-
ростью, сравнимой со скорость обработки на универсальных машинах.
    В самой  простой форме,  технология Рашмора (Rushmore) увеличивает
скорость выполнения команд, работающих с одной базой данных, путем об-
работки предложений FOR,  которые устанавливают набор записей в терми-
нах существующих индексов.  Вы можете использовать преимущества техно-
логии Рашмора везде,  где используются предложения FOR. Производитель-
ность ее пропорциональна число обрабатываемых записей.
  Потенциально оптимизируемые команды, использующие предложения FOR
AVERAGE        COUNT	JOIN	  SCAN
ИROWSE	       DELETE	LABEL	  SORT
СALCULATE      DISPLAY	LIST	  SUM
CHANGE	       EDIT	LOCATE	  TOTAL
COPY TO        EXPORT	RECALL
COPY TO ARRAY  INDEX	REPLACE
    Оптимизация поиска данных, обеспечиваемая технологией Рашмора, за-
висит от выражения в предложении FOR.  Выражение в предложении FOR мо-
жет быть простым или сложным,  и скорость поиска данных может быть по-
вышена включением оптимизируемого выражения FOR.
    Оптимизируемое выражение может включать в себя логические операто-
ры AND,  OR и NOT для создания сложных выражений FOR.  При объединении
основных выражений в сложное,  полученной выражение может  также  быть
оптимизируемым.
    Основные оптимизируемые выражения имеют одну из следующих форм:
    	   
    <индексное выражение> <оператор отношения>	<константное выражение>
или
        
    <константное выражение> <оператор отношения>  <индексное выражение>
    В основном оптимизируемом выражении:
    -   (<индексное	выражение>) обязательно должно
соответствовать выражению на основе которого конструируется  индекс  и
оно не должно содержать псевдонимов.
    -  (<оператор отношения>) должен быть один из
следующих: <,>,=,<=,>=,,.,#,!=.
    -  (<константное выражение>) может быть любым
выражением, содержащим	переменные  памяти  и  поля из несвязанных баз
данных.
    Например, если вы имеете индексы на следующие выражения:
firstname
custno
UPPER(lastname)
hiredate
addr
    то, следующие выражения будут основными оптимизируемыми выражениями:
FIRSTNAME = 'Fred'
CUSTNO >= 1000
UPPER(LASTNAME) = 'SMITH'
HIREDATE < {12/30/90}

		       -12-

    Если вы выполняете команду
STORE 'WASHINGTON AVENUE' TO X
    то, следующие выражения, также будут основными оптимизируемыми:
ADDR = X
ADDR = SUBSTR(X,8,3)
    Дополнительная информация  о технологии Рашмора приводится в главе
"Оптимизация ваших    прикладных    программ"    ("Optimizing     Your
Application") в  книге документации по FoxPro "Руководство Разработчи-
ка" (developer's Guide").

    WHILE 
    Выражение WHILE,  с другой стороны, заставляет команду действовать
на каждую запись базы данных,  пока является истинным логическое выра-
жение.	Как только выражение становится ложным, команда прекращает ра-
ботать,  не учитывая оставшихся записей  базы  данных.	Это  выражение
обычно используется в базах данных, которые были отсортированы или ин-
дексированы по полю (полям), использовавшим выражение WHILE.
    Scope (контекст),  выражения FOR и выражения WHILE могут  одновре-
менно использоваться в одной и той же команде FoxPro. Когда определены
и FOR, и WHILE, выражение WHILE имеет приоритет.

    Рабочие области баз данных

    FoxPro позволяет открывать и манипулировать файлами баз  данных  в
25 рабочих областях.  Рабочие области идентифицируются буквами от А до
J для первых 10 рабочих областей,  числами 1-25 или  псевдонимами  баз
данных, если они уже открыты в рабочей области.
    Для открытия файла в рабочей  области,  отличной  от  текущей,  вы
должны задать  ее  или	выбрать  выбрать.  При открытии базы данных ей
присваивается псевдоним,  по которому вы можете  ее  идентифицировать.
Если вы не задали иного, то псевдонимом базы данных будет имя ее файла
(исключая расширение .DBF).

    Псевдонимы по умолчанию
    Если вы открываете базу данных,  названную CUSTOMER.DBF, в рабочей
области А командами:
     SELECT A
     USE CUSTOMER
    то ей  будет  автоматически присвое псевдоним CUSTOMER.  Псевдоним
может затем использоваться для базы данных в командах и функциях.

    Псевдонимы, присваиваемые пользователем
    Можно присвоить псевдоним рабочей области, когда вы открываете ба-
зу данных. Вы можете открыть CUSTOMER.DBF (в рабочей области А) и наз-
начить ему псевдоним PEOPLE командой:
     SELECT A
     USE customer ALIAS people
    Псевдоним PEOPLE может затем использоваться для обращения  к  базк
данных	CUSTOMER.  (Для  полной информации по присвоенным псевдонимам,
обратитесь к команде USE.)

    Псевдонимы, присваиваемые FoxPro
    В некоторых случаях FoxPro сам автоматически присваивает псевдони-
мы базам данных.  Если одна база  данных  открываются  одновременно  в
нескольких рабочих областях командой USE с ключевым словом AGAIN, и вы
не задаете псевдонимы при открытии в каждой рабочей области,  то авто-
матически присваиваются псевдонимы по умолчанию.

			   -13-

    В первых 10 рабочих областях по умолчанию присваиваются в качестве
псевдонимов буквы от А до J; в рабочих областях 11 по 25 присваиваются
псевдонимы от W11 до W25.
    При возникновении конфликтов при присваивании псевдонимов, присва-
ивается псевдоним по умолчанию.

    Использование псевдонима
    Если база  данных  CUSTOMER.DBF  открыта в рабочей области С (3) и
присвоен по умолчанию псевдоним CUSTOMER,  вы можете перейти обратно в
эту  рабочую  область  из  другой при помощи одной из следующих команд
SELECT:
     SELECT C
     SELECT 3
     SELECT CUSTOMER
    Вы можете также обратиться к полям базы данных  в  других  рабочих
областях при помощи имени файла с указателем псевдонима. Для этого пе-
ред именами полей ставится псевдоним или буква рабочей области и  точ-
ка или оператор ->.
    Если Вы находитесь в рабочей области С и вы хотите получить доступ
к полю,  названному CONTACT, из базы данных CUSTOMER в рабочей области
А, используйте одну из следующих команд:
    CUSTOMER.CONTACT
    A.CONTACT
    Подобно этому,  если вы находитесь в рабочей области,  отличной от
А,  а CUSTOMER (в рабочей области А) имеет псевдоним PEOPLE, вы можете
использовать:
    PEOPLE.LASTNAME
    A.LASTNAME

    Обращение к рабочей области
    Вы можете обратиться к рабочей области до того,  как будет открыта
база данных, используя букву или номер рабочей области.
    SELECT A
или
    SELECT 1

    Переменные памяти
    Обычно вы  не  можете создать имена переменных памяти,  идентичные
именам полей базы данных (хотя иногда это полезно). Если же вы все-та-
ки  имеете  одинаковые	имена  переменных  памяти и полей базы данных,
FoxPro всегда обеспечивает приоритет поля над переменной памяти  Чтобы
устранить эти трудности, вы можете получить доступ к переменной памяти
с тем же именем,  что и поле,  используя префикс М (или М.)  или  M->.
Например:
    M.lastname


			-14-

    Функции и поля памяти memo

    Поля памяти FoxPro могут содержать любые  данные,  включая	пустые
строки,  ассемблерные коды,  драйверы принтеров,  и т.д. и могли иметь
любую длину.  Однако, не все строки и символьные функции могут исполь-
зоваться  с полями памяти.  Только следующие функции могут оперировать
непосредственно с неограниченными полями памяти FoxPro:
$
LEN()
AT()
ATC()
ATLINE()
ATCLINE()
MEMLINES()
MLINE()
SUBSTR()
    В дополнение,  команда REPLACE позволяет заменять поле памяти про-
извольной длины или подстроку поля памяти произвольной длины на другое
поле памяти.
    Поля памяти  могут	хранится  как  резидентные строки памяти.  Эти
строки могут затем обрабатываться всеми функциями, которые оперируют с
символьными данными.  В стандартной версии FoxPro длина строки ограни-
чена 64 Кбайтами,  в расширенной версии FoxPro она  ограничена	только
доступной памятью.

    Типографские соглашения

    Большинство материалов   в	этом  руководстве  относится  к  языку
FoxPro, но некоторые  команды  имеют  свои  эквиваленты  в  интерфейсе
FoxPro. При  описании  действий в интерфейсе FoxPro мы будем придержи-
ваться следующих соглашений.

    Управляющие средства
    Когда мы  ссылаемся  на  управляющие  средства FoxPro,  такие как,
списки, линейки меню,  всплывающие меню, текстовые кнопки, селективные
кнопки и блоки проверки,  мы всегда выделяем имя управляющего средства
жирным шрифтом. Например:
    Выбрать пункт Save (жирным) всплывающего меню File (жирным).

    Окна и диалоги
    Имена системных окон FoxPro  и  диалогов  всегда  пишутся  обычным
шрифтом с  большой  буквы  (В переводе в скобках приводится английский
(или русский) эквивалент названия). Например:
    Введите этот оператор в Командное (Command) окно.

    Ввод и Вывод
    Примеры команд, которые могут вводится в Командное окно или приме-
ры программ пишутся разреженным шрифтом. Например:
    STORE amt_due - amt_paid TO new_bal
    REPLACE amt_due WITH new_bal
    Вывод команд и функций на экран или в окно приводится жирным шриф-
том. Например:
    USE customer
    AVERAGE taxrate FOR state = 'OH'
    25 records averaged (жирным)
    TAXRATE (жирным)
      5.81 (жирным)


		   -15-

    Команды и функции по категориям
    -------------------------------
    В этой  главе  команды и функции FoxPro группируются по категориям
на основе выполняемых ими действий.  Многие команды и функции попадают
в несколько категорий. Используйте эту главу, когда вы точно не знаете
о том, какую команду или функцию использовать для выполнения вашей за-
дачи.
    В таблице ниже показаны категории, сгруппированными по более широ-
ким признакам.
Группа		 Категории
----------------------------------------------------------------------
Типы данных	 Символьные функции
		 Числовые функции
		 Функции даты и времени
		 Преобразование данных
Базы данных	 Манипуляции с полями
		 Манипуляции с базами данных
		 Манипуляции с записями
		 Индексы
		 Связи
Программирование Отладка и обработка ошибок
		 Выполнение программ
		 Команды структурного программирования
		 Функции для работы с файлами на низком уровне
		 Манипуляции с переменными памяти
		 Манипуляции с массивами
		 Управление событиями
Ввод и вывод	 Форматирование данных
		 Печать
		 Линейки меню и всплывающие меню
		 Окна
		 Печать, клавиатура и "мышь"
		 Отчеты и этикетки
Среда FoxPro	 Среда
		 Работа с файлами
Работа в сети	 Сетевые команды и функции
(FoxPro/LAN)
----------------------------------------------------------------------
			 -16-


    Типы данных
    -----------
    Символьные функции
    Элементы этой категории работают с данными символьного типа.
    $ - определяет, содержится ли символьная строка внутри другой сим-
вольной строки или поля памяти "memo".
    ALLTRIM () - убирает начальные и конечные  пробелы	из  символьной
строки.
    ASC () - возвращает код ASCII для левого старшего символа  в  сим-
вольной строке.
    AT () - возвращает положение (как целое число)  первого  вхождения
символьной строки внутрь другого символьного выражения или поля памяти
memo.
    ATC ()  - возвращает положение (как целое число) первого вхождения
символьной строки внутрь другого символьного выражения или поля памяти
memo. В отличие от функции AT(), ATC() выполняется без учета регистра.
    ATCLINE () - возвращает номер строки  (как	целое  число)  первого
вхождения  символьной  строки внутри символьной строки или поля памяти
memo.  Выдаваемое значение зависит от значения, определенного командой
SET MEMOWIDTH. Похожа на функцию ATLINE (), хотя без учета регистра.
    ATLINE () - возвращает номер  строки  (как	целое  число)  первого
вхождения  символьного выражения внутрь символьного выражения или поля
памяти memo.  Выдаваемое значение зависит от  значения,  определенного
командой SET MEMOWIDTH.
    BETWEEN () - определяет, лежит ли символьное выражение между двумя
другими символьными выражениями.
    CHR () - возвращает символ для определенного числового кода ASCII.
    CHRTRAN ()	-  переводит  символьную строку,  используя две другие
строки в качестве таблиц перевода.
    CTOD () - преобразует дату символьного типа в дату обычного типа.
    DIFFERENCE () - возвращает число, представляющее относительную фо-
нетическую разницу между двумя символьными строками.
    DTOC () - преобразует дату обычного типа в дату символьного типа.
    EMPTY () - определяет, "пустое" ли выражение.
    EVALUATE() - оценивает выражение и возвращает результат.
    INLIST -  определяет,  содержится  ли символьное выражение в серии
символьных выражений.
    INT () - преобразует число в его целое значение перемещением деся-
тичной части.
    ISALPHA () - возвращает логическу истину (.Т.), если заданное сим-
вольное выражение начинается с буквы символа.
    ISDIGIT() - возвращает логическу истину (.Т.),  если заданное сим-
вольное выражение начинается с буквы цифры (0-9).
    ISLOWER () - возвращает логическую истину (.Т.),  если первый сим-
вол в символьном выражении - строчный.
    ISUPPER () - возвращает логическую истину (.Т.),  если первый сим-
вол в символьном выражении - прописной.
    LEFT ()  -	возвращает  заданное число символов,  начиная с левого
старшего символа в символьной строке.
    LEN () - возвращает длину символьной строки.
    LIKE () - позволяет вам сравнить символьную строку, содержащую ме-
та символы, с другой символьной строкой.
    LOWER () - преобразует все символы в строке в их строчные  эквива-
ленты.
    LTRIM () - убирает начальные пробелы из заданной символьной  стро-
ки.
    MAX() - возвращает	наибольшее  выражение  из  списка  символьных,
числовых выражений или выражений типа даты.

		      -17-

    MIN() - возвращает	наименьшее  выражение  из  списка  символьных,
числовых выражений или выражений типа даты.
    OCCURS () - возвращает число вхождений  символьной	строки	внутрь
другой символьной строки.
    PADC () - дополняет символьную строку с двух  сторон  определенным
символом.
    PADL () - дополняет символьную строку слева определенным символом.
    PADR ()  -	дополняет символьную строку справа определенным симво-
лом.
    PROPER ()  -  возвращает выражение,  написанное с заглавной буквы,
как соответствующее имени собственному.
    RAT () - ищет символьную строку или поле памяти memo, до последне-
го вхождения,  в другой символьной  строке  и  возвращает,  как  целое
число, положение, где она была найдена.
    RATLINE () - ищет символьную  строку  или  поле  памяти  memo,  до
последнего вхождения,  в другой символьной строки и выдает,  как целое
число, номер строки, где она была найдена. Выдаваемое значение зависит
от значения, определенного командой SET MEMOWIDTH.
    REPLICATE () - возвращает символьную строку, которая повторяет оп-
ределенное символьное выражение данное количество раз.
    RIGHT () - возвращает правую старшую часть символьной строки.
    RTRIM () - убирает все конечные пробелы из определенной символьной
строки.
    SOUNDEX () - возвращает фонетическое представление символьного вы-
ражения.
    SPACE () - возвращает символьную строку, состоящую из определенно-
го числа пробелов.
    STR ()  - возвращает символьно-строчный эквивалент числового выра-
жения.
    STRTRAN ()	-  ищет  вхождение  первой символьной строки во второй
символьной строке,  и затем меняет это вхождение на третью  символьную
строку.
    STUFF () - возвращает символьную строку, созданную замещением ука-
занного числа символов в символьном выражении.
    SUBSTR () - возвращает определенное число символов данного выраже-
ния или поля памяти memo.
    SYS (10) - преобразует номер дня  в  числовом  виде  в  символьную
строку.
    SYS (15) - возвращает символ из таблицы перевода.
    SYS (20007)  -  возвращает	значение  контрольной суммы символьной
строки.
    TRANSFORM () - форматирует символьный и числовой вывод без исполь-
зования команды @...SAY.
    TRIM ()  -	убирает  все  конечные	пробелы из заданной символьной
строки.
    TYPE ()  - возвращает тип данных выражения (символьное,  числовое,
логическое, даты или memo).
    UPPER() - возвращает заданное символьное выражение,  символы кото-
рого переведены в верхний регистр.

			 -18-


    Числовые функции

    Элементы этой категории работают и/или возвращают числовые данные.
    % - оператор деления по модулю. Возвращает остаток от деления двух
числовых выражений.
    ABS () - возвращает заданное значение.
    ACOS () - возвращает арккосинус.
    ASIN () - возвращает арксинус.
    ATAN () - возвращает арктангенс.
    ATN2 () - возвращает арктангенс во всех четырех квадрантах.
    BETTWEEN () - определяет,  лежит ли числовое выражение между двумя
другими числовыми выражениями.
    CALCULATE - производит финансовые и статистические операции.
    CEILING () - возвращает наименьшее целое, которое больше или равно
заданному значению.
    COS () - возвращает косинус угла.
    DTOR () - преобразует градусы в радианы.
    EMPTY() - определяет, равно ли числовое выражение нулю.
    EXP () - возвращает результат выражения е в заданной степени х.
    FLOOR ()  - возвращает наибольшее целое,  которое меньше или равно
заданному значению.
    FV () - возвращает будущее значение инвестиций.
    INT () - преобразует число в его целое  значение,  отбрасывая  его
десятичную часть.
    LOG() - возвращает значение натурального логарифма числового выра-
жения.
    LOG10() - возвращает значение десятичного логарифма (по  основанию
10) числового выражения.
    MAX() - возвращает	наибольшее  выражение  из  списка  символьных,
числовых выражений или выражений типа даты.
    MIN() - возвращает	наименьшее  выражение  из  списка  символьных,
числовых выражений или выражений типа даты.
    MOD () - возвращает остаток от операции деления.
    PAYMENT() - возвращает величину периодических выплат по ссуде.
    PI () - возвращает значение пи.
    PV () - возвращает настоящее значение инвестиций.
    RAND () - возвращает случайное значение.
    ROUND () - округляет числовое значение до заданного числа десятич-
ных знаков.
    RTOD () - преобразует радианы в градусы.
    SET DECIMALS -  задает  число  десятичных  знаков,	выводимых  для
числовых результатов.
    SIGN () - возвращает числовое значение,  зависящее от знака задан-
ного числа.
    SIN () - возвращает синус угла.
    SQRT () - возвращает квадратный корень числового выражения.
    TAN () - возвращает тангенс угла.
    VAL ()  -  преобразует строку числовых символов в числовое выраже-
ние.

			 -19-


    Функции даты и времени
    Эти элементы позволяют вам создавать и обрабатывать дату и время.
    BETWEEN () - определяет,  лежит ли выражение типа даты между двумя
другими выражениями-датами.
    CDOW () - возвращает день недели для заданной  даты  (Воскресенье,
Понедельник, Вторник и т.д.(Sunday, Monday, Tuesday и т.д.)).
    CMONTH () - возвращает наименование месяца для заданной даты  (Ян-
варь, Февраль, Март и т.д. (Jenuary, February, March  и т.д.)).
    CTOD () - преобразует символьное выражение в выражение типа даты.
    DATE () - возвращает текущую системную дату.
    DAY () - возвращает день месяца (числовой) для заданной даты.
    DMY ()   -	превращает  выражение  даты  в	европейский  формат  -
День/Месяц/Год.
    DOW () - возвращает день недели (числовой) для заданной даты.
    DTOC () - преобразует заданную дату обычного типа в дату  символь-
ного типа.
    DTOS () - превращает выражение даты в символьную строку.
    EMPTY () - определяет, "пустое" ли выражение даты.
    GOMONTH () - возвращает дату,  которая отстоит на  заданное  число
месяцев от или после заданной даты.
    INLIST () - определяет, содержится ли выражение даты в серии выра-
жений дат.
    MAX() - возвращает	наибольшее  выражение  из  списка  символьных,
числовых выражений или выражений типа даты.
    MDY () - преобразует дату в американский формат Месяц/День/Год.
    MIN() - возвращает	наименьшее  выражение  из  списка  символьных,
числовых выражений или выражений типа даты.
    MONTH () - возвращает месяц (число) для заданной даты.
    SECONDS () - возвращает системное время в форме секунды,  тысячные
с точностью 1 миллисекунда.
    SET HOURS - установить системные часы на 12-часовой или 24-  часо-
вой формат.
    SET MARK TO - задает разделители в дате.
    SYS (1)  - возвращает текущую системную дату в виде Юлианского но-
мера дня.
    SYS (2) - возвращает число секунд, прошедших с полуночи.
    SYS (10) - преобразует числовое выражение номера дня в  символьную
строку.
    SYS (11) - возвращает Юлианский номер дня  эквивалентный  заданной
дате.
    TIME () - возвращает текущее системное время.
    YEAR () - возвращает год, соответствующий дате.

    Преобразование данных
    Функции в этой категории осуществляют преобразование данных из од-
ного типа в другой.
    CHR() - возвращает символ, соответствующий заданному номеру ASCII.
    CTOD () - преобразует символьное выражение в выражение типа даты.
    SYS (10) - преобразует числовое выражение номера дня в  символьную
строку.
    SYS(15) -  возвращает символ из таблицы перевода.
    TRANSFORM () - форматирует символьный и числовой вывод без исполь-
зования команды @...SAY.

				-20-

    Базы данных
    -----------
    Манипуляции с полями
    Эта категория содержит команды и функции, обеспечивающие манипуля-
ции с полями баз данных.
    AFIELDS() - помещает информацию о структуре базы данных в массив.
    DELETED () - возвращает логическую истину (.Т.),  если текущая за-
пись маркирована для удаления.
    FCOUNT () - возвращает число полей в базе данных в заданной  рабо-
чей области.
    FIELD () - возвращает имя поля (обращение по  номеру)  в  заданной
рабочей области.
    FSIZE () - возвращает размер заданного поля в байтах.
    CATHER - сохраняет массив с данными в полях базы данных.
    LUPOATE () - возвращает дату последней модернизации базы данных.
    NDX ()  - возвращает имя открытого индексного файла в заданной ра-
бочей области.
    SCATTER - заполняет элементы массива содержимым полей базы данных.
    SET BLOCKSIZE -  задает  FoxPro  способ  распределения  доступного
дискового пространства для размещения полей памяти memo.
    SET EXACT - задает,  является ли точное совпадение длин двух строк
обязательным при их сравнении.
    SET TEXTMERGE - запрещает или разрешает  распознавание  полей  баз
данных.
    SET TEXTMERGE  DELIMITERS  -  указывает  разделители   поглощающие
текст.
    SYS(14) - возвращает индексный ключ в индексном файле.

    Манипуляции с базами данных
    Эта категория  содержит  команды и функции,  которые позволяют вам
создавать, обрабатывать и управлять файлами баз данных.
    APPEND MEMO -  заносит содержимое файла а поле памяти.
    AVERAGE - производит арифметические вычисления, необязательно сох-
раняет результаты в массиве или переменных памяти.
    BROWSE - открывает окно Browse в котором вы  можете  просматривать
и/или редактировать записи базы данных.
    CHANGE или
    EDIT - выводит поля базы данных для редактирования.
    CLOSE DATABASE - закрывает все открытые  базы  данных,  индексные,
memo и форматные файлы.
    CLOSE MEMO - закрывает окно редактирования поля памяти memo.
    COPY MEMO - копирует содержимое поля памяти в файл.
    COPY STRUCTURE - копирует структуру базы данных в файл.
    COPY TO  -	копирует  содержимое одного файла базы данных в другой
файл базы данных.
    COPY STRUCTURE  EXTENDED - копирует структуру базы данных в специ-
альную базу данных.
    COUNT - подсчитывает число заданных записей,  необязательно сохра-
няет результат в переменной памяти.
    CREATE - создает структуру нового файла базы данных.
    CREATE FROM - создает структуру новой базы данных  из  файла  базы
данных, полученного с помощью команды COPY STRUCTURE EXTENDED.

			-21-

    CREATE QUERY - открывает окно RQBE для создания запроса.
    CREATE TABLE - создает базу данных.
    DELETE - маркирует записи для удаления.
    DELETED () - возвращает логическую истину (.Т.),  если текущая за-
пись маркирована для удаления.
    DISPLAY STRUCTURE - выводит структуру файла базы данных.
    EXPORT - копирует данные из базы данных FoxPro в файл другого фор-
мата.
    FLUSH - перекачивает все действующие буфера памяти на диск.
    IMPORT -  импортирует данные из файлов различных форматов в созда-
ваемую новую базу данных FoxPro.
    MEMLINES() - возвращает число строк в поле памяти memo.  Выводимое
число строк зависит от ширины поля памяти memo,  которая  определяется
командой SET MEMOWIDTH.
    MLINE () - возвращает строку поля памяти memo в символьном виде.
    MODIFY QUERY - модифицирует (или создает) запрос.
    MODIFY MEMO - открывает окно редактирования поля памяти.
    MODIFY STRUCTURE - позволяет модифицировать структуру базы данных.
    PACK - удаляет все записи, помеченные для удаления.
    RECALL - убирает маркировку записей, помеченных для удаления.
    REPLACE - заменяет содержимое заданных полей базы данных на значе-
ние, определяемое выражением.
    SELECT - активирует заданную рабочую область.
    SELECT -  SQL - осуществляет выборку записей из одной или несколь-
ких баз данных.
    SET ANSI - задает метод сравнения строк для SQL.
    SET AUTOSAVE - перекачивает все действующие буфера памяти на диск.
    SET DELETED - делает возможным/невозможным доступ к записям,  мар-
кированным для удаления.
    SET FIELDS	- определяет доступ ко всем полям или только к тем по-
лям, которые определены в списке полей.
    SET OPTIMIZE  - разрешает или запрещает использование оптимизирую-
щей технологии Рашмора (Rushmore).
    SORT -  сортирует  данные  в существующей базе данных и направляет
отсортированные данные в новый файл базы данных.
    SUM - складывает значения числовых полей в базе данных.
    TOTAL - создает суммарные записи в новом файле базы  данных,  одна
запись	для каждой группы записей с одинаковым ключом в выбранной базе
данных.
    UPDATE - обновляет поля в одной базе данных данными из другой базы
данных.
    USE -  открывает файл базы данных и связанные с ней индексные фай-
лы.
    USED() -  возвращает логическую истину (.Т.),  если в заданной об-
ласти открыта база данных.
    ZAP - убирает все записи из базы данных.

    Манипуляции с записями
    Команды и функции под этим заголовком позволяют вам  выбирать  за-
писи внутри базы данных или задавать положение указателя записи.
    APPEND - добавить запись в конец базы данных.
    APPEND BLANK - добавить пустую запись в конец базы данных.
    APPEND FROM - добавляет записи в базу данных из другого файла.
    CONTINUE - продолжать выполнение предыдущей команды LOCATE.
    FILTER() - возвращает выражение фильтра для заданной  рабочей  об-
ласти.

			-22-

    GO или
    GOTO -  позиционирует  указатель записи на запись с заданным номе-
ром.
    INSERT - вставляет новую запись базы данных.
    INSER - SQL - вставляет запись в конец базы данных.
    LOCATE - ищет в заданной базе данных первую запись, соответсвующую
заданному выражению.
    LOOKUP () - просматривает базу данных до первого появления задано-
го выражения.
    SEEK -  устанавливает указатель записи на первую запись в индекси-
рованной базе данных, которая соответствует заданному выражению.
    SEEK ()  -	Возвращает логическую истину (.Т.),  если команда SEEK
отработала успешно.
    SET FILTER - определяет условие, которому доступные в заданной ба-
зе данных записи должны удовлетворять.
    SET NEAR - определяет,  где должен позиционироваться указатель за-
писи после безуспешного поиска.
    SET RELATION  -  связывает/убирает связь двух (или более) открытых
баз данных.
    SKIP -  передвигает  указатель записи вперед или назад в выбранной
базе данных.

    Индексы
    Команды и  функции под этим заголовком производят операции над ин-
дексными файлами и выдают информацию о них.
    CDX() - возвращает имена открытых составных индексных файлов .CDX.
    CLOSE INDEX - закрывает все открытые индексные файлы  в  выбранной
рабочей области.
    COPY INDEXES - копирует одноэлементные индексные файлы в составной
индексный файл.
    COPY TAG - создает одноэлементный индексный файл из тега составно-
го индексного файла.
    DELETE TAG - удаляет тег или теги из составного  индексного  файла
.CDX.
    INDEX - создать индексный файл для отображения базы данных в логи-
ческом порядке.
    KEY () - возвращает ключевое индексное выражение главного  (управ-
ляющего) индексного файла.
    MDX() - возвращает имена открытых составных индексных файлов .CDX.
    NDX ()  - возвращает имя открытого индексного файла в заданной ра-
бочей области.
    ORDER () - возвращает имя главного индексного файла в заданной ра-
бочей области.
    REINDEX - перестраивает индексный файл.
    SET INDEX - выбирает для использования с текущим файлом базы  дан-
ных один или более индексный файл.
    SET ORDER - определяет индексный  файл,  который  будет  использо-
ваться для определения логического порядке базы данных.
    SET UNIQUE - разрешает или запрещает поддержку совпадающих	ключей
в индексном файле.
    SYS (14) - возвращает индексное выражение индексного файла.
    SYS(21) - возвращает номер главного управляющего индекса в текущей
рабочей области.
    SYS(2021) - возвращает выражение фильтра индексации.
    TAG() - возвращает имена тегов из составных индексных файлов  .CDX
или имена индексных файлов .IDX.


			-23-

    Связи
    Команды и функции этой  категории  позволяют  вам  установить  или
прервать связи между файлами баз данных.
    RELATION () - возвращает связующее выражение  в  заданной  рабочей
области.
    SELECT - SQL - осуществляет выборку данных из одной или нескольких
баз данных.
    SET RELATION TO - связывает две (или более) открытых баз данных.
    SET RELATION  OFF - разрывает установленную связь между двумя отк-
рытыми базами данных.
    SET SKIP - создает между базами данных отношение один-к-многим.
    TARGET() - возвращает рабочую область - адресат для связи.

    Программирование
    ----------------
    Отладка и обработка ошибок
    Нижеследующие команды  и функции производят различные операции от-
ладки с программами FoxPro.
    ERROR ()  -  возвращает номер ошибки,  которая вызывает условие ON
ERROR.
    EXTERNAL - предупреждает Менеджер Проектов (Project Manager) о не-
определенных ссылках.
    LINENO ()  -  возвращает  относительный  номер  строки выполняемой
программы.
    MESSAGE () - возвращает сообщение о текущей ошибке.
    NOTE | * | && - указывает на неисполняемые комментарии в  програм-
ме.
    ON ERROR - выполняет команду (обычно передача управления  в  прог-
раммном выполнении), когда происходит ошибка.
    ON READERROR - выполняет подпрограмму после ошибки ввода.
    ON() -  возвращает команду,  присвоенную ON ERROR,	ON ESCAPE,  ON
KEY, ON KEY LABEL, ON PAGE и ON READERROR.
    PROGRAM () - возвращает имя программы,  которая выполняется в дан-
ный момент или,  может быть, имя программы, которая выполнялась, когда
произошла последняя ошибка.
    RETRY - возвращает управление вызывающей программе и выполняет за-
ново последнюю команду.
    SET DEBUG - разрешает или запрещает доступ к окнам Отладка (Debug)
и Трассировка (Trace).
    SET DEVELOPMENT - сравнивает дату и  время	создания  программного
файла и его откомпилированного объектного файла.
    SET ECHO - делает возможным/невозможным выход исходной программы в
окно Трассировки (Trace).
    SET TALK - делает  возможным/невозможным  отображение  результатов
работы команды на экране или в окне.
    SET TRBETWEEN - разрешает или запрещает трассировку между  точками
останова в окне Трассировки (Trace).
    SYS (16) - возвращает имя программы, которая выполняется.
    SYS (18)  -  возвращает  имя поля,	вводимого до нажатия "горячей"
клавиши, назначенной ON KEY.
    SYS(2018) - возвращает параметр сообщения об ошибке.
    VARREAD - возвращает имя редактируемого поля,  когда была запущена
текущая подпрограмма ON KEY.
    WAIT - приостанавливает работу FoxPro до посылки символа с клавиа-
туры, необязательно сохраняя ввод в переменной памяти.

			-24-


    Выполнение программ
    Нижеследующие команды и функции производят различные операции свя-
занные с  выполнением,	преостановкой  и  завершением  работы программ
FoxPro.
    BUILD APP - создает из файла проекта приложение (.APP).
    BUILD EXE - для владельцев FoxPro Distribution Kit создает из фай-
ла проекта исполняемый файл (.ЕХЕ).
    BUILD PROJECT - создает и строит проект.
    CALL - выполняет двоичный файл,  который был загружен в память ко-
мандой LOAD.
    CANCEL -  отменяет	(останавливает)  выполнение программного файла
FoxPro.
    CLEAR PROGRAM - очищает буфер откомпилированной программы.
    CLOSE ALL - закрывает файлы всех типов во всех рабочих областях  и
выбирает рабочую область 1.
    CLOSE PROCEDURE - закрывает открытый процедурный файл.
    COMPILE - компилирует программу и создает объектный файл.
    CREATE PROJECT - создает проект.
    DO - выполняет команду или процедурный файл.
    FUNCTION - идентифицирует начало подпрограммы.
    LOAD -  размещает  двоичный файл в памяти для последующего его вы-
полнения командой CALL.
    MODIFY PROJECT - модифицирует (или создает) проект.
    PARAMETERS - идентифицирует переменные,  переданные от  вызывающей
программы.
    PARAMETERS() - возвращает число параметров,  которые были переданы
при последнем вызове процедуры.
    PROCEDURE - идентифицирует начало процедуры.
    RELEASE MODULE - удаляет загруженные двоичные модули из памяти.
    RESUME - продолжает выполнение приостановленной программы.
    RETURN - возвращает управление вызывающей программе.
    RUN | !  - временно передает управление ДОС для выполнения внешней
команды или файла.
    SET ESCAPE - делает возможным/невозможным влияние нажатия  клавиши
прерывания (Esc) во время работы программы.
    SET LIBRARY - задает внешнюю библиотеку.
    SET LOGERRORS  -  сохраняет  сообщения  об	ошибках  компиляции  в
текстовом файле.
    SET PROCEDURE - открывает процедурный файл.
    SET SYSMENU - разрешает или запрещает доступ к линейке  системного
меню во время выполнения программы.
    SYS UDFPARMS - задает,  как передаются параметры функциям, опреде-
ляемым пользователем, по значению или по ссылке.
    SUSPEND - приостанавливает выполнение программы.
    SYS(2015) - возвращает уникальное имя процедуры.
    UDFs - определенные пользователем функции (UDF) позволяют вам  до-
бавить одну или несколько специальных функций, которые возвращают зна-
чение вызывающей программе.
    WAIT - приостанавливает работу FoxPro до посылки символа с клавиа-
туры, необязательно сохраняя вход в переменной памяти.


			-25-

    Команды структурного программирования
    Эти команды и функции используются для управления программным  вы-
полнением и для передачи управления внутри программы FoxPro.
    DO CASE ... ENDCASE - выполняет один блок операторов (или, возмож-
но, никакой) из набора выбора по условию.
    DO WHILE  ...  ENDDO  - выполняет блок операторов внутри условного
цикла.
    EXIT - выход из цикла DO WHILE, FOR или SCAN.
    FOR...ENDFOR - выполняют операторы в цикле заданное число раз.
    IF ...  ELSE ... ENDIF - в зависимости от значения логического вы-
ражения выполняет набор команд.
    IIF() - альтернативная форма IF-структуры.	На основе значения ло-
гического выражения возвращает одно из двух значений.
    SCAN ...  ENDSCAN  - просматривает базу данных и условно выполняет
команды.

    Функции для работы с файлами на низком уровне
    Нижеследующие функции доступны в FoxPro для манипулирования файла-
ми и коммуникационными портами на низком уровне. Функции файла низкого
уровня	должны использоваться осторожно,  особенно при манипулировании
файлами базы данных.  Проверьте их работу  на  тестовых  файлах  перед
использованием этих функций на файлах, которые содержат важные данные.
    FCHSIZE() - изменяет  размер  файла,  открытого  функцией  низкого
уровня.
    FCLOSE () - закрывает файл, открытый командой низкого уровня.
    FCREATE () - создает и открывает файл низкого уровня.
    FEOF () - определяет, размещен ли в конце файла указатель файла.
    FERROR () - возвращает ноль, если была успешно выполнена последняя
функция низкого уровня;  иначе,  возвращает значение,  соответствующее
причине ошибки.
    FFLUSH () - перекачивает файл на диск и освобождает прамять.
    FGETS ()  -  возвращает серию байтов из файла,  открытого командой
низкого уровня.
    FOPEN () - открывает файл для использования.
    FPUTS () - записывает в файл, открытый командой низкого уровня.
    FREAD () - возвращает в виде символьной строки заданное количество
байтов из файла.
    FSEEK ()  - перемещает указатель файла в файле,  открытом командой
низкого уровня.
    FWRITE () - записывает в файл, открытый командой низкого уровня.
    HEADER() - возвращает число байт в заголовке базы данных, открытой
в заданной рабочей области.

    Манипуляции с переменными памяти
    Команды и функции этой категории позволяют вам присваивать	значе-
ния переменным памяти.
    & -  макроподстановка.
    = - присваивает значение переменной памяти (если переменная памяти
находится слева от =).
    ACOPY() - копирует элементы оного массива переменных памяти в дру-
гой.
    ADEL() - удаляет элемент, строку или столбец из массива.
    ADIR() - помещает информацию о подходящих файлах в массив.
    AELEMENT() -  возвращает  номер  элемента  массива	по его индексу
строки и столбца.

			-26-

    AFIELDS() - помещает информацию о структуре базы данных в массив.
    AINS() - вставляет элемент, строку или столбец в массив.
    ALEN() - возвращает число элементов, строк или столбцов в массиве.
    ASCAN() - осуществляет поиск заданного выражения в	массиве  пере-
менных памяти.
    ASORT() - сортирует массив переменных памяти в возрастающем и убы-
вающем порядке.
    ASUBSCRIPT() - возвращает индекс строки или  столбца  элемента  по
ого номеру.
    AVERAGE - вычисляет арифметическое значение,  необязательно сохра-
няя результаты в массиве или переменных памяти.
    CLEAR ALL - очищает переменные памяти, закрывает файлы и т.д.
    CLEAR MEMORY - удаляет все глобальные и локальные переменные памя-
ти из памяти.
    COUNT -  подсчитывает  число  определенных записей,  необязательно
сохраняя результат в переменной памяти или массиве.
    DISPLAY или
    LIST MEMORY - отображает текущие переменные памяти.
    GETEXPR -	вызывает   далог  Конструктора	Выражений  (Expression
Builder) и сохраняет сконструированные пользователем выражения в пере-
менной памяти.
    PARAMETERS - идентифицирует  переменные,  передаваемые  вызывающей
программой.
    PRIVATE - определяет локальные переменные памяти.
    PUBLIC - определяет глобальные переменные памяти.
    REGIONAL - создает зональные переменные памяти и массивы  перемен-
ных памяти.
    RELEASE - освобождает переменные памяти.
    RESTORE FROM - восстанавливает переменные памяти из файла перемен-
ных памяти .MEM.
    SAVE TO  -	сохраняет  переменные  памяти в файл переменных памяти
.MEM.
    STORE -  присваивает значение переменной памяти или инициализирует
массив.
    SUM - складывает значения числовых полей внутри базы данных,  нео-
бязательно сохраняя результаты в массиве или в переменных памяти.
    WAIT -  останавливает  операцию  FoxPro до тех пор,  пока не будет
послан символ с клавиатуры,  необязательно сохраняя вход в  переменной
памяти.

    Манипуляции с массивами
    Эта категория  позволяет вам работать с массивами переменных памя-
ти.
    ACOPY() - копирует элементы оного массива переменных памяти в дру-
гой.
    ADEL() - удаляет элемент, строку или столбец из массива.
    ADIR() - помещает информацию о подходящих файлах в массив.
    AELEMENT() -  возвращает  номер  элемента  массива	по его индексу
строки и столбца.
    AFIELDS() - помещает информацию о структуре базы данных в массив.
    AINS() - вставляет элемент, строку или столбец в массив.
    ALEN() - возвращает число элементов, строк или столбцов в массиве.
    ASCAN() - осуществляет поиск заданного выражения в	массиве  пере-
менных памяти.
    ASORT() - сортирует массив переменных памяти в возрастающем и убы-
вающем порядке.

			-27-

    ASUBSCRIPT() - возвращает индекс строки или  столбца  элемента  по
ого номеру.
    APPEND FROM  ARRAY - добавляет записи в файл базы данных из масси-
ва.
    COPY TO ARRAY - копирует данные из базы данных в массив.
    DECLARE - создает одно- или двухмерный массив переменных памяти.
    DIMENSION - создает одно- или двухмерный массив переменных памяти.
    GATHER - сохраняет данные массива в полях базы данных.
    SCATTER - заполняет элементы массива содержимым полей базы данных.

    Управление событиями
    Эти команды определяют действие,  которое нужно  выполнить,  когда
происходит заданное событие.
    ON ERROR - выполняет команду (обычно передача управления в	выпол-
нении программы), когда происходит ошибка.
    ON ESCAPE - выполняет команду (обычно передача управления в выпол-
нении программы), когда нажата клавиша ESC.
    ON KEY - следит за нажатием  любой	клавиши  во  время  выполнении
программы и передает управление подпрограмме.
    ON KEY LABEL - следит за нажатием заданной клавиши во время выпол-
нении программы и передает управление подпрограмме.
    ON PAD - присваивает подпрограмму пункту в линейке меню.
    ON SELECTION PAD - присваивает подпрограмму пункту меню.
    ON SELECTION POPUP - присваивает подпрограмму всплывающему меню.
    ON() -  возвращает команду,  присвоенную ON ERROR,	ON ESCAPE,  ON
KEY, ON KEY LABEL, ON PAGE и ON READERROR.

    Ввод и вывод
    ------------
    Форматирование данных
    Эти команды  и функции позволяют форматировать и выводить на экран
или в окно данные из записей,  полей,  переменных памяти или массивов.
Элементы  под  этим заголовком также включают общие особенности вывода
на экрана или в окно.
    \ | \\ - вывод строк текста.
    ? - вывод значения выражения на следующей строке.
    ?? - вывод значения выражения на той же строке.
    @ ...  SAY/GET - вывод содержимого полей базы данных и  переменных
памяти для ввода или редактирования.
    @ ... GET Блоки Проверки (Сheck Boxes) - создает блоки проверки.
    @ ... GET Невидимые Кнопки (Invisible Buttons) - создает невидимые
кнопки.
    @ ... GET Списки (Lists) - создает списки.
    @ ... GET Всплывающие Меню (Popups) - создает всплывающие меню.
    @ ...  GET	Текстовые  Кнопки  (Push  Buttons) - создает текстовые
кнопки.
    @ ...  GET Селективные Кнопки (Rdio Buttons) - создает селективные
кнопки.
    @ ... Edit - Области Модификации Текста (Text Edit Regions) - соз-
дает области модификации текста.
    @ ...  BOX - используя набор заданных координат рисует прямоуголь-
ник.
    @ ... CLEAR - очищает часть экрана или окна.
    @ ... FILL - изменяет цвета внутри заданной области экрана или ок-
на.

			-28-

    @ ... ТО - рисует линии или прямоугольники на окне или в экране.
    ACTIVATE SCREEN - посылают весь последующий вывод на экран.
    APPEND - добавляет запись в конец базы данных.
    BROWSE -  открывает окно Browse для просмотра и/или редактирования
записей базы данных.
    CHANGE или
    EDIT       - отображает поля базы данных для редактирования.
    CLEAR - очищает экран или окно.
    CLEAR READ - выход из активной команды READ.
    CLOSE FORMAT - закрывает открытый файл формата.
    COL () - возвращает текущий столбец позиции курсора.
    CREATE SCREEN - создает экранные формы.
    DISPLAY или
    LIST - выводит записи из базы данных.
    INKEY () - возвращает целое значение, соответствующее нажатой кла-
више или кнопке "мыши".
    MODIFY SCREEN - модифицирует (или создает) экран.
    OBJNUM() - возвращает номер объекта GET.
    RDLEVEL() - возвращает текущий уровень READ.
    READ - активирует операторы @ ... GET для редактирования.
    READKEY () - возвращает целое число, которое соответсвует клавише,
нажатой пользователем для выхода из команды редактирования.
    RESTORE SCREEN - восстанавливает образ экрана.
    ROW () - возвращает текущую строку позиции курсора.
    SAVE SCREEN - сохраняет вид экрана в буфери, переменную памяти или
элемент массива.
    SCOLS () - возвращает число столбцов экрана, доступных для вывода.
    SCROLL - прокручивает область экрана или окна вверх или вниз.
    SET BLINK - позволяет мерцать  элементам  экрана  или  увеличивает
число доступных цветов.
    SET CARRY - делает возможным/невозможным перенос данных вперед.
    SET CLEAR - делает возможным/невозможным очистку экрана.
    SET COLOR - управляет цветом экранного изображения, окон, диалогов
и т.д.
    SET CONFIRM - разрешает или запрещает необходимость нажатия клави-
ши подтверждения для выхода из поля во время редактирования.
    SET CONSOLE - делает возможным/невозможным вывод на экран.
    SET CURSOR - включает и выключает курсор.
    SET DECIMALS - устанавливает число десятичных знаков, отображаемых
в некоторых операциях вывода.
    SET DEVICE - управляет отображением выхода @...SAY на принтер,  на
экран или в окно.
    SET FIXED - фиксация количества десятичных позиций при отображении
числа.

			  -29-

    SET HEADING - делает возможным/невозможным отображение  заголовков
колонки для каждого поля в командах DISPLAY, LIST, SUM и AVERAGE.
    SET MARK TO - задает разделитель в датах.
    SET MEMOWIDTH  -  устанавливает ширину выхода поля памяти memo для
команд LIST и DISPLAY, устанавливает ширину по умолчанию для REPORT.
    SET MESSAGE  - определяет сообщения для вывода в стоке статуса или
задает местоположение на экране сообщений в линейках меню или всплыва-
ющих меню.
    SET ODOMETER - изменяет описываемый интервал в  командах,  которые
сообщают о своем действии.
    SET SPACE - вставляет пробел между полями или  выражениями,  когда
используются команды ? или ??
    SET TEXTMERGE - запрещает или разрешает  распознавание  полей  баз
данных.
    SET TEXTMERGE  DELIMITERS  -  указывает  разделители   поглощающие
текст.
    SHOW GET - выводит заново единственный объект GET.
    SHOW GETS - выводит заново все объекты GET.
    SHOW OBJECTS - выводит заново единственный объект GET.  Ссылка  на
объект по номеру.
    SROWS () - возвращает число строк,	доступных на экране  отображе-
ния.
    SYS(7) - возвращает имя текущего файла формата.
    SYS(100) -	 возвращает   статус  установки  консоли,  выполненный
последним вызовом команды SET CONSOLE.
    SYS(101) - возвращает прежнюю установку устройства (DEVICE).
    SYS(2002) - включение или выключение курсора.
    TEXT ... ENDTEXT - выводимые строки текста, результаты выражений и
функций, содержимое переменных памяти.
    TRANSFORM() -   форматирует  символьный  или  числовой  вывод  без
использования команды @...SAY.

			-30-

    UDFs - определенные пользователем функции (UDF) позволяют вам  до-
бавить одну или несколько специальных функций, которые возвращают зна-
чение вызывающей программе.
    UPDATED () - возвращает логическую истину (.Т.), если были измене-
ны любые данные во время последней операции READ.

    Печать
    Эти команды и функции позволяют печатать или отображать данные  из
полей  записи  или переменных памяти на экран,	принтер или в выходной
файл.
    \ | \\ - вывод строк текста.
    ? - вывод значения выражения на следующей строке.
    ?? - вывод значения выражения на той же строке.
    ??? - посылка информации непосредственно  на  принтер,  минуя  его
драйвер.
    @ ...  SAY - непосредственный форматированный вывод на экран или в
окно, на принтер или в файл.
    CLOSE ALTERNATE - закрывает открытый ALTERNATE-файл.
    DEFINE BOX - рисует рамку вокруг печатываемого текста.
    DISPLAY или
    LIST - отображает записи из базы данных.
    EJECT - посылает подачу формы на принтер.
    EJECT PAGE - условно посылает подачу формы на принтер.
    ON PAGE - выполняет подпрограмму на определенном номере  строки  в
отчетах.
    PCOL () - возвращает текущее положение колонки принтера.
    PRINTJOB ... ENDPRINTJOB - активизируют установки работы принтера.
    PRINTSTATUS() - возвращает истину (.Т.),  если принтер готов, ложь
(.F.) - если нет.
    PROW () - возвращает текущее положение строки принтера.
    SET MARGIN - устанавливает левую границу печати.
    SET PDSETUP - загружает установку драйвера принтера.
    SET PRINTER  -  Разрешение	или  запрет вывода данных на принтер и
указание порта вывода.
    SYS (6) - возвращает текущее устройство печати.
    SYS (13) - возвращает состояние принтера.
    SYS (102) - возвращает текущую установку печати.
    TYPE - отображает стандартный ASCII-файл.

    Линейки меню и всплывающие меню
    Эти команды  и функции используются для разработки,  отображения и
активации линеек меню и всплывающих меню, определяемых пользователем.
    \ | \\ - вывод строк текста.
    @ ... GET Всплывающие Меню (Popups) - создает всплывающие меню.
    ACTIVATE POPUP - отображает и активизирует всплывающее меню.
    BAR () - возвращает номер пункта, выбранного во всплывающем меню.
    CLEAR MENUS - освобождает память от всех меню и стирает их с экра-
на или окна.
    CLEAR POPUPS  - освобождает память от всех всплывающих меню и сти-
рает действующее всплывающее меню с экрана.
    CNTBAR() - возвращает число пунктов во всплывающем меню.
    CNTPAD() - возвращает число пунктов в линейке меню.
    CREATE MENU - создает меню.
    DEACTIVATE MENU - деактивирует линейку меню и убирает ее с экрана.
    DEACTIVATE POPUP  - убирает действующее всплывающее меню с экрана,
но не из памяти.


			-31-
    DEFINE BAR - определить пункт внутри всплывающего меню.
    DEFINE MENU - создает линейку меню.
    DEFINE PAD - определяет пункт линейки меню.
    DEFINE POPUP - создает всплывающее меню.
    GETBAR() - возвращает число пунктов во всплывающем меню.
    GETPAD() - возвращает число пунктов в линейке меню.
    HIDE MENU - удаляет линейку меню с экрана или окна, но не из памя-
ти.
    HIDE POPUP - удаляет всплывающее меню с экрана или окна,  но не из
памяти.
    MENU - Имена Системных Меню - Имена системных меню FoxPro.
    MODIFY MENU - модифицирует (или создает) меню.
    MOVE POPUP - перемещает всплывающее меню на новое место.
    MRKBAR() - возвращает является ли маркированным пункт всплывающего
меню.
    MRKPAD() - возвращает является ли маркированным пункт линейки  ме-
ню.
    ON BAR - при выборе пункта всплывающего меню  активизирует	другое
всплывающее меню или линейку меню.
    ON PAD - присваивает подпрограмму пункту в линейке меню.
    ON SELECTION  BAR  -  присваивает подпрограмму пункту всплывающего
меню.
    ON SELECTION MENU - присваивает подпрограмму линейке меню.
    ON SELECTION PAD - присваивает подпрограмму пункту линейки меню.
    ON SELECTION POPUP - присваивает подпрограмму всплывающему меню.
    PAD() - возвращает имя последнего выбранного пункта в линейке  ме-
ню.
    POP MENU - восстанавливает из стека линейку меню.
    POP POPUP - восстанавливает из стека всплывающее меню.
    POPUP() - возвращает имя активного всплывающего меню.
    PRMBAR() - возвращает текст пункта всплывающего меню.
    PRMPAD() - возвращает текст пункта линейки меню.
    PROMPT() - возвращает выбранный пункт всплывающего меню или линей-
ки меню.
    PUSH MENU - помещает линейку меню в стек.
    PUSH POPUP - помещает всплывающее меню в стек.
    RELEASE BAR - удаляет пункт из всплывающего меню.
    RELEASE MENUS - удаляет определения линеек меню из памяти и стирает
активную линейку меню с экрана.
    RELEASE PAD - удаляет пункт из линейки меню.
    RELEASE POPUPS  - удаляет определения всплывающих меню из памяти и
стирает активное всплывающее меню с экрана.
    SET BORDER - определяет границы для линеек меню и всплывающих меню.
    SET MARK OF - задает символ маркировки для пунктов линеек  меню  и
всплывающих меню.
    SET SKIP OF - блокирует и разблокирует меню.
    SIZE POPUP - изменяет размер всплывающего меню.
    SKPBAR - определяет, является ли пункт всплывающего меню доступным
или заблокированным.
    SKPPAD - определяет,  является ли пункт линейки меню доступным или
заблокированным.
    SHOW MENU - выводит линейку меню для тестирования.
    SHOW POPUP - выводит всплывающее меню для тестирования.


			-32-

    Окна
    Эти команды и функции используются для разработки,	отображения  и
активации определенных пользователем окон.
    ACTIVARE WINDOW - отобразить и активизировать окно.
    CLEAR WINPOWS  - освобождает все определения окон из памяти и уда-
ляет все окна с экрана.
    CREATE SCREEN - создать экранную форму.
    DEACTIVATE WINDOW - деактивизировать определенные окна  и  убирать
их с экрана.
    DEFINE WINDOW - создать окно и определить его атрибуты.
    HIDE WINDOW - убрать окно с экрана, но не из памяти.
    MODIFY SCREEN - модифицирует (или создает) экран.
    MOVE WINDOW - перемещает окно на новое место на экране.
    RELEASE WINDOWS - освобождает определения окон из памяти и убирает
их с экрана.
    RESTORE WINDOW - восстанавливает определения окна в память из фай-
ла или поля памяти.
    SAVE WINDOW - сохранить определения окна в файл или поле памяти.
    SET BORDER - определить границу для окон.
    SET SHADOWS - разместить или убрать тень с экрана.
    SET WINDOW - открывает в окне поле памяти для редактирования.
    SHOW WINDOW - разместить окно на экране без его активизации.
    SYS(2016) - возвращает последнее имя окна SHOW GETS WINDOW.
    WBORDER() - возвращает истину (.Т.), если окно имеет границу.
    WCHILD() -	возвращает возвращает число дочерних окон или их имена
для порождающего окна.
    WCOLS() - возвращает число столбцов в заданном окне.
    WEXIST() - возвращает истину (.Т.), если заданное окно существует.
    WLAST() - возвращает имя окна которое было активно до текущего ок-
на, или истину (.Т.),  если окно с заданным именем было активно до те-
кущего окна.
    WLCOL() - возвращает позицию столбца окна на экране.
    WLROW() - возвращает позицию строки окна на экране.
    WMAXIMUM() - возвращает истину (.Т.),  если заданное окно максими-
зировано.
    WMINIMUM() - возвращает истину (.Т.), если заданное окно минимизи-
ровано.
    WONTOP() - возвращает истину (.Т.),  если заданное окно  лежит  на
самом верху.
    WOUTPUT() - возвращает истину (.Т.),  если текущий вывод направлен
на заданное окно.
    WPARENT() - возвращает имя порождающего окна.
    WREAD() - возвращает истину (.Т.),	если заданное окно вовлечено в
текущий READ.
    WROWS() - возвращает число строк в заданном окне.
    WTITLE() - возвращает заголовок, присвоенный окну.
    WVISIBLE() - возвращает истину (.Т.),  если заданное окно не скры-
то.
    ZOOM WINDOW - изменяет размер системных и пользовательских окон.

			     -33-


    Печать, клавиатура и "мышь"
    Эти команды и функции используются для ввода с клавиатуры и работе
с "мышью".
    CAPSLOCK () - устанавливает режим заглавных букв.
    CKRSAW ()  -  проверяет  буфер клавиатуры на присутствие заданного
символа.
    CLEAR MACROS - освобождает все макросы клавиатуры из памяти, вклю-
чая все присвоения функциональным клавишам.
    CLEAR TYPEAHEAD - очищает буфер клавиатуры.
    INSMODE() - устанавливает режим вставки/затирания.
    KEYBOARD - заполняет буфер клавиатуры.
    LASTKEY() - возвращает значение ASCII последней нажатой клавиши.
    MCOL() - возвращает столбец позиции указателя мыши на экране или в
окне.
    MDOWN() - возвращает логическое значение,  соответствующее состоя-
нию кнопки "мыши".
    MROW() -  возвращает строку позиции указателя мыши на экране или в
окне.
    NUMLOCK () - устанавливает режим NumLock.
    ON KEY - следит за нажатием  любой	клавиши  во  время  выполнении
программы и передает управление подпрограмме.
    ON KEY LABEL - следит за нажатием заданной клавиши во время выпол-
нении программы и передает управление подпрограмме.
    PLAY MACRO - повторяет серию нажатий клавиш (макрос клавиатуры).
    POP KEY  -	восстанавливает  команды  ON  KEY LABLE,  помещенные в
"стек".
    PUSH KEY  - помещает все текущие команды ON KEY LABLE в "стековую"
память.
    RESTORE MACROS  -  восстанавливает набор макросов клавиатуры в па-
мять из дискового файла или из поля памяти.
    SAVE MACROS  -  сохранить  набор  клавиатурных макросов в дисковый
файл или поле памяти.
    SET FUNCTION - присваивает символьную строку функциональной клави-
ше.
    SET MACKEY	- задает клавишу или комбинацию клавиш,  высвечивающих
диалог Макросы Клавиатуры (Keyboard Macros).
    SET TYPEAHEAD - устанавливает число символов, которые будут содер-
жаться в буфере клавиатуры.
    SYS(2008) - задает форму курсора для вставки и затирания.
    SYS(2009) - апереключает курсор вставки и затирания.

    Отчета и этикетки
    Эти команды управляют созданием и получением отчетов.
    \ | \\ - вывод строк текста.
    CREATE LABEL  - создает этикетки и сохраняет их в файле определе-
ния этикетки.
    CREATE REPORT  - создает отчет и сохраняет его в файле определения
отчета.
    LABEL - печатает этикетку из файла определения этикетки.
    MODIFY LABEL - позволяет создавать и редактировать этикетки с сох-
ранением их в файлах определения этикеток.
    MODIFY REPORT - позволяет создавать и редактировать отчеты с  сох-
ранением их в файлах определения отчетов.
    REPORT - печатает отчет из файла определения отчета.


			-34-

    Среда FoxPro
    ----------------
    Среда
    Эти команды  и  функции позволяют вам управлять широким диапазоном
системных параметров FoxPro и параметров среды.
    ADIR() - помещает информацию о подходящих файлах в массив.
    CAPSLOCK () - устанавливает режим заглавных букв.
    COL() - возвращает текущий столбец позиции курсора.
    CREATE COLOR SET - создает новый набор цветов из текущих  цветовых
установок.
    CREATE VIEW - сохраняет текущие установки среды в  файле  среды  с
расширение .VUE.
    DIR или
    DIRECTORY - выводит содержимое каталога диска.
    DISKSPACE() - возвращает число доступных  байт  на	дисковом  уст-
ройстве по умолчанию.
    DISPLAY или
    LIST STATUS - отображает текущую системную информацию.
    FKLABEL () - возвращает имя функциональной клавиши,  соответствую-
щей числовому выражению.
    FKMAX () - возвращает общее число  программируемых	функциональных
клавиш, доступных на вашей клавиатуре.
    GETENV - возвращает содержание переменной среды ДОС.
    GETFILE ()	- вызывает диалог Открытия Файла (Open File) и возвра-
щает имя файла, выбранного пользователем.
    HELP - вызывает оперативную помощь FoxPro.
    INKEY () - возвращает целочисленное значение,  соответствующее на-
жатой пользователем клавише.
    INSMODE () - устанавливает режим вставки/затирания.
    ISCOLOR ()	-  возвращает логическое значение,  основанное на типе
используемого монитора.
    LOCFILE() - ищет файл на диске.
    MEMORY () - возвращает количество доступной памяти.
    MESSAGE () - возвращает строку сообщения о текущей ошибке.
    NUMLOCK () - устанавливает режим NumLock.
    OS () - возвращает имя основной операционной системы.
    PCOL () - возвращает положение текущей колонки принтера.
    PROW () - возвращает положение текущей строки принтера.
    PUTFILE () - вызывает диалог Сохранения Файла (Save File) и  возв-
ращает имя файла, определенного пользователем.
    QUIT - покидает FoxPro и возвращает приглашение ДОС.
    READKEY () - возвращает целое число, которое представляет клавишу,
нажатую пользователем для того, чтобы выйти из команды редактирования.
    ROW () - возвращает текущую строку положения курсора.
    SCHEME () - возвращает цветовую пару или  список  цветных  пар  из
цветовой схемы.
    SET - активизирует окно Просмотра (View).
    SET MARK TO - задает разделители в дате.
    SET ANSI - задает метод сравнения строк для SQL.
    SET BELL - устанавливает BELL в положение ON или OFF.
    SET BLOCKSIZE -  задает  FoxPro  способ  распределения  доступного
дискового пространства для размещения полей памяти memo.
    SET CENTURY - разрешает или запрещает использовать часть даты, оп-
ределяющую век.


			-35-
    SET CLEAR - делает возможным/невозможным очистку экрана.
    SET CLOCK  - устанавливает системные часы и снимает их.  Вы можете
также определить их расположение на экране или в окне.
    SET COLOR - переключатель между цветным и монохромным монитором.
    SET COLOR OF - определяет цвета различных элементов экрана.
    SET COLOR SET - загружает предварительно определенный цветовой на-
бор.
    SET COMPATIBLE - управляет совместимостью с FoxBase+.
    SET CURRENCY - позволяет вам  управлять  символом  доллара	($)  в
предложениях PICTURE команды @...SAY.
    SET DATE - устанавливает формат даты для переменных даты.
    SET DEBUG - разрешает и запрещает доступ к окнам Отладки (Debug) и
Трассировки (Trace).
    SET DEFAULT - устанавливает дисковод, используемый по умолчанию, и
каталог для операций ввода/вывода.
    SET DISPLAY - позволяет переключать различные дисплейные режимы на
мониторах, которые поддерживают различные режимы.
    SET FIXED - фиксация количества десятичных позиций при отображении
числа.
    SET FUNCTION - присваивает символьную строку функциональной клави-
ше.
    SET HELP - разрешает или запрещает использовать оперативную помощь
FoxPro.
    SET HELPFILTER - показывает подмножество топиков помощи в окне По-
мощи (Help).
    SET INTENSITY - делает возможным/невозможным "подсвечивание" полей
во время операций ввода/вывода.
    SET LIBRARY - задает внешнюю библиотеку.
    SET MARK -	позволяет  вам	определить  символ,  который  отделяет
месяц, день, год в датах.
    SET MOUSE - управляет чувствительностью мыши.
    SET NOTIFY	- разрешает или запрещает вывод определенных системных
сообщений.
    SET PATH - определяет маршрут поиска файлов.
    SET POINT - позволяет вам изменить десятичную точку на другой сим-
вол.
    SET RESOURCE - устанавливает файл ресурсов.
    SET SCOREBOARD  -  задает  место  вывода на экран состояния клавиш
NumLock, CapsLock и Insert.
    SET SEPARATOR  -  позволяет  вам  изменить числовой разделитель  в
предложениях PICTURE.
    SET STICKY	-  задает  вывод  меню в системе меню FoxPro.  Это от-
носится только к тем, кто работает с "мышью".
    SET TALK - делает  возможным/невозможным  отображение  результатов
работы команды на экране или в окне.
    SET TEXTMERGE - запрещает или разрешает  распознавание  полей  баз
данных.
    SET TEXTMERGE  DELIMITERS  -  указывает  разделители   поглощающие
текст.
    SET TOPIC - задает критерий выбора топиков помощи.
    SET TYPEAHEAD - устанавливает число символов, которые будут содер-
жаться в буфере клавиатуры.
    SET VIEW - блокирует и  разблокирует  окно	Просмотра  (View)  или
восстановление среды из файла среды.


			-36-
    SET () - возвращает статус опций SET ON | OFF или SET TO.
    SYS(3) - возвращает уникальное допустимое имя файла.
    SYS(5) - возвращает устройство по умолчанию.
    SYS(6) - возвращает текущее устройство печати PRINT.
    SYS(7) - возвращает имя текущего файла формата.
    SYS(9) - возвращает серийный номер вашего экземпляра FoxPro.
    SYS(12) - возвращает доступную память в байтах.
    SYS(16) - возвращает имя выполняемой программы.
    SYS(18) - возвращает имя поля,  в которое вводились данные,  когда
была нажата "горячая" клавиша ON KEY.
    SYS(24) - возвращает предел памяти EMS, который был установлен при
старте в файле конфигурации CONFIG.FP.
    SYS(100) - возвращает текущую установку CONSOLE, сделанную послед-
ним выполнением команды SET CONSOLE.
    SYS(101) - возвращает текущую установку DEVICE.
    SYS(102) - возвращает текущую установку PRINT.
    SYS(103) - возвращает текущую установку TALK (ON | OFF).
    SYS(1001) - возвращает количество доступной FoxPro памяти.
    SYS(1016) - возвращает количество памяти,  используемой объектами,
определяемыми пользователем,  открытыми базами данных, файлами низкого
уровня, переменными памяти и т.д.
    SYS(2001) - возвращает статус, задаваемый опциями SET ON | OFF или
SET TO.
    SYS(2003) - возвращает имя текущего директория на диске по умолча-
нию.
    SYS(2004) -  возвращает  имя  директория,  содержащего файл FoxPro
FOXPRO.EXE.
    SYS(2005) - возвращает имя активного файла ресурсов.
    SYS(2006) - возвращает как строку символов тип используемого адап-
тера и монитора.
    SYS(2008) - задает форму курсора вставки и затирания.
    SYS(2009) - переключает курсор вставки и затирания.
    SYS(2010) - возвращает как строку символов установку опции FILES в
вашем файле конфигурации CONFIG.SYS.
    SYS(2013) - возвращает имена системных меню FoxPro.
    SYS(2016) - возвращает имя окна последней команды SHOW GETS WINDOW.
    SYS(2017) - очищает экран и выдает экран входа в FoxPro.
    SYS(2019) - возвращает возвращает имя и местонахождение файла кон-
фигурации FoxPro CONFIG.FP.
    SYS(2020) - возвращает (в байтах) общий объем диска по умолчанию.
    SYS(2022) - возвращает (в байтах) размер кластера диска.
    SYS(2023) - возвращает диск, на котором размещаются временные фай-
лы FoxPro.
    VERSION() - возвращает строку символов,  содержащую текущую версию
FoxPro.

    Работа с файлами
    Команды и функции этой категории управляют или манипулируют диско-
выми файлами.
    ADIR() - помещает информацию о подходящих файлах в массив.
    CLOSE ALL - закрывает все типы файлов и выбирает  рабочую  область
1.
    CLOSE ALTERNATE - закрывает открытый ALTERNATE-файл.
    CLOSE DATABASES - закрывает все открытые файлы базы данных.
    CLOSE FORMAT - закрывает открытый  форматный файл.


			-37-
    CLOSE INDEX - закрывает все открытые индексные файлы.
    CLOSE PROCEDURE - закрывает открытый процедурный файл.
    COPY FILE - делает копию любого типа файла.
    CREATE VIEW - сохраняет текущие установки среды в файле среды VIEW.
    CURDIR () - возвращает текущий каталог ДОС на определенном диске.
    DELETE FILE - удаляет файл с диска.
    DIR или
    DIRECTORY - отображает содержание текущего каталога.
    DISPLAY или
    LIST FILES - отображает информацию для определенных дисковых  фай-
лов.
    DISKSPACE () - возвращает число доступных байтов на диске, исполь-
зуемом по умолчанию.
    ERASE - удаляет файл с диска.
    FILE ()  - возвращает истину (.Т.),  если дисковый файл может быть
найден.
    FILER - вызывает утилиту FoxPro поддержки дисков и файлов.
    FLUSH - перекачивает все активные буферы памяти на диск.
    FULLPATH ()  -  возвращает	полностью определенный маршрут ДОС для
данного файла.
    GETFILE ()	-  возвращает  диалог Открытия Файла (Open File) и имя
файла, выбранного пользователем.
    LOCFILE() - ищет файл на диске.
    MODIFY COMMAND | FILE -  позволяет	модифицировать	или  создавать
программы и текстовые файлы.
    PUTFILE () - вызывает диалог Сохранения Файла (Save File) и  возв-
ращает имя файла, определенного пользователем.
    RENAME - переименовывает файл.
    SET ALTERNATE - создает или активизирует файл для поддержки экран-
ного вывода.
    SET DEFAULT  - устанавливает дисковод для использования по умолча-
нию и каталог, которые будут нужны для операций ввода/вывода.
    SET PATH - определяет маршрут поиска файла.
    SET FAULLPATH - определяет,  возвращается ли имя файла с полностью
подготовленным маршрутом.
    SET SAFETY - делает возможным/невозможным защиту файла от  переза-
писи.
    SET VIEW - делает доступным  или  заблокированным  окно  View  или
восстанавливает среду из файла View.
    SYS (3) - возвращает уникальное, допустимое имя файла.
    SYS (2000)	- возвращает имя первого файла,  который соответствует
"макету".
    SYS(2014) -  возвращает кратчайший относительный маршрут в текущий
директорий для заданного файла.
    TYPE - отображает стандартный файл ASCII.

    Работа в сети (FoxPro/LAN)
    --------------------------

				-38-

    Сетевые команды и функции
    FoxPro/LAN позволяет нескольким пользователям локальной сети иметь
общие  файлы базы данных.  Следующие команды и функции могут использо-
ваться с FoxPro/LAN.  В версии FoxPro для одного пользователя эти  ко-
манды и функции игнорируются.
    FLOCK() - пытается заблокировать файл  базы  данных  и  возвращает
истину (.Т.) в случае успеха.
    LOCK() - пытается заблокировать запись или записи файла базы  дан-
ных и возвращает истину (.Т.) в случае успеха.
    NETWORK() - возвращает истину (.Т.), если используется FoxPro/LAN,
сетевая версия FoxPro.
    RLOCK() - пытается заблокировать запись или записи файла базы дан-
ных и возвращает истину (.Т.) в случае успеха.
    SET EXCLUSIVE - задается, если файлы базы данных будут открываться
для исключительного или совместного использования в сети.
    SET LOCK - разрешает или запрещает автоматическое блокирование за-
писи или файла в некоторых командах.
    SET MULTILOCKS - разрешает или запрещает  блокирование  нескольких
записей.
    SET REFRESH - выводит изменения,  произведенные в записях  другими
пользователями сети.
    SET REPROCESS - задает поведение FoxPro/LAN  в  случае  неуспешной
попытки блокировки записи или файла, и число временных промежутков или
продолжительность попыток блокировки.
    UNLOCK - разблокирует заблокированные записи или файлы.





?????? ???????????