45%macro mp_recursivejoin(base_ds=
56 create table &outds as
57 select 0 as level,&parentvar, &childvar
59 where &parentvar=&matchval;
60 %
if &sqlobs.=0 %then %
do;
61 %put NOTE: &sysmacroname: No match
for &parentvar=&matchval;
66%
else %
if &iter>&maxiter %then %
return;
71 ,curr.&childvar as &parentvar
72 ,base_ds.&childvar as &childvar
74 left join &base_ds base_ds
75 on curr.&childvar=base_ds.&parentvar
76 where curr.level=%eval(&iter.-1)
77 & curr.&childvar is not
null;
78%local append_ds; %let append_ds=&syslast;
79%local obs; %let obs=&sqlobs;
80insert into &outds select distinct * from &append_ds;
81%
if &mdebug=0 %then drop table &append_ds;;
84 %mp_recursivejoin(iter=%eval(&iter.+1)
85 ,outds=&outds,parentvar=&parentvar
91%mend mp_recursivejoin;