从宏中调用 metadata_getattr 无效
Call to metadata_getattr from within macro not working
我在 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
语句导致错误消息"Apparent symbolic reference TRANSFORM_NAME not resolved",除非我"initialized"之前有宏变量,在这种情况下输出它以前的值。
作为参考,&TransformID
是一个由 SAS DI 为每个转换自动生成的宏变量,因为它是 运行。此外,这里有一些相关链接,我一直在尝试使用这些链接来获取灵感:
Link 2
非常感谢任何帮助!
看起来你不能那样使用 %sysfunc
; metadata_getattr
函数需要 return 数据到数据步骤变量。
如 this SAS Communities answer 中所述,您需要使用数据步骤或将查询放入 FCMP 函数中才能使用 %sysfunc
。
我在 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
语句导致错误消息"Apparent symbolic reference TRANSFORM_NAME not resolved",除非我"initialized"之前有宏变量,在这种情况下输出它以前的值。
作为参考,&TransformID
是一个由 SAS DI 为每个转换自动生成的宏变量,因为它是 运行。此外,这里有一些相关链接,我一直在尝试使用这些链接来获取灵感:
Link 2
非常感谢任何帮助!
看起来你不能那样使用 %sysfunc
; metadata_getattr
函数需要 return 数据到数据步骤变量。
如 this SAS Communities answer 中所述,您需要使用数据步骤或将查询放入 FCMP 函数中才能使用 %sysfunc
。