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