为什么SAS程序的字符串中有space(企业指南8.3)

why there is space in the string at SAS program (enterprise guide 8.3)

我在SAS enterprise guide 8.3中编写代码,发现文件名中有space。任何人都知道为什么?有关详细信息,请参考随附的屏幕截图。 space 在字符“Y_2021”之后;谢谢

year1 由连接运算符用空格填充。更好的做法是使用 catscattcatx 而不是 || 运算符进行串联。这些函数确保不会填充连接的值。

改用下面的代码。

csvfile_temp = cats('Y_', year1, '0101_', dateyyyymmdd, '.csv');

SAS 有两种类型的变量。浮点数和固定长度字符串。

您尚未明确设置任何变量的类型或长度,因此 SAS 必须根据它们在代码中的首次使用方式来决定如何定义它们。由于 TODAY1 使用宽度为 8 的格式获取 PUT() 函数的结果,因此它将被定义为长度 $8。由于其他变量首先被视为在 TODAY1 上运行的函数的结果,因此它们也将被定义为长度 $8.

所以你的第二个和第三个赋值语句中的 TRIM() 函数调用没有做任何事情。它删除尾随空格,然后将值存储回固定长度的变量,这意味着该值再次被填充到 8 个字节。

您可以在使用之前定义变量。

length today1  year1  ;

您还可以使用您确定会导致 SAS 定义所需长度的语句来创建变量。

today = today();
year = put(today,year4.);
dateyyyymmdd = put(today,yymmddn8.);

如果您确实需要连接可能具有短值的变量,请将 TRIM() 函数调用添加到需要修剪值的位置。或者更好的是仍然使用 CATS() 函数而不是连接运算符。