I don't have time to write the whole process, but to get your started:
data _null_;
set file2;
call execute('data want'||strip(put(_n_,best.))||';
set file1;
if name="'||strip(name)||'" and... then do;
...;
end;
run;');
run;
This will generate a datastep for each row in file2, which will then get executed after the data _null_ is finished. So your effectively using file2 to generate all the code needed. This is an advanced topic however.
... View more