Вызов подпрограммы |
Типовые задачи Предыдущий Следующий |
Общие сведенияНаименование: CALL. Тип выхода: вещественный или логический. Количество аргументов: от 1 до 32. Примечание по входам/аргументам•порядок входов: «Подпрограмма», «Аргумент 1», «Аргумент 2», ...; •первый вход: «Подпрограмма» — наименование вызываемой подпрограммы; •входы 2, 3, ...: «Аргумент 1», «Аргумент 2», ... — значения, передаваемые в вызываемую подпрограмму; •признак инверсии первого входа («Подпрограмма») игнорируется; •входы 32, 31, ... («Аргумент31», «Аргумент30», ...) можно не указывать (начиная с последних).
ФункционированиеИз текущей невызываемой подпрограммы вызывается подпрограмма (функция) с наименованием, указанным в первом аргументе («Подпрограмма»). При необходимости вызываемой подпрограмме передаются от 1 до 31 аргумента. Результат работы присваивается выходу алгоблока. Если в вызываемой подпрограмме не используется алгоблок FUNC_RES (Результат работы подпрограммы), то результат работы подпрограммы равен нулю.
Функционирование различных видов подпрограмм приведено в Приложении Б, подраздел Описание логической программы. Особенности работы в условных операторах с выражениямиОбратите внимание, что в выражениях вида: B10 = IF(DO1.1; [CALL(MY_PROG1)]; [CALL(MY_PROG2)]) обе подрограммы, MY_PROG1 и MY_PROG2, будут выполнены (до работы оператора IF). Пример использования//==================================== // Пример 1 // Вызываемая подпрограмма HYPOTENUSE B1 = SQR(ARG1) B2 = SQR(ARG2) B3 = ADD(B1; B2) B4 = SQRT(B3) B5 = FUNC_RES(B4)
// Основная подпрограмма B1 = CALL(HYPOTENUSE; AI1.1; AI1.2) B2 = RESULT(AO1.1; B1) B3 = CALL(HYPOTENUSE; AI2.1; AI2.2) B4 = RESULT(AO1.2; B3) //==================================== // Пример 2 // Вызываемая подпрограмма POWER // Она равна ARG13, если ARG2 равен логической единице // или ARG15, если ARG2 равен логическому нулю. B1 = MUL(ARG1; ARG1; ARG1) B2 = FUNC_RES(B1) B3 = IF_EXIT(ARG2) B4 = MUL(B1; ARG1; ARG1) B5 = FUNC_RES(B4)
// Основная подпрограмма B1 = CALL(POWER; 2; 1) B2 = RESULT(AO1.1; B1) // АО1.1 будет равен 8 B3 = CALL(POWER; 2; 0) B4 = RESULT(AO1.2; B3) // АО1.2 будет равен 32 |