D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Команды системы (TCL) / create-macro

create-macro

Создает макрос из последней введенной команды TCL

create-macro macro.name {(option}  

Макрос сохраняется в главном словаре и выполняется посредством ввода имени макроса в командной строке TCL.

Если атрибут 1 макроса содержит "m", то при вызове из TCL имя макроса (macro.name) должно указываться в кавычках. При создании макроса командой "create-macro" тип "m" устанавливается по умолчанию.

Макрос помещатся в словарь счета (md) как обычная запись. Если макрос с заданным именем уже существует, то будет выдано соответствующее сообщение. Опция "o" позволяет заместить его.

При вызове макроса все дополнительные параметры, указанные в строке TCL вслед за именем макроса, передаются первой выполняемой команде в макросе и никак не влияют на остальные команды макроса.

В макрос можно поместить любое количество допустимых в TCL команд. Первым значением каждого атрибута должна быть команда TCL. Последующие значения воспринимаются как данные для этой команды.

В D3 макросы можно помещать только в "md" счета.

Опции:

m Эта опция действует по умолчанию, если никакие другие опции не заданы. Создает макрос типа "остановиться и вывести". При вызове макроса содержащаяся в нем команда TCL выводится в командной строке, где ее перед выполнением можно модифицировать. В атрибуте 1 устанавливается "m".
n Создает макрос типа "нон-стоп", т.е. макрос, который выполняется немедленно после вызова без предварительного вывода на экран, содержащейся в нем команды TCL. В атрибуте 1 устанавливается "n".
o Замещает макрос, если такой уже существует.

Примеры:

Предположим, что последней командой в стеке было следующее предложение AQL:

list entity name phone

а следующей командой:

create-macro show.entity (m

Если такой записи еще НЕ существует, то на экране появится следующее сообщение:

show.entity created
(show.entity создан)

Если же макрос "show.entity" уже существует, то на экране появится следующее сообщение:

[415] 'show.entity' exists on file.
('show.entity' существует в файле.)
Выполнение макросов:

Предположим, что вышеуказанный макрос "show.entity" хранится в md. Ниже представлены различные методы, с помощью которых этот макрос можно выполнить:

Первый метод - простое выполнение макроса:

show.entity<return>
list entity name address

Команда "list entity name address" появляется на следующей строке TCL. Курсор находится под символом "l" в слове "list". До выполнения можно изменить любую часть этого предложения. Для модификации команды можно использовать весь набор команд процессора Update.

Нажатие клавиши <return> вызывает выполнение предложения в том виде, как оно указано.

Второй способ - передача параметров из командной строки:

show.entity hdr-supp leg-supp<return>
list entity name address hdr-supp leg-supp

И в этом случае, так как это макрос типа "остановиться и вывести", до выполнения на экран выводится команда TCL с модификаторами "hdr-supp" и "leg-supp", добавленными в конце командной строки.

Еще один пример передачи входных параметров команде:

show.entity with phone "714]" hdr-supp leg-supp<return>
list entity name address with phone "714]" hdr-supp leg-supp

В командной строке TCL можно указать любые элементы, допустимые для первой команды в макросе. Входные параметры передаются только первой действительной команде TCL в макросе.

Модификация макросов

Так как "show.entity" является макросом типа "m", при вызове процессора Update для его модификации идентификатор записи следует заключать в кавычки:

u md "show.entity"<return>
md 'show.entity'  size = 46
01 M
02 list entity name address

Теперь можно использовать полный набор команд процессора Update. В последующие атрибуты можно поместить другие команды TCL. Можно также сменить тип "m" на "n". Это сделает макрос "безостановочным", что означает немедленное выполнение первой команды TCL при вызове макроса. Так как макросы являются выполняемыми, то при использовании команды <ctl>+xr процессора Update макрос будет записан в файл и автоматически выполнен.