http://www2.sas.com/proceedings/sugi29/052-29.pdf
[SAS] CALL SYMPUT与CALL SYMPUTX
CALL SYMPUT的功能是可以在DATA step内将值塞到一个macro变量里面。如果这个macro变量已经存在,那这个call就会更新该macro变量的值。
CALL SYMPUT简介
CALL SYMPUT基本用法:
CALL SYMPUT (macro便俩个 , 值);
注:不会自动去除值前后的空白
可以分成常见的两种写法:
(1) 这一行statement可以將值Cookie塞入macro变量Gift里面,值必须给予单引号
call symput (‘Gift’,'Cookie’);
(2) DATA set变量nage的值塞入macro变量a14。这里macro变量名称为a14,存在DATA step的字串变量myvar內
myvar=’a14′;
call symput (myvar,nage);
CALL SYMPUT范例
程序中put(nage,z2.),用put做数字转文字的转换,将nage算好的值变成文字。不用put函数也可以,因为sas会自动帮你转换,但是差别在于对对其余空格让版面很丑。
結果如下↓
CALL SYMPUTX简介
那CALL SYMPUTX基本写法:
CALL SYMPUTX (macro变量 , text , );
上面提到CALL SYMPUT不会把值的前后空白去掉,但是CALL SYMPUTX会自动去点前后空白
而且第三个位置的是选择性的设定,可由3种选择
分別是G(global symbol table)、L(local symbol table)、F(当macro变量已存在与任一个symbol table)
CALL SYMPUT范例
在这个例子,CALL SYMPUTX被放在cards 之前,因此在每次DATA step执行的时候,CALL SYMPUTX就会执行
此程式目的在抓取最后一笔booktitle的值
data newbooks;
run;
%put The value of macro var LASTTTILE is &lasttitle.;
結果
The value of macro var LASTTTILE is
因为资料最后一笔值是「Everday Email Eriquette」,就会被写入put里面。