使用宏变量的行语句

line statement using a macro variable

我想知道以下 sas 行语句中的 .(点)是什么意思:(line &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;

句点分隔宏变量名的结尾。通常,这不是必需的,因为 SAS 会在看到 SAS 名称中的无效字符(例如 space、分号)时立即识别宏变量名称的结尾。最重要的是,句点允许您告诉 SAS 宏变量名称的结尾(如果它位于字符串中间)。

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

returns var3 到日志,而 &mv3 如果没有定义名为 mv3 的宏变量将无法解析。

另请注意,已解析的代码中未包含定界句点。例如:

%let lib=sashelp;

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

解析宏变量后的set语句为

  set sashelp.cars;