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

Внутренние процедуры

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

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

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

PROCEDURE <имя процедуры>

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

Процедурный файл

Множество внешних, обычно "родственных" процедур иногда удобно объединить в один процедурный файл (также типа PRG), который вызывается (загружается в память) командой

SET PROCEDURE TO <имя процедурного файла>

Только после этого можно командой DO вызывать из него отдельные процедуры.

В каждый момент может быть открыт только один процедурный файл. Чтобы его закрыть, нужно использовать команду SET .PROCEDURE TO без параметров.

Пример. Ниже приведена структура некоторой программной системы, состоящей из главного модуля GLAV.PRG и двух процедур: внешней процедуры PROCVN.PRG и процедурного файла PROC.PRG, который, в свою очередь, содержит две процедуры РРОС1иРРОС2.

Главный модуль включает также внутреннюю процедуру PROCVT.

Обращение к процедурам происходит непосредственно командами DO PROCVT и DO PROCVN.

С процедурой PROCVN связь осуществляется с передачей параметров. Фактические параметры 25, А*В, 'СУММА', Х передаются в процедуру, где они замещают формальные С, D, Е, L, обрабатываются там и возвращаются в главный модуль. То есть здесь имеется следующее соответствие между параметрами:

25 = С, А*В = D, 'СУММА' = Е, Х = L.

Хотя все без исключения фактические параметры передаются в подпрограмму, обратно здесь возвращается только L в X, так как остальные фактические параметры являются либо константами (25, 'СУММА'), либо функцией (А*В).

Кроме того, здесь присутствует один процедурный модуль PROC.PRG с двумя процедурами PROC1 и PROC2. Процедурный файл загружается командой SET PROCEDURE TO PROC, и тогда из него могут выбираться сами процедуры (здесь PROC1 и PROC2). После того как необходимость в них отпадает, файл PROC.PRG удаляется из памяти командой SET PROCEDURE TO. Затем при необходимости аналогичным образом может быть загружен другой процедурный модуль.

-Главный командный модуль GLAV.PRG-

&& Вызов внешней процедуры PROCVN DO procvn WITH 25,a*d,'СУММА',х

DO procvt && Вызов внутренней процедуры PROCVT

SET PROCEDURE TO proc && Загрузка процедурного файла PROC

DO prod && Вызов процедуры PROC1

DO proc2 && Вызов процедуры PROC2

ЭЕТ PROCEDURE TO &Ь Закрытие процедурного»файла

PROCEDURE procvt && Внутренняя процедура PROCVT

RETURN && Конец прцедуры PROCVT «--------------Конец главного модуля-----------------------

*---Модуль PROCVN.PRG--- *----Модуль PROC.PRG----PARAMETERS c,d,e,l PROCEDURE prod

RETURN &&--Конец модуля RETURN

PROCEDURE proc2 RETURN &&---Конец модуля

Начало и конец каждого модуля, а также все вызовы указаны комментариями, начинающимися со знаков * или &&.