2016-05-31 62 views
2

我已經下載了一個sas數據集和一個格式目錄。這可能是超級基礎,但我似乎無法設置庫,以便我可以使用這些格式,除非使用NOFMTERR選項,否則我無法打開數據集。他們都在同一個窗口文件夾中。請幫忙。如何將數據集與sas中的格式目錄匹配

回答

2

下面的代碼應解釋如何(庫mylib在這種情況下)的FMTSEARCH選項,指定哪個庫中搜索SAS格式添加庫:

/* Display the current fmtsearch option - librefs searched in order for formats */ 
%put %sysfunc(getoption(fmtsearch)); 

libname mylib 'windows-folder'; 

/* Append the library containing the format catalog */ 
options append=(fmtsearch=mylib); 

/* Check the fmtsearch option again */ 
%put %sysfunc(getoption(fmtsearch)); 

只需指向SAS到圖書館,您的格式目錄是,並且這應該解決格式錯誤並允許您顯示格式化的數據。

+0

什麼時候將'options append ='添加到SAS?它在9.1.3中不起作用。 – user667489

+0

@ user667489看起來像9.2,因爲它在9.2的文檔中。 – Joe

+0

這對我來說也是一個新的! – mjsqu

1

對於9.1.3的用戶,您可以直接更改fmtsearch選項。這裏有一個與上面的@ mjsqu代碼最相似的方法(保留已經存在的格式選項)並附加到最​​後。

* Store fmtsearch option value in macro variable; 
%let fmtsearch=%sysfunc(getoption(fmtsearch)); 

*Append NEWLIB to the end (assuming NEWLIB is your library name); 
*Uses SUBSTR to strip off the end parenthesis; 
%let fmtsearch_new = %substr(&fmtsearch,1,%length(&fmtsearch.)-1) NEWLIB); 

*Check new value; 
%put &fmtsearch_new; 

*Set fmtsearch option to new value; 
options fmtsearch=&fmtsearch_new.; 

*Check that option was set; 
%put %sysfunc(getoption(fmtsearch)); 

當然,如果多次運行此操作,它會多次重新附加值;這不是有害的,但可能看起來很奇怪。你可以做一些額外的檢查,看看它是否已經在字符串中,如果是的話,不要重新添加。