.
.
.
MacGoto(1)
.
.
.
MacGoto(2)
.
.
.
Gaist-Endruy
( off
)
(
09:31 24-03-2009
)
.
.
.
SetPrevPos;
MoveToMark(1);
CenterFixScreenPos;
.
.
.
SetPrevPos;
MoveToMark(2);
CenterFixScreenPos;
.
.
.
Gaist-Endruy
( off
)
(
09:31 24-03-2009
)
Следует заметить, что макрокоманда может иметь и более одного операнда. Каждый операнд должен при этом соответствовать формальному параметру в строке определения имени макроса.
Рассмотрим следующий пример:
Пример 3:
Gaist-Endruy
( off
)
(
09:31 24-03-2009
)
.
.
.
ScrollScreenDown;
ScrollScreenLeft(0);
FixCursorPos;
.
.
.
ScrollScreenUp;
ScrollScreenLeft(1);
FixCursorPos;
.
.
.
Gaist-Endruy
( off
)
(
09:32 24-03-2009
)
В данном случае операнды в исходных последовательностях команд различны, как и команды. Эта программа может быть переписана так:
Gaist-Endruy
( off
)
(
09:32 24-03-2009
)
MACRO MacMove(cmd,left)
cmd;
ScrollScreenLeft(left);
FixCursorPos;
END;
.
.
.
MacMove(ScrollScreenDown,0)
.
.
.
Gaist-Endruy
( off
)
(
09:32 24-03-2009
)
MacMove(ScrollScreenUp,1)
.
.
.
ScrollScreenDown;
ScrollScreenLeft(0);
FixCursorPos;
.
.
.
ScrollScreenUp;
ScrollScreenLeft(1);
FixCursorPos;
.
.
.
Gaist-Endruy
( off
)
(
09:32 24-03-2009
)
Следует отметить, что существует два основных способа задания операндов. Первый способ - позиционный показан в вышестоящем примере. Существует также способ указания с применением ключевых операндов, который позволяет обращаться к формальным операторам, как по именам так и по позиции. Ссылаясь на формальные операторы в определении MacMove можно также использовать следующий вызов:
Gaist-Endruy
( off
)
(
09:32 24-03-2009
)
MacMove(cmd=ScrollScreenUp,left=1)
Gaist-Endruy
( off
)
(
09:32 24-03-2009
)
УСЛОВНОЕ МАКРОРАСШИРЕНИЕ