Make your life easier by using an intelligent data structure:
data market_db;
input @1 ID :$4. @6 ID2 :$8. @15 py1 $10. @26 py2 $10. @37 py3 $10. @48 py4 $10.;
infile cards missover ;
cards;
1325 56782322 5872584458 2478569877 8987786548
5489 58654851 8658656767 2795003597
3287 29365474 9831765765 5458456844
8799 89745434 4897568698 3697489567 3265987465
;
data good_numbers;
input ID :$8. confirm_phn :$10.;
infile cards;
cards;
56782322 5872584458
5489 2795003597
89745434 4897568698
2587 5872584458
9876 9831765765
8799 3697489567
;
proc transpose
data=market_db
out=long (
rename=(col1=phn)
where=(phn ne "")
)
;
by id notsorted id2;
var py:;
run;
data market_db_intelligent;
set long;
py_type = substr(_name_,3);
drop _name_;
run;
data want;
set market_db_intelligent;
if _n_ = 1
then do;
length cid $8;
declare hash good (dataset:"good_numbers (rename=(id=cid confirm_phn=phn))");
good.definekey('cid','phn');
good.definedone();
end;
if good.check(key:id2,key:phn) = 0 or good.check(key:id,key:phn) = 0;
drop cid;
run;
You can see how transposing to a long dataset layout makes coding simple.
... View more