2016-05-18 10 views
1

Ich habe über eine Reihe von SAS Code kommen, die wie das heute aussieht:Was bedeutet `% *;` in SAS?

%*let var1=apple; 

was bedeutet das? (Ist es ein Kommentar? Oder ist es ein Makro? Warum das % Zeichen?)

+0

die Aestricks (*) scheint ein Tippfehler zu sein, das '%' zuvor wird benötigt, um Valriable zu deklarieren, die nicht Teil eines Datensatzes ist. –

+1

Das * ist kein Tippfehler - und wie sich aus der Antwort unten ergibt, ist diese Codezeile nur ein Kommentar. – Atlas7

Antwort

3

Macro comments, erstellt von einem % wie in der Frage ein normalen Kommentar Sternchen vorangestellt, sind vom regelmäßigen Kommentaren auf subtile Weise anders.

Ein regulärer Kommentar, *something;, wird in einem Makro vom Makro-Tokenizer und der Makro-Funktion verarbeitet. 99% der Zeit spielt das keine Rolle; In bestimmten Fällen ist dies jedoch ein Problem.

Zum Beispiel, wenn Sie Makro Syntax kommentieren wollen, müssen Sie den Makro-Kommentar verwenden, sonst dauert es noch Wirkung:

%macro macvar_Test; 
    %let macvar=ORIGINAL; 
    *%let macvar=COMMENT; 
    %*%let macvar=MACRO COMMENT; 
    %put &=macvar; 
%mend macvar_Test; 

%macvar_Test; 

Beachten Sie, dass &macvarCOMMENT enthält - auch wenn diese Zeile kommentiert zu sein scheint aus.

Makrokommentare werden immer noch vom Makro-Tokenizer verarbeitet. Daher können nicht übereinstimmende Angebote immer noch problematisch sein, es sei denn, Sie verwenden /* */ Stilblockkommentare.

+0

Diese offizielle SAS Doktreferenz auf [Makro Kommentar Erklärung] (http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000543665.htm) ist sehr nützlich. Das Beispiel zeigt sehr deutlich den Unterschied zwischen einem Standard-Kommentar und einem% -Befehl. Vielen Dank. – Atlas7

1

Dies ist ein Makro Kommentar.

wie also diese Zeile geschrieben, wird nie

1

ausführen Es ist nur eine andere Art zu kommentieren:

Von http://www.lexjansen.com/pharmasug/2002/proceed/TechTech/tt07.pdf

Neben dient als Multiplikationsoperator ist, wird das Sternchen gefunden verschiedene Orte, um Wechselwirkungen oder Kreuzklassifizierung anzuzeigen (wie die TABLES-Anweisung in PROC FREQ) und in die Anzahl der Zeit angibt s um eine Zeichenkette zu wiederholen (wie in PROC REPORT). Es ist verwendet, um Aussagen allein oder in Verbindung mit dem Schrägstrich (/ * ... * /) oder der Prozent Zeichen (%) zu kommentieren. Das Sternchen erzwingt auch, dass SAS einen Array-Index durch Zählen der Anzahl der Variablen im Array ermittelt. Zwei Sternchen zeigen den Potenzierungsoperator an.

+1

Dies beantwortet die Frage nicht richtig. Dies ist nicht "nur ein weiterer Kommentar", es hat einen Zweck. – Joe