2016-03-24 12 views
0

ich auch ein Makro mit Hilfe Option zu erstellen Ich versuche wie unten:SAS Makro mit Hilfe Option

%macro now(gg,datas); 

%if &gg=help %then %do 
%put; 
%put %str(hello); 
%goto exit; 
%end; 
proc print data=&datas; run; 
    %mend; 

Also, wenn ich das Makro mit Hilfe rufen

%now(help) 

sollte folgendes

gedruckt werden
hello 

im Protokoll, aber stattdessen tut es nichts. Was ist falsch in diesem Code?

+1

Sie sollten in Erwägung ziehen, anstelle von Positionsparametern Schlüsselwortparameter zu verwenden. Wie geschrieben, um das Makro aufzurufen, ohne den Hilfemodus aufzurufen, müßten Sie '% now (, sashelp.shoes) 'programmieren und das Komma am Anfang notieren, um dem gg-Parameter einen Nullwert zu geben. Dies würde schnell lästig werden, sich daran zu erinnern. Mit Schlüsselwort-Parametern könnten Sie mit '% ow (datas = sashelp.shoes)' aufrufen. Obwohl es mit Positionsparametern definiert ist, können Sie trotzdem mit Schlüsselwortparametern aufrufen. Aber ich denke besser mit Keyword-Parametern zu definieren. – Quentin

Antwort

2

Sie vermissen ein Semikolon nach der %do, und Sie haben auf eine Bezeichnung namens 10 in Ihrer %goto Anweisung verwiesen, die nicht existiert. Diese Fehler verhindern, dass das Makro kompiliert wird. Wenn Sie versuchen, es aufzurufen, führt SAS nichts aus (abgesehen davon, dass eine Warnmeldung im Protokoll generiert wird, sofern Sie diese nicht deaktiviert haben). erwarten

Folgendes sollte, wie Sie arbeiten:

%macro now(gg,datas); 

%if &gg=help %then %do; 
%put; 
%put %str(hello); 
%goto exit; 
%end; 
proc print data=&datas; run; 
%exit: 
    %mend; 

    %now(help) 

würde ich vorschlagen, %return für diese Art der Sache mit eher als %goto - Sie die gleiche Art von Funktionalität zu erhalten, ohne Etiketten definieren zu müssen und so viel zu befürchten der Fluss Ihres Makros.

Verwandte Themen