使用宏变量的行语句

时间:2015-09-23 00:57:13

标签: macros sas line let

我想知道。(点)在以下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;

1 个答案:

答案 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;