2017-02-17 74 views
1

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

回答

2

看起來你不能用那種方式使用%sysfunc; metadata_getattr函數期望將數據返回到數據步驟變量。

this SAS Communities answer解釋,你需要或者使用數據步或者把你的查詢到鈣鎂磷肥功能使用%sysfunc