2016-08-04 43 views
1

我有兩個不同的SAS平臺,我在每個平臺上運行一個宏來創建報告。用戶可以定義一個自動宏變量嗎?

我用

%include "&MACRO_Path.";

我想要的是創建一個自動變量「MACRO_PATH」,其中包含文件的位置是什麼。所以當我開始我的SAS會話時,我不需要在該MACRO_PATH變量中定義文件位置。

我知道一種方法是我可以在包含代碼行的位置創建自動執行文件,但只是想知道是否可以創建自動宏變量。 我也知道自動宏變量是由宏處理器創建的變量。

但是有沒有解決的辦法?

+0

我不確定我是否理解「自動宏變量」的含義 - 您似乎知道autoexec選項。你能詳細說明嗎? – Therkel

+0

你如何運行SAS?這是DM SAS(「桌面」SAS)還是通過企業指南或SAS Studio或文本編輯器或其他? – Joe

+0

@Joe我正在使用SAS企業指南。 – user2676132

回答

4

如果您只有兩臺主機,並且您知道它們是哪一臺,那麼您可能可以使用SYSSCP或SYSHOSTNAME。例如,如果一個是Windows主機,另一個是Unix主機,則可以這樣做。

%let macro_path=%sysfunc(ifc(&sysscp=WIN,c:\mymacros,~/mymacros)); 
+0

好的建議。我也認爲將它放在autoexec.sas文件中的適當位置。這樣,如果主機名更改,則不需要更新500個不同的SAS文件,這些文件都包含該行代碼。 –

+0

不錯,我不知道ifc函數 –

+0

我認爲這個建議很可能適用於很多SAS程序員,但對於現代開發實踐來說太多了。多一點工作比隱藏硬編碼路徑更好,特別是在autoexec.sas程序中。 – Joe

0

如果你使用的企業指南,你可以在項目水平通過自動執行流程做到這一點。命名一個過程流程「Autoexec」並選擇在打開項目時自動運行該過程流程的選項。

我通常爲那些有Dev,Test和Prod環境的項目所做的工作,就是將未在版本控制中同步的文件保存在項目目錄中(您需要啓用相對文件路徑在「文件引用」下的「項目屬性」中)。它包含特定於環境的宏變量的值。

然後,該快捷方式存儲在自動執行處理流程中。該項目本身是在版本控制,所以當我同步我的開發變化測試或生產它有正確的本地引用。

相關問題