当包含宏变量时,SAS会向文件名添加不需要的空格

时间:2017-02-01 14:00:59

标签: sas text-files enterprise-guide

我正在使用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电子指南7.1。

任何帮助表示赞赏!谢谢,全部!

2 个答案:

答案 0 :(得分:2)

您需要为图片格式指定适当的默认长度。 SAS正在应用默认默认长度14,但您需要12,例如

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

答案 1 :(得分: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|;