2016-11-12 14 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

は、私はそれを固定し、それでもERROR 22から322まで持っていた:以下のいずれか期待して、構文エラーを:名前、;、DESCENDING、NOTSORTED、_all_、_CHARACTER_、_CHAR_、 _NUMERIC_。 – kahunabee

答えて

2

。私が間違っているのを教えてください。実行して呼び出すことはありません。

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

あなたは変数の名前で渡していますか変数の値?あなたが今書いた方法は2つの変数を渡していますAIRTRAFFICデータセット内のデータをグループ化するために使用する名前は ENVOYAIRです。

データをサブセット化するために使用するパラメータ値を指定した場合、データセットに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; 
関連する問題