2016-11-12 101 views
0

我正在爲一個學校作業編寫一個宏,它將把一個航空公司的名稱傳遞給宏,我相信它與字符串和「and」缺少關係,但是它不會運行。請告訴我,我做錯了。在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; 
+0

我固定的,但仍然有錯誤22-322:語法錯誤,需要下列之一:名稱,;,降,NOTSORTED,_ALL_,_CHARACTER_,_CHAR_, _NUMERIC_。 – kahunabee

回答

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;