|
|
地板

楼主 |
发表于 2009-7-23 17:48:05
|
只看该作者
Re: <求助>Macro
谢谢MyLoveSas的问题!
以前遇到这种问题,看log总看不出到底错在哪里,现在终于知道了.以下是我看帮助自己攒的,要是不对请指正,谢谢.
[code:2kjvswv1]%let val = aaa; /* 宏变量val赋值aaa */
%let testval = %str(%'&val%'); /* 宏变量testval赋值为'&val'(使用%str()在编译阶段屏蔽&和',其中%'是在%str()中屏蔽'的特殊写法) */
/* 在data步编译之前解除对宏变量&testval的屏蔽 */
data _null_;
/* 为数据集字符变量val赋值,期望的语句为:val='aaa'; */
/*val = &testval; 错误,在data步编译前未解除宏变量testval的屏蔽 */
val = %unquote(&testval); /* 正确,使用%unquote()在data步编译前解除了屏蔽 */
put 'VAL =' val; /* 在log打印数据集变量val的值 */
run;
/* 下面是去掉引号问题的简化版本 */
/*
%let val = aaa;
%let testval = %str(&val);
data work.temp;
val = "%unquote(&testval)";
run;
*/[/code:2kjvswv1] |
|