Оператор вызова макропрограммы
Оператор имеет следующий вид.
macro <Name> [{ByVal | ByRef}] <Param1>, [{ByVal | ByRef}] <Param2>, …, [{ByVal | ByRef}] <ParamN> done
Оператор осуществляет вызов макропрограммы с именем <Name> и передает ей в качестве фактических параметров величины <Param1>, <Param2>, …, <ParamN>. Число фактических параметров не должно быть меньше числа формальных параметров, принимаемых в вызываемой макропрограмме оператором getpar.
Ключи ByVal и ByRef определяют способ передачи параметров (по значению и по ссылке соответственно). Если параметр передается по значению, то изменение этого параметра в вызываемой макропрограмме никак не повлияет на значение параметра в вызывающей. Если параметр передается по ссылке, то фактически передается не параметр, а адрес памяти, где находится значение параметра. В этом случае изменение параметра в вызываемой макропрограмме приведет к изменению значения по переданному адресу памяти. А это вызовет изменение значения параметра в вызывающей макропрограмме. Передача параметра по ссылке часто используется, если в вызывающую макропрограмму нужно вернуть значение из вызываемой.
Если ни один из ключей ByVal или ByRef не задан, то параметр передается по значению.
Пример на макроязыке к3:
//Текст макро “proba2” getpar a1, b1, c1; a1=a1+b1; b1=200; c1="aaaaaaaaaaaaaaaaaaaaaaa"; exit;Вызов в другом макро:
A=5; B=3; // Здесь по ссылке передаются перменные A и C. // Причем С, в момент передачи еще не определена. macro "proba2" ByRef A, B, ByRef C;
// По окончании работы будут следующие результаты =A 8 =B 3 =C "aaaaaaaaaaaaaaaaaaaaaaa"
В K3 существует еще один оператор вызова макропрограммы.
mrm <NumFile>
Оператор вызывает последнюю вызванную макропрограмму (Most Recently Macro) с номером <NumFile>. Номер макропрограммы <NumFile> должен находится в пределах от 1 до 9. Данная команда в макропрограммах не используется.
См. также
- Macro — команда для программирования на Python