Wenn Sie eine Makrovariable referenzieren, beginnt das & Zeichen eine Makrovariablenreferenz zu beginnen. Der Makroprozessor muss auch das Ende der Makrovariablenreferenz bestimmen.
In den meisten Fällen wird die Makroreferenz entweder durch Leerzeichen oder ein Semikolon beendet.
38 %let x=Hello;
39
40 %put &x; *semicolon ends the reference;
Hello
41
42 %put &x World; *white space ends the reference;
Hello World
Makrovariablennamen können aus Buchstaben, Zahlen und Unterstrichen bestehen. Jedes Symbol, das nicht Teil einer Makrovariablen sein kann, beendet eine Referenz. Zum Beispiel kann ein Fragezeichen:
44 %put &x?; *Question mark ends the reference;
Hello?
Nun nehmen wir Sie die Zeichenfolge Hello World, ohne Leerzeichen zwischen Hallo und Welt erzeugen möchten:
46 %put &xWorld;
WARNING: Apparent symbolic reference XWORLD not resolved.
&xWorld
, die nicht funktionierten. Der Makroprozessor hat eine Referenz auf eine Makrovariable namens xWorld gesehen, und es gibt keine solche Makrovariable. Also müssen wir dem Makroprozessor mitteilen, dass die Referenz der Makrovariablen nach dem x endet. Wir können eine Periode nach dem x hinzufügen, um zu sagen, dass "die Makrovariablen-Referenz hier endet".
47 %put &x.World;
HelloWorld
Beachten Sie, dass wichtig ist, die Zeit, die wir nicht im Text in das Protokoll geschrieben eingegeben wird gezeigt. Der Makroprozessor "isst" den Zeitraum, wenn er ihn als Ende der Makrovariablenreferenz verwendet.
Das bedeutet, dass in Fällen, in denen Sie nach einer Makrovariablenreferenz eine Periode haben möchten, Sie zwei Perioden eingeben müssen. Der erste wird vom Makroprozessor gegessen. Das übliche Beispiel hierfür ist mit einem libref:
48 %let mylib=sashelp;
49
50 proc print data=&mylib.class;run;
ERROR: File WORK.SASHELPCLASS.DATA does not exist.
NOTE: The SAS System stopped processing this step because of errors.
51
52 proc print data=&mylib..class;run;
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
Einige Leute möchten immer Perioden verwenden, nachdem Makrovariablenreferenzen, als Programmierstil.Persönlich verwende ich nur den Zeitraum, wenn es notwendig ist, das Ende einer Makrovariablenreferenz anzugeben.
Beachten Sie, dass dies Makrovariable Referenzen sind. Um auf eine Variable zu verweisen, verwenden Sie einfach ihren Namen. – Tom