我想知道。(点)在以下sas行语句中的含义:(line& ls。*" _&#34 ;;) 我知道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 :(得分:4)
句点分隔宏变量名称的结尾。通常,这并不是必需的,因为只要看到SAS名称中无效的字符(例如空格,分号),SAS就会识别宏变量名称的结尾。最重要的是,句点允许您告诉SAS宏变量名称的结尾,如果它在字符串的中间。
%let mv=var;
%put &mv.3;
将var3
返回给日志,而如果没有定义名为&mv3
的宏变量,mv3
将无法解析。
另外,要意识到分隔周期不包含在已解析的代码中。 e.g:
%let lib=sashelp;
data cars;
set &lib..cars;
run;
解析宏变量后的set语句是
set sashelp.cars;