在程序中使用提示日期值

Using Prompt date value in a program

我正在尝试 运行 一个在企业指南中提示输入日期的程序。我已经配置了提示,当我 运行 程序时它会出现。在程序日志的顶部,我得到以下行,这些行似乎显示正确填充提示的宏值:

7          %LET Processing_Month_end = 30Nov2015;
8          %LET Processing_Month = 01Nov2015;
9          %LET Processing_Month_label = November 2015;

我的问题是稍后如何在我的程序中使用这些宏值作为日期。如果我尝试一个简单的数据步骤:

data dates;
  refDate = &Processing_Month;
run;

我收到以下错误:

24         GOPTIONS ACCESSIBLE;
25         data dates;
26           refDate = &Processing_Month;
NOTE: Line generated by the macro variable "PROCESSING_MONTH".
26          01Nov2015
              _______
              22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, IN, 
              LE, LT, MAX, MIN, NE, NG, NL, NOTIN, OR, ^=, |, ||, ~=.  

27         run;

如果我尝试使用输入将值格式化为日期:

data dates;
  refDate = input(&Processing_Month, date9.);
run;

我遇到了类似的错误:

24         GOPTIONS ACCESSIBLE;
25         data dates;
26           refDate = input(&Processing_Month, date9.);
NOTE: Line generated by the macro variable "PROCESSING_MONTH".
26         01Nov2015
             _______
             22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, IN, 
              LE, LT, MAX, MIN, NE, NG, NL, NOTIN, OR, ^=, |, ||, ~=.  

27         run;

如果我尝试将宏值包装在日期文字中:

data dates;
  refDate = '&Processing_Month'd;
run; 

错误:

24         GOPTIONS ACCESSIBLE;
25         data dates;
26           refDate = '&Processing_Month'd;
                       ____________________
                       77
ERROR: Invalid date/time/datetime constant '&Processing_Month'd.
ERROR 77-185: Invalid number conversion on '&Processing_Month'd.

27         run;

我需要将什么语法或函数与此提示宏变量一起使用才能使其用作 sas 日期?

你快到了。日期文字是正确的答案,除了你遗漏了一件事:'&mvar.' 不会解析,只有 "&mvar." 会解析。所以切换到双引号和尾随 d,你会是对的。

data dates;
  refdate = "&processing_month."d;
run;