ВЫЗОВ Ml
ВЫЗОВ 'SY: MACRO 1’
С помощью оператора «:» (двоеточие) можно задавать умолчание для имени макроса. Формат оператора следующий: : литерал1, литерал2
где литерал1 − строка символов, присоединяемая к имени макроса слева; литерал2 − строка
символов, присоединяемая к имени макроса справа.
Например, оператор: 'DK1: [77, 300]', '. TEH' позволяет, задавая в программе вызов в формате ВЫЗОВ МАКРО1, передать операционной системе имя файла в виде 'DK1: [77, 300] MAKRO 1. ТЕН'.
Рассмотрим следующий оператор:
ВЫЗОВ Ml (A=l, (ВЕЩ Б = 2), В = 30.5, (ТЧ1 =0,0,0))
В нем заданы четыре операторных параметра. Без скобок можно записывать только параметры, присваивающие вещественные значения.
Если в операторе ВЫЗОВ определено значение текстового параметра, которому присвоено значение по умолчанию в заголовке макроса, то значение по умолчанию игнорируется, например: ДЕТАЛЬ 'МАКРО'
МАКРО Ml ('ПГ = 'Г, 'П2' = & Ш'0')
А = &П1+& П2
ТЧ1=А, В
КР1=ТЧ1, В + & П1
ПЧТ1 А, В, ТЧ1, КР1
КОНМАК
ВЫЗОВ Ml (/П1/ = '2/, 'П2' = '25', В = 0)
ВЫЗОВ Ml ('П1' = '2', В = 3)
ВЫЗОВ Ml ('П2' = '35', В=2.5)
ВЫЗОВ Ml (В = 7.4)
КОНЕЦ
Таблица 2.6 Таблица 2.7
Номер вызова макроса | П1 | П2 | В | А | ТЧ1 | КР1 | ||
1 2 3 4 | 2 2 1 1 | 25 20 35 10 | 0 3 2,5 7,4 | 27 22 36 11 | 27 22 36 11 | 0 3 2,5 7,4 | 0 0 0 0 | 27 0 2 22 3 5 36 2,5 3,5 11 7,4 8,4 |
Номер вызова макроса М2 | П1 | А |
1 2 3 4 | 10 + - 1+2 | А=10-1 А=+-1 А=-1 А=1+2-1 |
П р и м е ч а н и е . В результате 2-го вызова макроса будет выдана ошибка компиляции. |
Значения параметров и переменных, выводимые на печать, приведены в табл. 2.6.
Вложенные вызовы. В теле макроса может встретиться оператор ВЫЗОВ с именем другого макроса. При этом
происходит вставка тела нового макроса в тело старого. В теле внутреннего макроса нельзя использовать текстовые параметры внешнего макроса, но их можно применять в операторе ВЫЗОВ для задания значений внутренних текстовых параметров, например: МАКРО Ml ('П1' = ", П2 = ", П3 = ") ВЫЗОВ М2 ('ПГ = '&ПГ)
ВЫЗОВ М2 ('ПГ = '&П2 + &ПЗ')
КОНМАК
МАКРО М2
А = &П1 −1
КОНМАК
ВЫЗОВ Ml ('ПГ = '10')
ВЫЗОВ Ml ('П2' = 'Г, 'П3' = '2')
Значения параметра и переменной, выводимые на печать (для данного примера), приведены в табл. 2.7.
Локализация переменных в макросе. Для обеспечения полной независимости Макросов от вызывающей программы предусмотрена возможность локализации переменных внутри макросов.
Переменная является локализованной в макросе, если ее значение доступно только внутри этого макроса. В этом случае вне макроса может существовать другая переменная с тем же именем.
Для локализации переменной внутри макроса ее необходимо там явно описать. В противном случае будет использоваться переменная, определенная вне макроса. Если переменная используется впервые, она считается локализованной на текущем уровне вложения макросов.
Приведем пример использования локальных переменных:
А=1
МАКРО М
ВЕЩ А
А = 2
КОНМАК
ВЫЗОВ М
ПЧТ1 А
Поскольку в макросе М имеется явное задание типа переменной А, то она считается локальной в макросе М. Вне макроса ее значение, равное 2, недоступно. Вне тела макроса определена другая переменная А, которой было присвоено значение, равное 1, и именно это значение будет выведено на печать:
А=1
МАКРО М
А = 2
КОНМАК
ВЫЗОВ М
ПЧТ1 А
В этом случае печатается значение А = 2, так как в теле макроса используется переменная, определенная вне его. Расположение тела макроса относительно оператора А=1 здесь не существенно:
МАКРО М
А = 2
КОНМАК
ВЫЗОВ М ПЧТ1 А
В данном примере допущена ошибка, так как значение переменной А не определено.
Операторные параметры рассматриваются как операторы, находящиеся внутри макроса.
Переменные, определяемые в операторных параметрах, должны удовлетворять тем же соглашениям, что и переменные тела макроса, например:
А=1
ВЫЗОВ М (ВЕЩ А = 2)
ПЧТ1 А
На печать будет выведено А= 1, так как в вызове определена локальная в макросе М переменная.
А=1
ВЫЗОВ М (А = 2)
ПЧТ1 А
На печать будет выведено значение А = 2.
Использование меток. Все используемые в макросе метки локализованы внутри этого макроса. Это означает, что передачи управления в макрос и из него запрещены. Разрешены только переходы внутри тела макроса.
Примеры, приведенные ниже, иллюстрируют возможности процессора САП Техтран. Поэтому в них, как правило, отсутствуют операторы постпроцессора и некоторые вспомогательное перемещения, необходимые с точки зрения технолога.
Пример 1. Ниже приводится текст программы обработки простейшего контура, изображенного на рис. 2.115. ДЕТАЛЬ ‘ПРИМЕР 1’#
# ОПРЕДЕЛЕНИЕ ЭЛЕМЕНТОВ КОНТУРА
#
ТЧ0 = -30, 0
ТЧ1 = 0, 0
ПР1 = ТЧ1, 45
ПР2 = ТЧ1, -45
ТЧ2 = ПР1, ТЧ1, 50, УМ ТЧ3 = ПР2,ТЧ1, 50,УМ
ПР3 = ТЧ0, ПЕРП, ПР1
КР1 = ТЧ1, ТЧ2, ТЧЗ
КР2 = УМ, ПР1, УМ, ПР2, РАДИУС, 10
КР3 = УМ, ПР1, ХМ, ВНУТРИ, КР1, 10
КР4 = УМ, ПР2, ХБ, ВИУТРИ, КР1, 10
#
ИНСТР 6 # ДИАМЕТР ИНСТРУМЕНТА
МЕТОД ЛИНКРУГ # МЕТОД ИНТЕРПОЛЯЦИИ
ИНСТПР # ИНСТРУМЕНТ СПРАВА
#
# ОПИСАНИЕ ТРАЕКТОРИИ ДВИЖЕНИЯ ИНСТРУМЕНТА
#
ИЗ ТЧ0 # НАЧАЛО ДВИЖЕНИЯ
ИДИ ДО ПР1 # ПОДХОД К КОНТУРУ
ВПРАВО ПР1 # ОБХОД КОНТУРА
ВПЕРЕД КР3 : КР1 : КР4 : ПР2 : % # СНАРУЖИ ПРОТИВ
КР2 : ПР1 НА ПРЗ # ЧАСОВОЙ СТРЕЛКИ
ВТОЧКУ ТЧ0 # ВОЗВРАТ В ИСХ. ТЧ.
KOHEЦ # КОНЕЦ ПРОГРАММЫ