44 %macro mp_recursivejoin(base_ds=
54 create table &outds as
55 select 0 as level,&parentvar, &childvar
57 where &parentvar=&matchval;
58 %
if &sqlobs.=0 %then %
do;
59 %put NOTE: &sysmacroname: No match
for &parentvar=&matchval;
65 create table _data_ as
67 ,curr.&childvar as &parentvar
68 ,base_ds.&childvar as &childvar
70 left join &base_ds base_ds
71 on curr.&childvar=base_ds.&parentvar
72 where curr.level=%eval(&iter.-1)
73 & curr.&childvar is not null;
74 %local append_ds; %let append_ds=&syslast;
75 %local obs; %let obs=&sqlobs;
76 insert into &outds select distinct * from &append_ds;
77 %
if &mdebug=0 %then drop table &append_ds;;
80 %mp_recursivejoin(iter=%eval(&iter.+1)
81 ,outds=&outds,parentvar=&parentvar