呼叫从内部宏观不工作

问题描述:

metadata_getattr我有一个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自动生成。另外,这里是我一直在试图使用从获得灵感一些相关链接:

Link 1

Link 2

任何帮助,不胜感激!

+0

你在第二行缺少一个')' - 在实际的代码中是这样吗? – Joe

+0

此外 - 如果您尝试在数据步骤中包装它,并且想要转到该路线,请在该问题中包含该代码,如果您需要帮助,请! – Joe

+0

嘿@Joe。谢谢指出缺少的括号(不,这不是实际的代码,我做了重新输入而不是复制粘贴的愚蠢的事情)。我将使用该修复程序以及我用于数据步骤方法的代码进行更新,但无法使用。 – Rookatu

看起来你不能用那种方式使用%sysfunc; metadata_getattr函数期望将数据返回到数据步骤变量。

this SAS Communities answer解释,你需要或者使用数据步或者把你的查询到钙镁磷肥功能使用%sysfunc