SAS - 如何掩盖双引号(例如“”)

时间:2013-07-01 18:00:34

标签: vba sas

我正在运行SAS的VBA程序。这个的SAS代码基本上是这样的:

%let worksheet =&i; *worksheet number;
%let xlsfile = %STR(""C:\Data\Excel Workbook.xlsx"");
%let csvfile = %STR(""C:\Data\CSV File..csv"");


x 'cd "C:\Data\MN2013\Alignment\Data\SAS Programs"';
x "XlsWsToCsv.vbs &xlsfile &worksheet &csvfile";

我需要能够在xlsfile和csvfile中的文件路径的开头和结尾包含两个双引号(即“”),以便VBA程序识别文件路径中的空格并正确运行。

我的问题:

我使用SAS 9.3在SAS Enterprise Guide中运行此功能。在我的日志中,在读入变量定义之后,双引号用红色下划线(通常表示错误),下面的数字为49。没有错误消息,而是绿色,我得到以下注释:

NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS 
         release.  Inserting white space between a quoted string and the succeeding 
         identifier is recommended.

对我来说,这说SAS正在阅读这些双引号。他们在某种程度上只被部分掩盖了。我的VBA程序运行,所以我可以继续这个;但我喜欢干净的错误日志。有没有人有任何关于如何完全掩盖我的xlsfile和csvfile变量的建议?我已经尝试过使用%STR(如上面的例子所示),%BQUOTE,%SUPERQ以及其他一些功能来实现这一目的。

2 个答案:

答案 0 :(得分:3)

那些讨厌的错误消息!你非常接近,但试试这种语法:

%let xlsfile = %STR("")C:\Data\Excel Workbook.xlsx%STR("");
%let csvfile = %STR("")C:\Data\CSV File..csv%STR("");

答案 1 :(得分:2)

双引号内的双引号会解析为单个双引号字符,即......

x """c:\program files\office\excel.exe"" stuff stuff stuff ""stuff"" stuff";

应该工作得很好。不要担心“标识符”消息,这主要是说

"01JAN2013"d 

可能与其他事情有关。你可以在最后一个之后添加一个空格“如果在日志中有这个问题。