2016-05-31 23 views
2

sasデータセットとそのフォーマットカタログをダウンロードしました。これはおそらく超基本的ですが、フォーマットを使用できるようにライブラリを設定できないようで、NOFMTERRオプションを使用しない限りデータセットを開くことはできません。それらは同じWindowsフォルダにあります。助けてください。ただ、どこライブラリにSASを指すデータセットを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)); 

答えて

2

次のコードは、ライブラリがSASフォーマットのために検索される指示FMTSEARCHオプションに(この場合はライブラリmylib)ライブラリを追加する方法を説明しなければなりませんフォーマット・カタログがあり、これによりフォーマット・エラーが解決され、フォーマットされたデータを表示できるようになります。

+0

SASに 'options append ='が追加されたのはいつですか? 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)); 

もちろん、これを複数回実行すると値が複数回追加されます。それは有害ではありませんが、奇妙に見えるかもしれません。既に文字列内にあるかどうかを確認するために追加のチェックを行い、そうであれば再追加することはできません。

関連する問題