05-05-2016 03:42 PM
05-05-2016 03:53 PM
Use the INTNX function. It's not exactly clear what you want, but maybe this will help you get started.
%macro loop; %do i=1 %to 12; %let date=%sysfunc(intnx(month, %sysfunc(today()), &i.), date9.); %put &date.; %end; %mend; %loop;
05-05-2016 04:07 PM
My best tip: write a program with no macro language, that works for a single month. Then we can worry about how to make it loop over a set of months.
05-05-2016 05:16 PM
My first thing involving any time, date or datetime related issue: Make sure the values are SAS time, date or datetime valued variables.
You don't say what you are going to do with multiple datasets but I bet it compounds doing more looping, macro or otherwise. Formats for the date variables can create very useable groups. Here's a very simple example. The first data step is just to create some dummy data for the proc tabulate to demonstrate creating a report with separate sections for the branch and totals by month.
data example; length account $ 15; do branch = 'A','B','C'; do num = 1001 to 1005; account= cats(branch,num); do date = '01jan2015'd to '15jul2015'd by 20; deposit = round(1000*ranuni(456),.01); output; end; end; end; run; proc tabulate data=example; class branch date; format date monyy7.; var deposit; tables branch, date='Month', Deposit*sum*f=dollar10.2 ; run;
You can get similar results from proc means, freq, summary and report using formats on a single date varible. Also most of the modeling procedures will honor the format for creating levels of modeled variables.