2015-09-23 2 views
0

Я хочу, чтобы что-то означало в следующем выражении строки sas: (строка & ls. * "_";) Я знаю, что ls является макропеременной, но что делает точка означает?оператор строки с использованием макропеременной

option pageno=1 nodate center; 
    %let ls=68; 
    %let ps=20; 

proc report data=class2 LS=&ls PS=&ps SPLIT="/" center headline headskip nowd spacing=5 out=outdata1; 

column sex age name height weight notdone; 
define sex/order order=internal descending width=6 LEFT noprint; 
define age/order order=internal width=3 spacing=0 "age" right; 
define name/display width=8 left "name" flow; 
define height/sum width=11 right "height"; 
define weight/sum width=11 right "weight"; 
define notdone/sum format= notdone. width=15 left "status"; 

computer before; 
nd=notdone.sum; 
endcomp; 
compute before _page_/left; 
    line "gender group: " sex $gender.; 
    line &ls.*"_"; 
    line ' '; 
endcomp; 
+0

Точка говорит SAS, что это конец макропеременной. – Reeza

ответ

3

Этот период ограничивает имя имени макропеременной. Часто это необязательно, поскольку SAS распознает конец имени макропеременной, как только увидит символ, который недопустим в имени SAS (например, пробел, точка с запятой). Самое главное, этот период позволяет вам указать SAS конец имени макропеременной, если оно находится в середине строки.

%let mv=var; 
%put &mv.3; 

var3 возвращается в журнал, в то время как &mv3 бы не решить без наличия макропеременная имени mv3 определена.

Также следует понимать, что период разграничения не содержится в разрешенном коде. например:

%let lib=sashelp; 

data cars; 
    set &lib..cars; 
run; 

Набора заявление после решения макропеременной является

set sashelp.cars; 
+0

Я также считаю полезным писать '.', потому что он может обмануть редактора, думая, что вы ссылаетесь на формат, который затем выделяет переменную серого, поэтому ее легче определить :) –

+0

@StuSztukowski Я считаю, что обратное. Я думаю, это вопрос вкуса, но я считаю, что все лишние периоды кажутся мне беспорядочными. Это похоже на добавление большого количества круглых скобок, которые не требуются. –