全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1664 4
2010-10-22
我需要写一段程序,对每个月的每个天进行一次循环,但是每个月的天数有变化,于是出现了下面的问题:
%macro aa;
  %do month=1 %to 12;
     %do day=1 %to 每个月的天数(28、30、31天);
     ……
     %end;
%end;
%mend ;

%aa;

请教大家,不知如何写这个循环?谢谢了
二维码

扫码加我 拉你入群

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

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

全部回复
2010-10-22 16:51:19
建议你确定好年份吧
年份不同天数不一样
用日期的DATDIF函数
在MONTH这层循环里面,定义一个变量对MONTH计数的
MDY确定好日期
DATDIF计算差值作为内循环的TO 终止
这样外循环一次,MONTH加了一个1,然后组件新的日期计算DAYS值
二维码

扫码加我 拉你入群

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

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

2010-10-22 16:57:51
假如是2010年:

%macro aa;

%let year=2010;

  %do month=1 %to 12;
      %if %sysfunc(index(%str( 1 3 5 7 8 10 12 ), %str( &month ))) %then %let days=31;
      %else %if %sysfunc(index(%str( 4 6 9 11 ) , %str( &month ))) %then %let days=30;
       %else %let days=%eval(%sysfunc(mdy(%eval(&month+1),1,&year))-%sysfunc(mdy(&month,1,&year)));

      %put Month &month has &days days!!;

     %do day=1 %to &days;
         
     %end;
%end;
%mend ;

%aa
二维码

扫码加我 拉你入群

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

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

2010-10-22 17:16:39
复制代码
也需要一个年,和pobel的差不多
我的疑问是,这个和直接做年头到年尾的循环有什么区别?在月底有特殊动作还是别的什么的?
二维码

扫码加我 拉你入群

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

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

2010-10-23 03:51:33
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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