- •5 Работа в системе visual foxpro
- •5.1 Базовые концепции Visual FoxPro
- •5.1.1 Общая характеристика субд
- •5.1.2 Элементы проекта
- •5.1.3 ИнтерфейсVisualFoxProи создание проекта
- •5.1.4 Принципы создания проекта и его основных компонентов
- •5.1.5 Создание базы данных, таблиц и индексов
- •5.1.5.1 Создание базы данных
- •5.1.5.2 Создание таблиц
- •5.1.5.3 Типы данных вVisualFoxPro
- •5.1.5.4Создание индексов вVisualFoxPro
- •5.1.6 Организация межтабличных связей
- •5.1.7 Обеспечение целостности данных
- •5.2 Извлечение и представление информации средствами интерфейсаVisualFoxPro
- •5.2.1 Средства формирования запросов
- •5.2.2 Организация многотабличных запросов и вычисляемого поля
- •5.2.3 Представление результатов запросов
- •Основы программирования вVisualFoxPro
- •5.3.1 Общие положения и соглашения о синтаксисе команд
- •5.3.2 Разновидности, объявление, инициализация и отображение переменных и массивов
- •5.3.3 Взаимодействие программ вVisualFoxPro
- •5.3.4 Команды структурного программирования
- •5.3.5 Команды обработки особых ситуаций
- •5.3.6 Команды установки программной среды
- •5.3.7 Некоторые важные функции языкаVisualFoxPro
- •5.3.8 Визуальное объектно-ориентированное программирование в Visual FoxPro
- •5.3.8.1 Базовые понятия
- •5.3.8.2 Создание объектов на основе базовых классов и задание свойств объектов
- •5.3.8.3 Определение событий и методов для объектов класса
- •5.3.8.4 Вложенность объектов
- •5.3.9 Команды для работы с меню
- •5.3.10 Пример совместного использование программных файлов, формы и меню
5.3.3 Взаимодействие программ вVisualFoxPro
Различают главную процедуру (или головную программу) и вызываемые ей процедуры. Глубина вложения процедур равна 32. Вызываемые процедуры могут быть оформлены как процедуры-подпрограммы и процедуры-функции. Обобщенное их название – User-Defined Functions (UDFs) – функции, определенные пользователем. Принципиальных различий между подпрограммами и функциями нет, и использоваться они могут одинаково. Однако обычно считается, что процедура-подпрограмма служит для выполнения каких-то действий, а процедура-функция – для определения и возврата в вызывающую процедуру некоторого значения. Имя процедуры не должно совпадать с именем встроенной функции, так как последняя имеет приоритет при вызове.
Синтаксис команд начала и завершения UDF приведен на рис 5.27.
PROCEDURE <procedure name>
FUNCTION <function name>
RETURN [<expr> | TO MASTER | TO <program name>]
Здесь <expr> – возвращаемое в вызывающую процедуру значение. Команда RETURN без аргументов возвращает управление вызывающей программе. Опция TO MASTER передает управление на самый верхний уровень в иерархии вызывающих программ. Опция TO <program name> возвращает управление указанной программе.
Оператор RETURN не является обязательным, так как неявная команда RETURN автоматически выполняется за последним оператором любого программного файла; кроме того, очередная следующая команда FUNCTION или PROCEDURE сигнализирует о конце предыдущей.
Рис. 5.27 Команды начала и завершения UDF
Данные передаются в UDF в форме параметров. Параметры определяются командой
PARAMETERS <parameter list>
которая должна быть следующей после команды начала UDF.
Чтобы избежать нерациональных потерь времени в связи с частыми обращениями к внешней памяти при вызове очередной процедуры, можно сгруппировать несколько UDF в один общий файл с расширением имени .prg, называемый процедурным файлом, и загружать этот файл с диска однократно. Такую загрузку выполняет команда открытия процедурного файла:
SET PROCEDURE TO [<procedure file>]
Здесь <procedure file> – имя процедурного файла, в котором находятся UDF, имеющие свои имена. Этот файл должен быть открыт до начала работы с UDF в вызывающей программе. Для закрытия файла процедур используется та же команда без необязательного параметра. Одновременно может быть открыт только один процедурный файл, поэтому очередная команда открытия нового процедурного файла автоматически закрывает ранее открытый процедурный файл. UDF можно также располагать в том же файле, где находится головная программа, причем в конце головной программы.
Чтобы выполнить любой программный (командный) файл или файл процедур, используется команда, представленная на рис. 5.28.
DO <file1> [WITH <parameter list>] [IN <file2>]
Здесь file1 – имя файла, содержащего программу, которую необходимо выполнить, либо имя UDF из открытого ранее процедурного файла, либо имя процедурного файла. Опция WITH <parameter list> позволяет передать параметры в вызываемую программу. Опция IN <file2> позволяет выполнить процедуру в заданном программном файле <file2>.
Рис. 5.28 Команды запуска программы в работу
Другой вариант выполнения UDF – обращение к ним как к функциям FoxPro, то есть по имени со следующим за именем списком параметров, заключенным в круглые скобки. Скобки могут не содержать параметров, так как эти параметры необязательны. Указанное обращение может использоваться в различных логических выражениях и во многих командах FoxPro.