2017-02-01 46 views
0

我創建了一個SAS文本文件,並且在文本文件的名稱中使用了一個帶有日期的宏變量,以使其與其他類似文件不同。當包含宏變量時,SAS向文件名添加不需要的空格

我遇到的問題:

SAS在文件名中增加了兩個不必要的空間。無用的空格直接放在由我的宏變量生成的文本之前

我確定這與我正在使用的宏變量有關,但是變量本身不包含任何空格。下面是我的代碼:

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|;