Команды языка FoxPro
Команды языка FoxProВ табл. 5.8 содержится список типов команд, с краткой характеристикой их некоторых представителей.
Таблица 5.8. Обзор некоторых команд FoxPro для их различных типов
Тип команд
Примеры команд
Результат выполнения
Режим выполнения команд
Диалоговые
Resume
Заставляет программу продолжить выполнение со строки, следующей за той, на которой выполнение программы было приостановлено (командой Suspend)
Run
Выполняет из среды FoxPro файл с расширением . сот, . ехе ИЛИ . bat
Continue
Продолжает поиск, начатый командой Locate
Продолжение табл. 5.8
Тип команд
Примеры команд
Результат выполнения
Пакетные
(программные)
Do Case... Endcase
Выбирает один вариант действия из имеющегося перечня
Do While... Enddo
Непрерывно выполняет команды между Do while и Enddo до тех пор, пока условие остается истинным
Exit
Позволяет ВЫЙТИ ИЗ цикла Do While, For
Диалоговые и пакетные
Clear
Очищает экран
Browse
Может вывести из файла данных на дисплей до 20 записей (см. рис. 5.13)
Edit
Загружает полноэкранный редактор записей (см. рис. 5.7, а).
Процедурность команд
Процедурные
If...Endif
Если условие является истинным, то выполняются все команды, расположенные между if и Endif
Loop
Переход на начало ЦИКЛа Do While . . . Enddo
Непроцедурные
Find
Устанавливает указатель записи на первую запись, содержащую индексный ключ, соответствующий выражению в команде
Sum
Дает общую сумму полей, включающих числовые поля
Sort
Создает и сортирует копию файла данных
Назначение команд
Установление режимов и оп- ций
Set Exact
Определяет с какой точностью будут сравниваться две строки символов.
Set Format
Открывает файл формата ввода-редактирования текущего файла данных
Set Color
Определяет атрибуты цветов экрана
Управление вычислительным процессом
Do, Return
Вызывает командный файл и осуществляет возврат в вызывающую программу
Do
См. выше Do While <Условие> ... Enddo, Loop, Exit, Do Case . . . Case . . . Endcase, if ... Else ... Endif
Создание БД
Create
Создает новый файл данных и определяет его структуру
Create
Report
Создает или изменяет файл с форматом отчета
Index
Создает индексный файл, основанный на выражении (которое обычно является именем поля или комбинацией полей)
Продолжение табл. 5.8
Тип команд
Примеры команд
Результат выполнения
Загрузка/ выгрузка БД
Append From
Загружает (импортирует) файл БД из файла ОС
Copy То
Выгружает (экспортирует) данные из файла БД в файл ОС
Ввод данных
Get
Вводит отдельное поле, строку, или пользовательскую переменную
Append
Создает пустую запись в конце текущего файла и позволяет заполнение с применением пользовательского формата Экрана (команды Browse, Edit)
Вывод данных
Say
Выдает на экран или принтер поле, данное или строку
?
Выводит на экран значение выражения FoxPro (см. рис. 5.5)
Report
Выдает поколонный отчет на экран или принтер с использованием файла формата отчета (см. рис. 5.26)
Навигация в БД
Use, Select
Позволяет осуществить выбор среди нескольких открытых файлов БД текущего
Go, Skip
Изменяет положение указателя текущей записи путем прямого перехода к записи или путем пропуска некоторого числа записей
Set Relation To
Устанавливает связь двух файлов БД так, что при перемещении указателя записи в основном файле синхронно перемещается указатель в зависимом
Работа с массивами
Gather From
Используется для переноса данных из массива в файл данных. Элементы массива переносятся, начиная с первого элемента массива в соответствующие записи файла данных
Scatter To
Используется для перенесения данных из текущей записи файла данных или из переменной памяти в массив. Поля текущей записи переносятся, начиная с первого поля записи в соответствующие элементы массива
Рассмотрим далее некоторые из этих команд, в соответствии с их назначением.
Команды работы с файлами данных (файловые команды)
Здесь могут быть выделены (табл. 5.9):
• непроцедурные команды, которые действуют на файл в целом, причем теоретически одной командой могут быть обТаблица 5.9. Основные файловые команды
Команда
Результат выполнения
Непроцедурные команды
Append
From
Копирует записи из <Файла> и добавляет их в текущий файл данных.
For | while определяют условие, которое должно выполниться для копирования записи
Average
Вычисляет среднее значение числовых полей, указанных в ссписке полей файла> (см. рис. 5.9)
Browse
Выводит из файла данных на дисплей до 20 записей. Если в записи содержится так много полей, что они не могут поместиться на экране, то Browse выводит только те поля, которые помещаются. Остальные поля можно увидеть, прокручивая экран вправо и влево с помощью мыши или клавиши <ТаЬ>.
В режиме Browse можно редактировать содержимое полей (см. рис. 5.11)
Calculate
Вычисляет значения, используя стандартные финансовые и статистические функции, например, Avg (<числовое выражение >) — среднее значения выражения
Copy
Копирует файл данных или его часть в <Файл>
Copy To Array
Копирует в массив данные из полей файла данных. Для каждой записи файла данных первое поле сохраняется в первом элементе массива, второе поле — во втором и т. д.
Count
Считает число записей активного файла данных, которые соответствуют определенному условию (см. рис. 5.9)
Delete
Помечает указанные записи на удаление. Если Delete используется без номера записи, то на уничтожение помечается текущая запись
Edit
Загружает экранный редактор записей FoxPro (см. рис. 5.5)
List
Выдает содержимое файла данных (см. рис. 5.5)
Locate
Команда находит первую запись, соответствующую условию
Replace
Помещает в указанное поле новое значение. Можно одновременно заменить значения в нескольких полях, указав список полей и нужных значений
(<Поле> With <Выражение>)
Report
Form
Команда Report Form использует файл с формой отчета (созданный ранее командой Create Report — см. рис. 5.24) для создания отчета. Предполагается, что имя файла формата имеет расширение .frx, если не указано другое
Процедурные команды
Go или Goto
Команды устанавливают указатель записи на нужную запись. Go тор переместит указатель в начало файла данных, a Go Bottom — в конец (см. рис. 5.6)
Skip
Перемещает указатель активной записи текущего файла. Если отсутствуют какие-либо параметры, то перемещение указателя осуществляется на одну запись вперед
работаны вообще все записи файла (если все они удовлетворяют указанным в команде условиям). Примерами являются команды Edit, Replace, Report, Сору и др.;
• процедурные, которые выполняют элементарное действие над файлом (команды Skip, Go).
Общий синтаксис непроцедурных файловых команд:
Здесь:
- • <Интервал> (Scope — охват или диапазон) позволяет указать область действия <Команды> для работы с определенными записями в текущем файле данных и может быть определен следующим образом:
- — АН — команда выполняется для всех записей в файле данных;
- — Next <п> — команда выполняется для области записей, которая начинается с текущей записи и завершается записью с номером <п>;
- — Next 1 — команда работает с текущей записью;
- — Record <п> — работает с записью файла данных, имеющей физический номер <п>;
- — Rest — работает с областью записей, которая начинается с текущей записи и завершается последней записью в файле;
- • while позволяет <Команде> работать с записями файла данных, пока <Логическое выражение-1> оценивается как истинное. Выполнение <Команды> прекращается, если встречена запись, не соответствующая слогическому выражению-1> и все другие оставшиеся записи файла данных не обрабатываются;
- • For — <Команда> распространяется только на записи, удовлетворяющие слогическому выражению-2>. Каждая запись в файле данных проверяется с помощью выражения For. Оператор интервала и выражения For, While могут быть использованы в одной и той же команде FoxPro. Если заданы оба выражения For и while, то while имеет более высокий приоритет;
- • Fields сСписок полей файла>; указывает перечень полей файла данных, на которые распространено действие данной команды (см. рис. 5.7, а, команда List);
- • From — источник входной информации для команды, если необходимо — файл или массив (например, команда Append From);
- • То — контейнер записи результата, если необходимо — файл, массив, переменные и пр. (например, команда Сору То).
Примеры команд
позволяет выбрать для редактирования записи с мужчинами, родившимися после 1985 г.
должна будет выбрать для редактирования записи, пока год рождения в них равен 1985 г.
Как только появится 1987 или 1986, работа команды завершится. Очевидно, все это имеет смысл только в том случае, если записи отсортированы по году рождения или включен соответствующий индекс. Кроме того, указатель текущей записи должен быть установлен на первую запись с годом рождения 1985 (например, командой Seek 1985).
Просмотр данных с использованием диалоговых команд. Команда ? может применяться для вывода информации из файла данных и оперативной памяти. Рассмотрим несколько примеров «навигационных команд» и их результатов (рис. 5.6).
Рис. 5.6. Некоторые операции с файлом данных и наблюдение за ними с помощью диалоговых команд:
/ — открытие файла Person; 2 — вывод значений функций; 3 — вывод значений полей; 4— значение функции Bof () (начало файла); 5 — шаг «назад на одну запись»; 6 — шаг «вперед на две записи»; 7 — переход в конец файла; 8 — значение функции Eof () (конец файла); 9 — шаг «вперед на одну запись»
Здесь изображено рабочее поле экрана (слева) и окно командных строк (справа). Соответствие команд и отображаемой информации задается стрелками:
- • команда Use открывает файл данных Person U);
- • командой ? просматриваются значения функций (2), определяющих номер текущей записи RecnoO и общее число записей в файле Reccount ();
- • просматриваются значения полей текущей записи (3);
- • функция Bof () имеет значение . f. (false), это говорит о том, что начало файла (Begin Of File) не достигнуто (4);
- • командой Skip -1 делается попытка «шагнуть за начало файла» (5), что приводит к установке Bof() в значение . t. (true);
- • командой Skip 2 осуществляется переход к 3-й записи (б);
- • командой ? просматриваются значения функций (2) и значения полей записи (J);
- • командой Go Bottom задается переход к последней записи файла (7);
- • командой ? просматриваются значение функции Recno (), а также значения полей текущей записи;
- • функция Eof () имеет значение . f. (false), это означает, что конец файла (End Of File) не достигнут (