SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
Ronein
Meteorite | Level 14

Hello

I want to calculate number of months between two dates and keep it as a sas macro variable.

Do you know how to do it in open code?

%let start=1612; 
%let end=1803;

%let date_start=%sysfunc(inputn(&start.,yymmn4.));
%let date_end=%sysfunc(inputn(&end.,yymmn4.));

%let n=%sysfunc(intck('QUARTER',&date_start.,&date_end.)) ;

I get warning

WARNING: An argument to the function INTCK referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.

 

I know how to do it in non open code:

Data _null_;
n=intck('QUARTER',&date_start.,&date_end.);
Call Symput ('n',n);
run;
%put &n.;

 

 

2 REPLIES 2
Astounding
PROC Star

If you really want to compute number of months between two dates, I would suggest using MONTH instead of QUARTER as the first argument to INTCK.

 

You would be much safer using four-digit years.  System options can affect whether 1803 is interpreted as 201803 or 191803. 

 

 

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 6046 views
  • 3 likes
  • 3 in conversation