2016-11-12 5 views
0

Ich schreibe ein Makro für eine Schulaufgabe, die den Namen einer Fluggesellschaft an das Makro übergeben wird, ich bin sicher, dass es etwas mit Zeichenketten und "und" zu tun hat, aber es wird nicht ausgeführt. Bitte sagen Sie mir, was ich falsch mache.Übergeben von Parametern in einem SAS-Makro

%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

Ich hatte das fest, aber immer noch ERROR 22-322: Syntaxfehler, eine der folgenden Aktionen erwarten: einen Namen,;, DESCENDING, NOTSORTED, _all_, _CHARACTER_, _CHAR_, _NUMERIC_. – kahunabee

Antwort

2

Sie sind die () in Ihrem Makro Definition fehlt und rufen.

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

Gibst du auf den Namen der variablen oder der Wert der Variablen? Wie Sie jetzt geschrieben haben, übergeben Sie zwei Variablen Die Namen ENVOY und AIR, die Sie verwenden möchten, um die Daten im AIRTRAFFIC-Dataset zu gruppieren.

Wenn Sie den Parameterwert für die Untermenge der Daten meinten, dann vorausgesetzt, dass Sie eine Variable namens AIRLINE im Dataset haben, dann möchten Sie wahrscheinlich so etwas wie den Körper Ihres Makros.

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; 
Verwandte Themen