全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4052 8
2020-04-02
本人刚接触SAS不久,有一个关于SAS宏 循环编写的问题求助各位大佬。

我编写了一个宏  
%MRYH(rq=24mar2020, bh=1044)
这个宏我需要按天修改rq这个宏参数:24mar2020、23mar2020、22mar2020........
因为天数太多,想编写一个循环来实现自动替换日期,我看了些参考,摸索了一下写了一个:

%macro A;
%do i = 1 %to 2 %by 1;
%RQQ=intnx("day","24mar2020"d,i);
%MRYH(rq=&RQQ., bh=1044);
%end;
%mend A;

%A

但是一直提示我没有解析宏"RQQ",请问正确的写法是什么,谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2020-4-3 21:42:41
请解释宏变量 RQQ 的含义,是今天的日期吗?
二维码

扫码加我 拉你入群

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

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

2020-4-3 23:06:26
1. 宏变量RQQ的定义要用%let语句;
2. intnx是SAS函数,在宏程序中执行需要加宏函数%sysfunc或%qsysfunc;
3. intnx中的递增值i是宏变量,要改成&i;
4. 宏函数%sysfunc或%qsysfunc中对于字符不用加引号。
所有需要把%RQQ=intnx("day","24mar2020"d,i);这一句改成
%let RQQ=%sysfunc(intnx(day,"24mar2020"d,&i));
二维码

扫码加我 拉你入群

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

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

2020-4-4 11:21:40
whymath 发表于 2020-4-3 21:42
请解释宏变量 RQQ 的含义,是今天的日期吗?
RQQ是我需要替换得日期  %MRYH(rq=24mar2020, bh=1044) 这个宏里面 &rq这个值我需要按天来替换,比如往后推30天得每天日期,循环放入%MRYH这个宏中作为rq得值
二维码

扫码加我 拉你入群

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

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

2020-4-4 11:24:03
extension 发表于 2020-4-3 23:06
1. 宏变量RQQ的定义要用%let语句;
2. intnx是SAS函数,在宏程序中执行需要加宏函数%sysfunc或%qsysfunc; ...
感谢您得回答,学习了!谢谢
二维码

扫码加我 拉你入群

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

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

2020-4-4 11:32:44
fusong0811 发表于 2020-4-4 11:21
RQQ是我需要替换得日期  %MRYH(rq=24mar2020, bh=1044) 这个宏里面 &rq这个值我需要按天来替换,比如往后 ...
您好  还要请教一下  我按照您说得进行了调整如下:
%macro A;
%do i=0 %to 29 %by 1;
%let RQQ=%sysfunc(intnx(day,"01apr2020"d,&i));
%MRYH(rq=&RQQ, bh=1044) ;
%end;
%mend A;

运行以后报错显示为:无效的日期/时间/日期常熟"22006"d,请问这个是什么原因呢?
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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