Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема_2_6_FoxМодульность.doc
Скачиваний:
4
Добавлен:
05.05.2019
Размер:
92.67 Кб
Скачать

Область действия переменных

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

Глобальные переменные.

Переменные и массивы, будучи объявленными как глобальные, имеют силу всюду в среде СУБД - во всех ее программах, подпрограммах и процедурах. Более того, они остаются в СУБД, даже если создавшая их программа закончена и удалена из памяти. Такие переменные объявляются командой

PUBLIC <переменные> [,<массивы переменных>]

Например, команда

PUBLIC А, В, R(10), 2(2,6)

объявляет глобальными переменные А и В и массивы R и Z. Применение команды DIMENSION для объявления этих массивов больше не требуется. Подобный же эффект имеет использование имен переменных в командном окне. После выполнения, например, команд

А=3 &='КНИГА'

переменные А и В будут считаться глобальными (PUBLIC) и останутся в памяти в случае загрузки в нее программ, где могут быть изменены.

Этот эффект удобен, например, для раздельной отладки командных модулей. Предположим, что некоторый отлаживаемый модуль нуждается в данных, вырабатываемых другим модулем, который еще не существует или имеется, но мы не хотим тратить каждый раз вр^мя на его загрузку и исполнение. В этом случае лучше задать

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

Локальные переменные.

Переменные, объявляемые локальными (PRIVATE), существуют только в данном модуле и всех младших по отношению к нему модулях в моменты их вызова.

PRIVATE <переменные>

Возможно объявление локальными групп переменных без их поименного перечисления.

PRIVATE ALL LIKE/EXCEPT <маска>

Параметры LIKE и EXCEPT разъяснены ранее в команде SAVE. Команда PRIVATE применяется для временного (только внутри данной и подчиненных ей процедур) освобождения переменных, существующих в старших модулях или имеющих статус PUBLIC. При этом указанные переменные не уничтожаются, но делаются как бы невидимыми для данного модуля, и их имена могут быть использованы программистом по своему усмотрению. При выходе из' указанного модуля все PRIVATE-переменные утрачиваются, а старые переменные восстанавливаются.

8