在sas宏文件名管道中使用引号

时间:2014-08-03 18:40:04

标签: macros sas filenames dir sas-macro

我正在使用以下使用文件名管道的宏。但是得到一个错误,指出无效的选项名称" 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.

2 个答案:

答案 0 :(得分:1)

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

%Str()在宏编译时工作,应掩盖双引号。

HTH

答案 1 :(得分:1)

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

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