Вложенные вызовы программ в Microsoft VFP
« Назад Из любой программы можно вызвать программу, расположенную в другом файле. Пусть в файле d:\Output.prg имеется следующий код: && Файл d:\Output.prg ? "x = ", x picture "99" ? "Квадратный корень из x равен ", y picture "9.9" Вызовем, употребив команду DO, программу этого файла из программы файла d:\Prog1.prg, в котором записаны следующие строки: && Файл d:\Prog1.prg store 25 to x y = Sqrt(x) ? "Вывод результата выполняется программой файла d:\Output.prg" && Вывод данных do d:\Output Приведенный пример показывает, что определенные в программе Prog1 переменные видны и в программе Output другого файла, вызванной из Prog1. Такие же свойства переменные программы Prog1 сохранят, если их объявить PRIVATE: private x, y store 25 to x … В то же время переменные основной программы (процедуры, функции), если они созданы как LOCAL, будут недоступны в других файлах или программных компонентах текущего файла. Замечание. Создание переменных командами LOCAL и PUBLIC и объявление переменных PRIVATE может быть выполнено в любой строке программы. Нельзя, однако, менять статус переменной, например, с PUBLIC на LOCAL. В то же время переменные созданные как LOCAL или PUBLIC могут быть затем объявлены PRIVATE (но не наоборот). Программа (процедура, функция) не должна вызывать без ограничений сама себя (явно или косвенно, то есть посредством другой программы). Если это правило нарушено, то VFP после некоторых вычислений обнаружит ошибку Allowed Do nesting level exceeded. Замечание. Максимальное число DO-вложений равно 128. В то же время рекурсии в VFP разрешены. Так, следующая программа печатает факториал заданного числа, вычисляемый рекурсивной функцией FACT( ): && Вызов рекурсивной функции FACT( ) store 5 to n nFactorial = Fact(n) ? nFactorial && Напечатает: 120 function Fact(n) if n = 0 then return 1 else && Рекурсия: функция FACT( ) вызывает сама себя return n * Fact(n – 1) endif endFunc |