2017-02-01 12 views
0

SASでテキストファイルを作成していますが、テキストファイルの名前に日付を付けてマクロ変数を使用しています。SASは、マクロ変数が含まれている場合にファイル名に不要なスペースを追加します。

私が経験してる問題:

SASは、ファイル名の途中で2つの不要なスペースを追加しています。不要なスペースは、マクロ変数によって生成されたテキストの直前に配置されます

これは私のマクロ変数とは何かが関係していることは確かですが、それ自身で変数にはスペースは含まれません。以下は私のコードです:

proc format; 
    picture dateFormat 
    other = '%Y%0m%0d%0H%0M' (datatype=datetime); 
run; 

data _null_; 
    dateTime=datetime(); 
    call symput('dateTime', put(dateTime,dateFormat.)); 
run; 

%LET FILE = text_text_abc_&dateTime..txt; 

filename out "/location/here/&FILE" termstr=crlf; 

data _null_; set flatfile; 
    /*file content is created in here*/ 
run; 

エクスポートされたファイル名は次のようになります。

NOTE: The file OUT is: 
    Filename=/location/here/text_text_abc_ 201702010855.txt 

それが助け場合、私はSAS E-ガイド7.1を使用しています。

ご協力いただきましてありがとうございます。皆さんありがとう!

答えて

2

画像フォーマットに適切なデフォルトの長さを割り当てる必要があります。 SASはデフォルトのデフォルトの長さ14を適用していますが、12が必要です。

proc format; 
    picture dateFormat (default=12) 
    other = '%Y%0m%0d%0H%0M' (datatype=datetime); 
run; 
+0

これは完全に機能しました。早速のご返事ありがとうございます!私はスタックのオーバーフローによると、別の4分間それを受け入れることはできません:) –

2

使用call symputx()代わりにcall symput()、次いで、SASは自動的にマクロ変数に書き込まれた値から、先頭と末尾の空白を削除します。まれに、マクロ変数の値に先頭または末尾の空白を入れる場合は、call symput()しか使用しないでください。

この小さなプログラムを実行して違いを確認します。

data _null_; 
    str=' XX '; 
    call symput('var1',str); 
    call symputX('var2',str); 
run; 

%put |&var1|; 
%put |&var2|; 
関連する問題