Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

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

2.4.1. Создание, компиляция и выполнение программ, процедур и функций

В разделе не приводится описание некоторых команд, (@Say‑Get, Read, Input, Accept, Set Color, Define Window, On Key, Keyboard и др.), ко­то­рые ис­поль­зуются в последней версии FoxPro 2.6 (работающей под DOS), но прак­ти­чески не пригодные в Visual FoxPro ввиду наличия графического интер­фей­са и новых, более мощных и удобных альтернативных средств (формы, отчеты и др.).

Допускается сокращенное написание имен команд, фраз и функций (первые 4 символа).

Для переноса в программе части команды на следующую строку в конце текущей строки ставится знак “;“ после любого места, где допус­кает­ся пробел. Текст переносимой строки должен начинаться правее первой колонки в новой строке.

Строка с комментарием начинается с символов “&&” или “*”. Ком­мен­тарий в конце строки с командой начинается с символов “&&”.

Команды FoxPro, ориентированные на обработку файлов таблицы, в самом общем виде имеют следующий синтаксис:

<название команды> [<границы>] <список выражений>

[For <условие>] [While <условие>]

<границы> - границы действия команды, которые могут иметь одно из сле­­­дующих значений: All (все записи таблицы), Rest (все записи, начиная с текущей, до конца таблицы), Next <N> (следующие N записей, на­чи­ная с текущей), Record <N> (запись номер N);

For <условие> - выполнение команды только для записей, отвечающих <условию>;

While <условие> - выполнение команды только до тех пор, пока не перестанет выполняться <условие>.

Слова For и While могут присутствовать в команде одновременно. В этом случае While-условие имеет приоритет перед For-условием.

Пример. Вывести список мужчин: List All Fields Fam For Pol='М' .

Порядок следования элементов команды произвольный.

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

Поясним применение команд с условиями. Условие For обес­пе­чи­вает выполнение команды для всех записей файла таблицы или внутри границ, если они указаны. Условие While означает выполнение команды только до тех пор, пока условие истинно. При встрече первой же записи, в которой оно не удовлетворяется, выполнение команды прекращается, несмотря на то, что нижняя граница еще не достигнута и далее, возможно, имеются записи с нужными свойствами. Поэтому область применения While-условия - это файлы, упоря­до­ченные (физически или индексированием) по полю, в котором ана­ли­зируется условие. Если ранее каким-либо образом была найдена первая запись, удовлетворяющая условию, то все остальные такие записи на­хо­дят­ся ниже рядом.

В этом случае использование команд с While-условием пред­поч­тительнее, так как по достижении последней, нужной записи выполнение команды прекращается, а в случае For-условия поиск записей был бы бессмысленно продолжен до достижения нижней границы действия команды.

В FoxPro имеется группа команд видов:

Set <параметр команды> То <значение параметра>;

Set <параметр команды> Off/On.

Такие команды (команды-установки) определяют условия работы других команд. Параметр может быть задан некоторым значением или включен/выключен (On/Off). Многие установки можно задать визуальными средствами настройки Visual FoxPro.

В FoxPro разрешается команды записывать как прописными, так и строчными буквами.

Команда создания и корректировки программ имеет вид:

Modify Command <имя Файла>.

Компиляция программы осуществляется командой Compile <файл>.

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

В имени файла можно указывать символы маски группы ком­пи­ли­руе­мых или редактируемых файлов: “?“, “*“ (Compile prim?).

Для выполнения программы используется команда

Do <имя программнго файла> [With <список параметров>]

Выполнение программы может быть прервано нажатием клавиши Esc, если установлена команда Set Escape On.

Для выполнения программы из командной строки используется команда {Run | !} <текст командой строки>.

Процедуры и функции

В FoxPro предусмотрена широкая возможность использования процедур, которые могут быть как внешними (в виде отдельных программных файлов), так и внутренними (внутри программы). Частным случаем процедуры является процедура-функция. Эти средства удобно использовать для реализации некоторых одинаковых алгоритмов обработки данных. Тогда такой алгоритм программируется один раз и вызывается в системе по мере необходимости.

Обращение к процедуре выполняется командой

Do <имя командного файла> With <список параметров>.

В процедуру могут быть переданы и из нее получены некоторые величины, указанные в списке параметров после слова With. Этими величинами могут быть переменные, константы и любые разрешенные выра­же­ния. В этом случае первой командой в вызываемой процедуре должна быть Parameters <список параметров>.

Параметры, указанные в команде Do после слова With, на­зы­вают­ся фактическими или аргументами, а соответствующие им параметры в вызываемой процедуре (в команде Parameters) - формальными или просто параметрами.

Передаваемые параметры по типу должны соответствовать друг другу. Число аргументов и параметров может и не совпадать.

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

Завершаются файлы-процедуры одним из следующих способов:

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

  2. командой Return - возврат в старшую программу;

  3. командой Cancel - выход на командный уровень;

  4. командой Quit - выход из FoxPro в Windows.

Команда Return имеет вид:

Return [То Master/<процедура>/<Bыр>]

Здесь фраза Return То Master указывает на переход к самому верх­не­му уровню вызывающих процедур, a Return То <процедура> - возврат на процедуру с указанным именем. Элемент <Выр> применяется для передачи в вызывающую программу результата, если процедура используется как процедура-функция.

В первом и втором случаях возврат в старшую программу вы­пол­няется на команду, следующую за той, от которой произошел вызов под­программы. Однако при некоторых обстоятельствах бывает желательно вер­нуться именно на команду вызова. Это можно сделать командой Retry.

Совокупность команд, составляющих внутреннюю процедуру, должна начинаться командой Procedure <имя процедуры>.

Внутренняя процедура-функция должна начинаться с команды

Function <имя функции>.

Если в процедуре или функции передаются параметры, то второй командой обязательно должна быть команда Parameters.

Завершается процедура или функция командой Return [<Выр>], где

<выр> - результат функции (.Т.).

FoxPro не делает различий между процедурами и функциями.

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