我在日期提示符下获取这两个宏: date_min = 01Jan2014和date_max = .....
现在我需要将宏放在这种格式
中'01JAN2014'
我用
尝试了"'"||&datepromptest_min||"'"
但我明白了:
"'"||01Jan2014||"'"
我知道||使用正常变量,但使用&宏这个步骤不起作用......任何人都有想法吗?
答案 0 :(得分:1)
这是因为首先执行与宏变量或宏相关的任何事情,然后执行其他所有操作。由于执行顺序,我们必须始终小心使用宏变量和任何其他代码。根据您的要求使用电话会议,如下所示。
%let datepromptest_min = 01JAN2014;
data _null_;
call symput('datepromptest_min', "'"||"&datepromptest_min"||"'");
run;
%put value of &datepromptest_min;
在日志中显示为
value of '01JAN2014'
答案 1 :(得分:0)
以下是这样做的一种方式:
%let olddate = 01jan2014;
%let newdate = %unquote(%quote(%'&olddate%'));
%unquote
删除%quote
应用的所有宏引用,这反过来又允许您屏蔽单引号并解析它们之间的宏变量。如果不这样做,您可能会在下游代码中使用&newdate
时发现意外行为。
如果双引号可以接受,您也可以这样做:
%let newdate = %sysfunc(quote(&olddate));