【问题标题】:using quotes in sas macro filename pipe在 sas 宏文件名管道中使用引号
【发布时间】:2014-09-26 06:55:09
【问题描述】:

我正在使用以下使用文件名管道的宏。但是得到一个错误,说无效的选项名称“dir”等。我怀疑这可能是由于定义文件名和管道时的引号引起的。我猜它认为它是一种选择。我试图删除引号,删除 %bquote 并只使用双引号,但仍然不断收到错误。

我使用的是 Windows,但也将在 Linux 上远程运行它。任何想法将不胜感激。

%macro setprogvar(dateval);
  %global date;

  %let date=&dateval;

  %put &date;
  %put &dateval;

  %let filepath = %bquote("C:\Research\SASDataSets\bulk all data &date");

  filename CDR_Bulk pipe "dir &filepath /a:-d-h-s /b /s";

%mend setprogvar;

%setprogvar(20100331);

***LOG************
1      filename CDR_Bulk pipe "dir &filepath /a:-d-h-s /b /s";
                           ---
                           23
ERROR 23-2: Invalid option name dir.

1   !  filename CDR_Bulk pipe "dir &filepath /a:-d-h-s /b /s";
                                          -
                                          23
ERROR 23-2: Invalid option name a.

【问题讨论】:

    标签: macros sas filenames dir sas-macro


    【解决方案1】:

    尝试将宏中的 %bquote 更改为 %str()。

    %Str() 在宏编译期间工作,应该屏蔽双引号。

    HTH

    【讨论】:

      【解决方案2】:

      文件路径宏变量需要用双引号括起来,因为它包含空格。但是由于你的字符串是双引号的,所以你需要双双引号......

      文件名 CDR_Bulk 管道 "dir ""&filepath"" /a:-d-h-s /b /s";

      【讨论】:

      • 非常感谢克里斯和昆汀!那成功了。现在我正在运行另一个问题,因为我要运行这个 unix...
      • 当然谢谢。当我试图单击向上箭头时,我没有意识到单击刻度线会起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多