SAS:在宏变量解析中保留前导 space

SAS: Preserve leading space in macro variable resolution

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

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

data _null_;
  file cmds;
  put '[WORKBOOK.SELECT("&sheet.")]';
run;

这会导致 DDE 会话出错。 sheet 名称未按预期解析。我知道这一点是因为当 sheet 明确给出时该命令有效:

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

如何编写 put 语句以使 %let sheet = %str( )Sheet X; 正确解析?

问题不在于 space,而在于单引号。

这对我来说很好用:

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