Just split the original on space and the substring on parentheses.
%let catclass = agegrp(ref="40-49") raceth(ref="NH White") maritals(ref="Married") educat(ref="Some College/College Grad") wrkstat(ref="Employed") income(ref=">= $50,000") insure(ref="No") hlthcost(ref="No") doctor(ref="No")
%macro test(list);
%local i var ref ;
%do i = 1 %to %sysfunc(countw(&list,%str( ),q));
%let var = %scan(&catclass,&i,%str( ),q);
%let ref = %scan(&var,2,());
%let var = %scan(&var,1,());
%put &=i &=var &=ref;
%end;
%mend;
Results:
36 %test(&catclass);
I=1 VAR=agegrp REF=ref="40-49"
I=2 VAR=raceth REF=ref="NH White"
I=3 VAR=maritals REF=ref="Married"
I=4 VAR=educat REF=ref="Some College/College Grad"
I=5 VAR=wrkstat REF=ref="Employed"
I=6 VAR=income REF=ref=">= $50,000"
I=7 VAR=insure REF=ref="No"
I=8 VAR=hlthcost REF=ref="No"
I=9 VAR=doctor REF=ref="No"
I=10 VAR=hltstat REF=ref="Excellent/Very Good"
You can add the parentheses back again if you want. Or do another %SCAN() call to remove the REF= part. You could even add a %QSYSFUNC(DEQUOTE()) call to remove the quotes.
... View more