在SAS宏中传递参数

时间:2016-11-12 22:28:24

标签: parameters macros sas

我正在为学校作业编写一个宏,它将航空公司的名称传递给宏,我相信它与字符串和"有关。和'缺少,但它不会运行。请告诉我我做错了什么。

%macro select airine=;

proc means data=mytables.airtraffic noprint ;
where bosflights gt 0 and bospassengers gt 0;
by &airline;
var bosflights bospassengers;
output out=mytables.bosflightsairport sum (bosflights bospassengers)=  flights passengers;`
run;
%mend select;
%select airline = Envoy Air;

1 个答案:

答案 0 :(得分:2)

您错过了宏定义中的()并致电。

%macro select(airline=);
...
%mend select;
%select(airline = Envoy Air);

您是否传递了变量的名称或变量的值?您现在的编写方式是传递两个变量名称ENVOYAIR,用于对AIRTRAFFIC数据集中的数据进行分组。

如果你的意思是用于数据子集的参数值,那么假设你在数据集中有一个名为AIRLINE的变量,那么你可能想要这样的东西作为宏的主体。

proc means data=mytables.airtraffic noprint ;
  where bosflights gt 0 and bospassengers gt 0;
  where also airline="&airline";
  var bosflights bospassengers;
  output out=mytables.bosflightsairport
         sum(bosflights bospassengers)=  flights passengers
  ;`
run;