我在类型为text的SAS DIS作业中有一个参数start_date
,我设置了一个默认值。如果默认值类似于01JAN2015
(没有引号),则引用变量,如
input("&start_date",date9.)
工作正常。但是,如果我给它默认值put(today(),date9.)
,那么参数保存的值是指令字符串,而不是指令应该评估的字符串。因此,对参数的引用不符合要求。
我尝试过使用%EVAL
和EVALUATE
,但所有这些功能似乎都是为了评估表示为字符串的算术表达式而设计的。有没有办法让这个表达式得到评估,或者开始正确编码?
(仅供参考,我使用文本参数而不是日期参数的原因是,当我尝试循环参数化作业时,尝试使用日期参数对我来说不起作用,这是我的意图。)
非常感激。
答案 0 :(得分:3)
您需要使用%sysfunc
与宏处理器一起执行数据步骤功能。这也消除了对put()
函数的需要,因为%sysfunc允许指定返回值的格式:
%let start_date=%sysfunc(today(),date9.);
%put &start_date;
或者您可以使用数据步骤来评估值:
data _null_;
call symput('start_date',put(&control_start_date,date9.));
run;
%put &start_date;