【发布时间】:2015-12-09 18:21:32
【问题描述】:
我正在调试我正在编写的宏,它将根据用户输入将字符串视为数据集名称的前缀或后缀。然后,引用的结果将被馈送到下游的另一个进程中。
因此,如果用户说 Type=1 并提供字符串“data_”,则结果宏变量的输出将为“data_%”。
我已经尝试了以下代码的几个不同的迭代,但不能完全理解它....任何帮助将不胜感激。谢谢。
%let Type=1;
%let TableName=data_;
data _null_;
if &Type=1 then
call symput('qTableName',%unquote(%str(%')(cats(&TableName.,"%"))%str(%')));
else if &Type=2 then
call symput('qTableName',%unquote(%str(%')(cats("%",&TableName.))%str(%')));
run;
%put &qTableName;
【问题讨论】:
-
既然您使用的是数据步骤,为什么还要使用所有这些宏功能?
call symputx('qtablename',cats(symget('TableName'),'_%'))。生成的宏变量中的值是否也是单引号的一部分?