Gaist-Endruy
( off
)
(
09:28 24-03-2009
)
Аппарат макрокоманд позволяет присвоить этой последовательности имя и использовать это имя вместо нее. Можно также определить некоторый макроязык, позволяющий рассматривать данную конструкцию, как определение и в дальнейшем использовать это определение.
Gaist-Endruy
( off
)
(
09:28 24-03-2009
)
Фактически, макропроцессор представляет собой отдельный языковой процессор со своим собственным языком.
Gaist-Endruy
( off
)
(
09:28 24-03-2009
)
Форматы макроопределений в различных системах может отличаться друг от друга. В данном случае последовательность команд, определяющая макрокоманду имеет следующий формат:
Gaist-Endruy
( off
)
(
09:28 24-03-2009
)
MACRO <macro name>
-----------------
-----------------
-----------------
END;
Gaist-Endruy
( off
)
(
09:28 24-03-2009
)
Псевдокоманда MACRO - первая строка определения - определяет следующий за ней идентификатор, как имя макрокоманды. Вслед за этой строкой располагается последовательность команд, называемых "телом макроопределения". Определение заканчивается строкой с псевдокомандой END.
Gaist-Endruy
( off
)
(
09:28 24-03-2009
)
Если макрокоманда определена, то использование имени соответствующей макрокоманды в качестве мнемоники кода в программе эквивалентно использованию соответствующей последовательности команд. Если повторяющейся последовательности команд дать имя "MacPageUp", то наш пример можно будет переписать следующим образом:
Gaist-Endruy
( off
)
(
09:29 24-03-2009
)
Исходный текст
Расширение исходного текста
MACRO MacPageUp
SetPrevPos;
FixScreenPos;
PageScreenUp;
FixCursorPos;
END;
Gaist-Endruy
( off
)
(
09:29 24-03-2009
)
.
.
.
MacPageUp
.
.
.
MacPageUp
.
.
.
Gaist-Endruy
( off
)
(
09:29 24-03-2009
)
.
.
.
SetPrevPos;
FixScreenPos;
PageScreenUp;
FixCursorPos;
.
.
.
SetPrevPos;
FixScreenPos;
PageScreenUp;
FixCursorPos;
.
.
.
Gaist-Endruy
( off
)
(
09:29 24-03-2009
)
В данном случае макропроцессор заменяет каждую макрокоманду (макровызов) строками:
SetPrevPos;
FixScreenPos;
PageScreenUp;
FixCursorPos;