PATHNAME()
和GETOPTION()
函數返回不同的結果SASAUTOS
,這使人懷疑什麼目錄用於AUTOCALL。 SASAUTOS
是否存在兩個不同的「事物」具有相同的名稱?SAS - 如何確定哪些庫位於SASAUTOS
爲了提供一些背景知識,我維護個人實用宏的目錄,其路徑已添加到我的配置文件中。
-SET SASAUTOS (
"!SASROOT\core\sasmacro"
"!SASROOT\aacomp\sasmacro"
"!SASROOT\accelmva\sasmacro"
"!SASROOT\assist\sasmacro"
"!SASROOT\dmscore\sasmacro"
"!SASROOT\ets\sasmacro"
"!SASROOT\gis\sasmacro"
"!SASROOT\graph\sasmacro"
"!SASROOT\hps\sasmacro"
"!SASROOT\iml\sasmacro"
"!SASROOT\or\sasmacro"
"!SASROOT\qc\sasmacro"
"!SASROOT\stat\sasmacro"
"C:\USERS\ME\PERSONAL AUTOCALL"
)
此行爲與預期相同。當我加載SAS時,我可以調用PERSONAL AUTOCALL
目錄中的任何宏。
我也運行一個複雜的過程,需要大量問題特定的宏。這些位於我的PERSONAL AUTOCALL
的單獨目錄中。由於這些宏應該獨立於運行該進程的人而提供,因此它們不包含在配置文件中。相反,我有SAS將目錄從會話中加載到自動調用搜索層次結構中。我通過發表以下聲明來做到這一點。
options mautosource mrecall sasautos = (SASAUTOS, 'Z:\Path\To\COMPLEX PROCESS AUTOCALL');
再次,這表現如預期。當從選項語句中排除第一個參數SASAUTOS
時,可能只調用COMPLEX PROCESS AUTOCALL
宏,反之亦然。
當我監視自動調用搜索層次結構中的哪些目錄時,會出現問題。爲此,我發佈:
%put %sysfunc(pathname(sasautos));
這將返回上面給出的配置文件中給出的精確列表。它缺少COMPLEX PROCESS AUTOCALL
路徑,儘管SASAUTOS=
選項包含它並且這些宏可以被調用。
如果我不是發出
%put %sysfunc(getoption(sasautos));
則返回以下。
(SASAUTOS, "'C:\Path\To\COMPLEX PROCESS AUTOCALL'")
雖然兩個%put
語句的組合提供了我認爲是自動調用庫的完整列表,我在爲什麼兩者都需要一個損失。
PATHNAME()返回一個數據庫的名稱,在這種情況下SASAUTOS
應該已經附加有COMPLEX PROCESS AUTOCALL
,至少在當前會話的上下文內。
GETOPTION()返回SAS系統選項的值。顯然,系統選項與數據庫不同。
不同的返回值的確意味着存在兩個不同的「事物」,一個是圖書館,另一個是選擇?如果是這樣,他們如何互動?鑑於這種意想不到的差異,我怎麼能確定沒有其他目錄正在被搜索?
SAS沒有用於自動創建在所有平臺上SASAUTOS fileref。我必須創建它以確保Unix和Windows環境都相似。也許現在呢? – Tom
@Tom那麼,該頁面是通用的(不是來自操作系統細節),所以 - 也許?不幸的是,我還沒有unix SAS進行測試,但我想SAS/UE在技術上是合格的? – Joe
添加fileref - 整潔的 - 因爲這也應該圍繞着多少值可以是限制/限制得到'insert'ed到SASAUTOS。 –