我在SAS DI作业的预编码中有一个宏,在那里我有以下代码:
%let mtransformid = %str(omsobj:TransformationStep\&TransformID);
%let rc = %sysfunc(metadata_getattr("&mtransformid","Name",transform_name));
%put &transform_name;
但是,我不断收到错误消息,指出在最后一步无法解析&transform_name
的符号引用。我已经尝试在宏中的数据步骤中将调用包装到metadata_getattr
,但这似乎没有帮助:
%let mtransformid = %str(omsobj:TransformationStep\&TransformID);
data _null_;
rc = metadata_getattr("&mtransformid","Name",trans_name);
call symputx("transform_name",trans_name);
%put &transform_name;
run;
上述%put
语句会导致错误消息"显式符号引用TRANSFORM_NAME未解析",除非我已初始化"之前的宏变量,在这种情况下输出其先前的值。
作为参考,&TransformID
是一个宏变量,在运行时为每个转换由SAS DI自动生成。此外,以下是我一直试图用来获取想法的一些相关链接:
非常感谢任何帮助!
答案 0 :(得分:2)
看起来你不能那样使用%sysfunc
; metadata_getattr
函数希望将数据返回到数据步变量。
如this SAS Communities answer中所述,您需要使用数据步骤或将查询放入FCMP函数以使用%sysfunc
。