2012-12-01 70 views
0

我寫了一個SAS宏有點像這樣...在SAS 9.2中,如何清除URL fileref?

%macro (myname=,myurl=); 
    filename myfile URL "&myurl"; 
    data &myname; 
    infile myfile dlm=','; 
    input field1 field2; 
    run; 
%mend; 

它的工作一次,但每當我再次運行它,我得到消息記錄說:

ERROR: At least one file associated with fileref MYFILE is still in use. 
ERROR: Error in FILENAME statement. 

我也得到這些消息如果我嘗試filename myfile CLEARfilename myfile NULL

另外,如果我使用多個URL運行它,則只創建第一個數據集,而其他數據集則是其精確副本。

我無法訪問SAS配置文件。我必須解決這個問題,沒有任何管理權限。

謝謝。

+0

我試過了fileref創建動態的名字和我'錯誤:無效的邏輯name.''錯誤:錯誤在文件名語句中'。這是否意味着SAS不允許將變量用作fileref? – f1r3br4nd

+0

顯然,如果您給您的fileref的名稱超過8個字符,它會被截斷,並且出於某種原因導致SAS按照該名稱查找SYS32文件夾中的物理文件,而不是查看您指定的URL。使用短的,動態生成的fileref名稱可以讓我使用具有多個URL的宏。但是,這是一個醜陋的,醜陋的解決方案,它會拋棄不會消失的filerefs環境,我真的希望有人知道更乾淨的方式來做到這一點。 – f1r3br4nd

+1

我沒有這個代碼的問題(當然,修復一些小的語法問題,但肯定不是你的問題)。它重新運行良好(使用隨機網站)。如果您使用google.com或sas.com等少數網址,它是否適合您?它是特定於您正在使用的文件/服務器/連接的東西嗎?至少,宏中的數據步驟是否像第一次所期望的那樣運行? – Joe

回答

0

我想你可以在你的宏的末尾添加CLEAR文件名:

%macro (myname=,myurl=); 
    filename myfile URL "&myurl"; 
    data &myname; 
    infile myfile dlm=','; 
    input field1 field2; 
    run; 

    filename myfile clear; 
%mend; 
+0

'錯誤:至少有一個與filefile MYFILE關聯的文件仍在使用中。 錯誤:FILENAME語句錯誤.' – f1r3br4nd

+0

是否將MYFILE列入SASAUTOS?請參閱http://support.sas.com/kb/31/540.html。你可以使用%PUT%SYSFUNC(GETOPTION(SASAUTOS))來檢查你的SASAUTOS選項;這將輸出到日誌。 – DavB