最近项目没有那么紧张了,所以准备了解一些让日常工作更为便捷的一些函数或是macro.博采众家之长,在此仅做记录。有任何引用我都会在末尾附上原网址。尊重版权人人有责。
*COMPBL
去除字符串中多余的空格,也就是将连续的多个空格转化为1个空格。
如:
data test;
string='ab cxy z pq '
;
data a;
set test;
x=compbl(string);
run;
输出为:ab cxy z pq,多个空格变成一个空格。
与compress的区别:
compress(string)输出为abcxyzpq,去掉所有的空格,当然还能去掉指定的字符;
而compbl是将多个空格变成一个,对于单个空格没有影响。
*DEQUOTE
去除字符串中的配对引号,且该字符串是以该引号开始的,并且去掉与之配对的后引号之后的全部内容。
啰嗦了,举个例子:y=dequote(x);
"我是'我'的"我"" 我是'我'的
"你"是你的'你' 你
他是他的"他" 他是他的"他"
她们还是她们 她们还是她们
'它是'它'的它' 它是
Source from:SAS之COMPBL、DEQUOTE函数 - Sunny Qiang - 博客园 (cnblogs.com)
宏%PUT
此宏语句将文本或宏变量信息写入SAS日志。 在下面的例子中,变量“today”的值被写入程序日志。
data _null_;
CALL SYMPUT ('today',
TRIM(PUT("&sysdate"d,worddate22.)));
run;
%put &today;
宏%RETURN
当某个条件的计算结果为真时,执行该宏将导致当前执行的宏正常终止。 在下面的示例中,当变量“val”的值变为10时,宏终止其它连接。
%macro check_condition(val);
%if &val = 10 %then %return;
data p;
x=34.2;
run;
%mend check_condition;
%check_condition(11) ;
宏%END
此宏定义包含一个%DO%WHILE循环,根据需要以%END语句结束。 在下面的示例中,名为test的宏采用用户输入,并使用此输入值运行DO循环。 DO循环的结束通过%end语句实现,而宏的结束通过%mend语句实现。
%macro test(finish);
%let i=1;
%do %while (&i <&finish);
%put the value of i is &i;
%let i=%eval(&i+1);
%end;
%mend test;
%test(5)
Source from:SAS宏_w3cschool