Folks, I have a macro which I'm using to convert a value into a band however I'm running into problems. Can anyone see what is going wrong? %macro bands (yr);
data banded_&yr;
format claimed_band_&yr unclaimed_band_&yr $100.;
set cohort_&yr;
if claimed_&yr=0 or claimed_&yr=. then claimed_band_&yr='Zero';
else if claimed_&yr >=1 and claimed_&yr <=25000 then claimed_band_&yr='1 to 25,000';
else if claimed_&yr >=25001 and claimed_&yr <=50000 then claimed_band_&yr='25,001 to 50,000';
else if claimed_&yr >=50001 and claimed_&yr <=750000 then claimed_band_&yr='50,001 to 75,000';
else if claimed_&yr >=75001 and claimed_&yr <=100000 then claimed_band_&yr='75,001 to 100,000';
else if claimed_&yr >=100001 and claimed_&yr <=200000 then claimed_band_&yr='100,001 to 200,000';
else if claimed_&yr >=200001 and claimed_&yr <=300000 then claimed_band_&yr='200,001 to 300,000';
else if claimed_&yr >=300001 and claimed_&yr <=400000 then claimed_band_&yr='300,001 to 400,000';
else if claimed_&yr >=400001 and claimed_&yr <=500000 then claimed_band_&yr='400,001 to 500,000';
else if claimed_&yr >=500001 and claimed_&yr <=600000 then claimed_band_&yr='500,001 to 600,000';
else if claimed_&yr >=600001 and claimed_&yr <=700000 then claimed_band_&yr='600,001 to 700,000';
else if claimed_&yr >=700001 and claimed_&yr <=800000 then claimed_band_&yr='700,001 to 800,000';
else if claimed_&yr >=800001 and claimed_&yr <=900000 then claimed_band_&yr='800,001 to 900,000';
else if claimed_&yr >=900001 and claimed_&yr <=1000000 then claimed_band_&yr='900,001 to 1,000,000';
else if claimed_&yr >=1000001 and claimed_&yr <=5000000 then claimed_band_&yr='1,000,001 to 5,000,000';
else if claimed_&yr >=5000001 and claimed_&yr <=10000000 then claimed_band_&yr='5,000,001 to 10,000,000';
else if claimed_&yr >10000000 then claimed_band_&yr='Greater than 10,000,000';
if unused_&yr=0 or unused_&yr=. then unclaimed_band_&yr='Zero';
else if unused_&yr >=1 and unused_&yr <=25000 then unclaimed_band_&yr='1 to 25,000';
else if unused_&yr >=25001 and unused_&yr <=50000 then unclaimed_band_&yr='25,001 to 50,000';
else if unused_&yr >=50001 and unused_&yr <=750000 then unclaimed_band_&yr='50,001 to 75,000';
else if unused_&yr >=75001 and unused_&yr <=100000 then unclaimed_band_&yr='75,001 to 100,000';
else if unused_&yr >=100001 and unused_&yr <=200000 then unclaimed_band_&yr='100,001 to 200,000';
else if unused_&yr >=200001 and unused_&yr <=300000 then unclaimed_band_&yr='200,001 to 300,000';
else if unused_&yr >=300001 and unused_&yr <=400000 then unclaimed_band_&yr='300,001 to 400,000';
else if unused_&yr >=400001 and unused_&yr <=500000 then unclaimed_band_&yr='400,001 to 500,000';
else if unused_&yr >=500001 and unused_&yr <=600000 then unclaimed_band_&yr='500,001 to 600,000';
else if unused_&yr >=600001 and unused_&yr <=700000 then unclaimed_band_&yr='600,001 to 700,000';
else if unused_&yr >=700001 and unused_&yr <=800000 then unclaimed_band_&yr='700,001 to 800,000';
else if unused_&yr >=800001 and unused_&yr <=900000 then unclaimed_band_&yr='800,001 to 900,000';
else if unused_&yr >=900001 and unused_&yr <=1000000 then unclaimed_band_&yr='900,001 to 1,000,000';
else if unused_&yr >=1000001 and unused_&yr <=5000000 then unclaimed_band_&yr='1,000,001 to 5,000,000';
else if unused_&yr >=5000001 and unused_&yr <=10000000 then unclaimed_band_&yr='5,000,001 to 10,000,000';
else if unused_&yr >10000000 then unclaimed_band_&yr='Greater than 10,000,000';
val=1;
run;
proc summary data=banded_&yr;
class claimed_band_&yr;
var val;
output out=test_&yr
sum=;
run;
%mend bands;
%bands (5);
... View more