No errors:
27 %macro leapyear;
28 %global lyear_curr lyear_prev;
29
30 %let sysyear_curr = %sysfunc(year("&sysdate"d));
31 %let sysyear_prev = %sysevalf(&sysyear_curr - 1);
32
33 %let days_curr_yr = intck('days',(mdy(1,1,&sysyear_curr)),(mdy(1,1,(&sysyear_curr))),'continuous');
34 %let days_prev_yr = intck('days',(mdy(1,1,&sysyear_prev)),(mdy(1,1,(&sysyear_prev))),'continuous');
35
36 %put &=days_curr_yr &=days_prev_yr;
37 %mend;
38 %leapyear;
DAYS_CURR_YR=intck('days',(mdy(1,1,2020)),(mdy(1,1,(2020))),'continuous')
DAYS_PREV_YR=intck('days',(mdy(1,1,2019)),(mdy(1,1,(2019))),'continuous')
But, as is to be expected, the macro variables do not contain values, but the text you stored in them. Close inspection of the first macro variable shows that it would return a zero when used in a data step.
You can greatly simplify your macro by making use of the fact that dates are counts of days:
%macro leapyear;
%global lyear_curr lyear_prev;
%let lyear_curr = %eval(%sysfunc(intnx(year,%sysfunc(today()),1,b))-%sysfunc(intnx(year,%sysfunc(today()),0,b)));
%let lyear_prev = %eval(%sysfunc(intnx(year,%sysfunc(today()),0,b))-%sysfunc(intnx(year,%sysfunc(today()),-1,b)));
%mend;
%leapyear
%put &lyear_curr;
%put &lyear_prev;
... View more