全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5865 3
2013-12-09
小白欲用宏实现日期的循环输出,代码如下:
%macro dateira(date_begin,date_end);
%let a= "&date_begin."d;
%let b= "&date_end."d;
%do date = &a %to &b;
put &date;
%end;
%mend;
%dateira(01NOV2013,30DEC2013);
在执行的时候会发生:
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &a
ERROR: %FROM 值(%DO DATE 循环中)无效。


但直接用程序:
data dateira;
format date yymmdd10.;
do date="01nov2013"d to "30dec2013"d;
output;
end;
run;
却不会出现上述的字符类型不匹配的问题。
请教各位大神:
1.发生这种错误的原因是什么?
2.宏代码应如何改正?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-12-9 16:21:39
options mlogic ;
%macro dateira(date_begin,date_end);
%let a= "&date_begin."d;
%put &a;
%let b= "&date_end."d;
%put &b;
%do date = %sysfunc(putn(&a,best.)) %to %sysfunc(putn(&b,best.));
%put &date;
%end;
%mend;
%dateira(01NOV2013,30DEC2013);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-9 16:55:50
非常感谢~从代码来看,小白的时间循环中,没有进行时间的格式规范,但在数据步中,也并未进行时间的格式设定,为啥执行的时候会没问题呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-25 09:59:39
楼主,那么不是时间的宏循环也是提示“ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &maxnum.
ERROR: %TO 值(%DO I 循环中)无效。”这样的错误,也要这样改吗?我的原始数据是数值型的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群