SAS:保留宏变量分辨率中的前导空格

SAS:保留宏变量分辨率中的前导空格,sas,quoting,Sas,Quoting,我正在使用SAS DDE功能调用Excel命令。我使用的命令采用工作表名称。不幸的是,我正在使用的工作表名称包含前面的空格。通常可以使用%str()处理空格。在这种情况下,引用变得棘手: %let sheet = %str( )Sheet X; filename cmds DDE 'excel|system'; data _null_; file cmds; put '[WORKBOOK.SELECT("&sheet.")]'; run; 这会导致DDE会话出错。图纸名称未按

我正在使用SAS DDE功能调用Excel命令。我使用的命令采用工作表名称。不幸的是,我正在使用的工作表名称包含前面的空格。通常可以使用
%str()
处理空格。在这种情况下,引用变得棘手:

%let sheet = %str( )Sheet X;
filename cmds DDE 'excel|system';

data _null_;
  file cmds;
  put '[WORKBOOK.SELECT("&sheet.")]';
run;
这会导致DDE会话出错。图纸名称未按预期进行解析。我之所以知道这一点,是因为当明确给出图纸时,命令会起作用:

put '[WORKBOOK.SELECT(" Sheet X")]';

如何编写
put
语句,使
%let sheet=%str()sheet X是否正确解决?

问题不在于空格,而在于单引号

这对我来说很好:

  put "[WORKBOOK.SELECT(""&sheet."")]";

您是否尝试过用
%unquote(&sheet)
替换
&sheet