Единственный раз, когда вы захотите это сделать, - это если у вас есть глобальные переменные, которые появятся в программе. Например, нередко иметь специальные программы установки или инициализации для хранения часто используемых значений, особенно при переходе от разработки к производству. Это может упростить обработку при продвижении программы или настроить, если в дальнейшем некоторые вещи изменятся (например, местоположение каталога или имя хоста).
Например, приведенный ниже макрос может изменить некоторые глобальные макропеременные, чтобы они указывали на определенные каталоги, которые различаются между двумя серверами в зависимости от того, где выполняется код.
%macro dev_prod;
%global directory inlib outlib;
%if(&syshostname. = production-server.company.com) %then %do;
%let directory = C:\prodlocation;
%let inlib = C:\prodlib;
%let outlib = C:\outlib;
%end;
%else %if(&syshostname. = dev-server.company.com) %then %do;
%let directory = C:\devlocation;
%let inlib = C:\devlib;
%let outlib = C:\outlib;
%end;
%mend;
%dev_prod;
Как правило, вы хотите использовать локальные макропеременные в макросах, которые выполняют определенные функции. Например, приведенный ниже макрос регрессирует на переменные в наборе данных:
%macro regression(data=, dep=, indep=);
proc reg data=&data.;
model &dep. = &indep.;
run;
%mend;
%regression(data=sashelp.cars, dep=horsepower, indep=msrp);