Директивы.ERRB (ERRIFB) и.ERRNB (ERRIFNB).
Синтаксис директив:
.ERRB (ERRIFB) <имя_формального_аргумента> - генерация пользовательской ошибки, если <имя_формального_аргумента> пропущено;
.ERRNB (ERRIFNB) <имя_формального_аргумента> - генерация пользовательской ошибки, если <имя_формального_аргумента> присутствует.
Применяются для генерации ошибки трансляции в зависимости от того, задан или нет при вызове макрокоманды фактический аргумент, соответствующий формальному аргументу в заголовке макроопределения с именем <имя_формального_аргумента>. Их обычно используют для проверки задания параметров при вызове макроса.
Директивы.ERRDEF (ERRIFDEF) и.ERRNDEF (ERRIFNDEF).
Синтаксис директив:
.ERRDEF (ERRIFDEF) символическое_имя - если указанное имя определено до выдачи этой директивы в программе, то генерируется пользовательская ошибка;
.ERRNDEF (ERRIFNDEF) символическое_имя – если указанное символическое_имя не определено до момента обработки транслятором данной директивы, то генерируется пользовательская ошибка.
Данные директивы генерируют ошибку трансляции в зависимости от того, определено или нет некоторое символическое_имя в программе.
Директивы.ERRDIF (ERRIFDIF) и.ERRIDN (ERRIFIDN).
Синтаксис директив:
.ERRDIF (ERRIFDIF) <строка_1>, <строка_2> - директива, генерирующая пользовательскую ошибку, если две строки посимвольно не совпадают. Строки могут быть символическими именами, числами или выражениями и должны быть заключены в угловые скобки. Учитывает различие прописных и срочных букв;
.ERRIDN (ERRIFIDN) <строка_1>, <строка_2> - директива, генерирующая пользовательскую ошибку, если строки посимвольно идентичны. Учитывает различие прописных и срочных букв.
Для игнорирования различных строчных и прописных букв, существуют аналогичные директивы:
.ERRIFDIFI <строка_1>, <строка_2> - то же, что и ERRIFDIF, но игнорируется различие строчных и прописных букв;
.ERRIFIDNI <строка_1>, <строка_2> - то же, что и ERRIFIDN, но игнорируется различие строчных и прописных букв.
Директивы.ERRE (ERRIFE) и.ERRNZ (ERRIF).
Синтаксис директив:
.ERRE (ERRIFE) константное_выражение – директива вызывает пользовательскую ошибку, если константное_выражение ложно (равно нулю). Вычисление константного_выражения должно приводить к абсолютному значению, и это выражение не может содержать компонентов, являющихся ссылками вперед.
.ERRNZ (ERRIF) константное_выражение – директива вызывает пользовательскую ошибку, если константное_выражение истино (не равно нулю). Вычисление константного_выражения должно приводить к абсолютному значению, и это выражение не может содержать компонентов, являющихся ссылками вперед.
(слайд №24)
Константные выражения в условных директивах.
Константные выражения должны:
- давать абсолютный результат;
- содержать только компоненты, являющиеся ссылками назад, а не вперед;
Кроме этого константные выражения могут приводить к чисто логическому результату с помощью операторов отношений, выражающих отношение двух значений или константных выражений. В контексте условных директив вместе с операторами отношений можно рассматривать и логические операторы. Так результатом работы и тех и других может быть одно из двух значений:
- истина – число, которое сдержит двоичные единицы во всех разрядах;
- ложь – число, которое содержит двоичные нули во всех разрядах.
(слайд №25)
Операторы, которые можно применять в выражениях условных директив и которые формируют логические результаты, следующие:
Оператор отношения | Синтаксис | Результат |
EQ (equal) - равно | выражение_1 EQ выражение_2 | Истина, если выражение_1 равно выражение_2 |
NE (not equal) – не равно | выражение_1 NE выражение_2 | Истина, если выражениe_1 не равно выражение_2 |
LT (less than) – меньше | выражение_1 LT выражение_2 | Истина, если выражениe_1 меньше выражение_2 |
GT (greater than) – больше | выражение_1 GT выражение_2 | Истина, если выражениe_1 больше выражение_2 |
GE (greater or equal) – больше или равно | выражение_1 GE выражение_2 | Истина, если выражениe_1 больше или равно выражение_2 |
NOT – логическое отрицание | NOT выражение | Истина, если выражение ложно; ложь, если выражение истинно |
AND – логическое И | выражение_1 AND выражение_2 | Истина, если выражение_1 и выражение_2 истины |
OR – логическое ИЛИ | выражение_1 OR выражение_2 | Истина, если выражение_1 и выражение_2 истины |
XOR – исключающее ИЛИ | выражение_1 XOR выражение_2 | Истина, если выражение_1 = (NOT выражение_2) |
(слайд №26)