从宏中调用 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 1

Link 2

非常感谢任何帮助!

看起来你不能那样使用 %sysfuncmetadata_getattr 函数需要 return 数据到数据步骤变量。

this SAS Communities answer 中所述,您需要使用数据步骤或将查询放入 FCMP 函数中才能使用 %sysfunc