Использование фактических параметров со специальными знаками
Если фактический параметр внутри содержит запятую или пробел, параметр должен быть заключен в скобки <>, например:
IDEAL
p586
model flat
MACRO ERROR msg, number
m&number db '&msg',13,10,'$'
endm
dataseg
error <Ошибка в записи идентификатора>, 1
error <Ошибка в записи числа>, 2
error <Ошибка в записи числа, длина !> 6>, 3
END
Откомпилируйте этот пример с формированием листинга и проанализируйте созданный листинг.
Если среди символов фактического параметра есть символы <>, перед ними ставится знак !, например для предыдущего макроса необходимо сформировать
error <Ошибка в записи идентификатора, длина !>6>, 3
Если знак ! будет пропущен, первый знак > будет рассмотрен как конец параметра.
Если вместо фактического параметра используется выражение, которое должно быть вычислено до подстановки, перед параметром используется знак % например:
MACRO ARRAY name, type, count
name d&type (count) dup(?)
endm
Для использования макроса для выделения памяти под матрицу с данными типа двойное слово размером 25*80 можно записать:
IDEAL
P586
model flat
macro array name, type, count
name d&type (count) dup (?)
endm
dataseg
array matr, d, %25*80
end