2015-11-04 54 views
2

我有一系列需要創建SAS數據集的類似文件。我想製作一個宏,該文件名稱作爲參數,可以輸出數據步驟。這在理論上是可能的嗎?宏功能中的數據步驟

我是相當新的SAS和我做了這個簡單的例子:

%macro computeFormAndDomain(formName, domainName); 
    data thing; 
     input Name $; 
     datalines; 
     Bob 
     Jill 
     ; 
    run; 
%mend; 

%computeFormAndDomain("test", "test2"); 
proc print data=thing; 
run; 

然而,這還給錯誤「ERROR:宏COMPUTEFORMANDDOMAIN產生卡(數據線)的數據步,這可能導致不正確的結果 DATA步驟和宏將停止執行。「需要做什麼修正,還是有更好的方法來實現我想要的?

+1

您不能在宏內使用cards語句。還有其他方式可以向宏提供插播數據。這將有助於更多地瞭解你在做什麼。我看到你有一個有兩個參數的宏,但你不使用它們,那麼這裏有什麼故事? –

+0

@data_null_你不應該發佈答案作爲答案;-) –

+0

只是澄清一些事情:這不是一個宏*函數*。這是*宏*。 SAS中不存在宏函數;一個函數式的宏可以做,但是做了完全不同的事情(在開放代碼中返回一個值)。 – Joe

回答

3

按規則,不能在宏中使用CARDS/DATALINES。您需要將該信息作爲已經構建的數據集(或者其他方式)提供給宏。討論這個問題見例如this thread