DATA Step, Macro, Functions and more

Use INTCK in open code

Frequent Contributor
Posts: 136

Use INTCK in open code


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_;
Call Symput ('n',n);
%put &n.;



Super User
Posts: 10,209

Re: Use INTCK in open code

Macro language is text-only, so quotes are not needed around strings:

%let n=%sysfunc(intck(QUARTER,&date_start.,&date_end.)) ;
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Super User
Posts: 6,751

Re: Use INTCK in open code

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. 



Ask a Question
Discussion stats
  • 2 replies
  • 3 in conversation