SAS: Вызов одного макроса от другого … Порядка Макроопределений

Вы должны сделать тип TSpace зависимым от типа TProtocol. Один из способов достижения этого был бы следующим:

function getObject<
    TProtocol extends PROTOCOL,
    TSpace extends keyof OBJECT[TProtocol]
>(query: string): OBJECT[TProtocol][TSpace]
6
задан Joe 16 December 2014 в 00:05
поделиться

3 ответа

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

Во-вторых, не имеет значения, где макрос вызывается, пока Вы загрузили его заранее.

Уточнить Вашу проблему: библиотека автоматического вызова является Вашим другом. Если Вы, администратор SAS не позволит Вам помещать свои макросы в библиотеку автоматического вызова, можно добавить автоматический вызов как так:

filename mymacros 'c:\mysas'; 
/*this defines the directory you have stored your macros*/

options sasautos=(sasautos mymacros) mautosource; 
3
ответ дан 17 December 2019 в 00:15
поделиться

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

%macro a;
  %put a;
  %b
%mend a;

%macro b;
  %put b;
  %c
%mend b;

%macro c;
  %put c;
%mend c;

%*-- %a is main --*;
%a
/* on log
a
b
c
*/
3
ответ дан 17 December 2019 в 00:15
поделиться

Необходимо определить макрос, прежде чем это назовут, таким образом, строка с "%A" должна была бы следовать определению макроса A. Порядок других макроопределений не имеет значения, пока они определяются, прежде чем их назовут. Обычно в моих программах я настроил основной макрос как Вы, описывают, затем последняя строка программы называет этот макрос.

Другая опция рассмотреть состоит в том, чтобы создать макро-библиотеку автоматического вызова, которая содержит определения многих макросы. Это работает лучше всего на допускающие повторное использование макросы, так, чтобы Вы не переопределяли их в каждой программе.

1
ответ дан 17 December 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: