DATA WORK.FILE1; INFILE CARDS DLM=' '; ATTRIB account LENGTH=$8 account_amount LENGTH=8 ; INPUT account account_amount; DATALINES4; 12345678 4.50 88888888 5.50 ;;;; RUN; DATA WORK.FILE2; INFILE CARDS DLM=' '; ATTRIB policy LENGTH=$8 customer LENGTH=$8 amount LENGTH=8 ; INPUT policy customer amount; DATALINES4; 12345678 98765432 4.50 98765432 12345678 4.30 99999999 11111111 4.50 ;;;; RUN; DATA WORK.RECORDS1(DROP=account_amount) WORK.RECORDS2 WORK.RECORDS4(DROP=account_amount) ; SET WORK.FILE2 END=_done; RETAIN _one 1 _ks 0; DROP _one _ks; IF _N_=1 THEN DO; IF 0 THEN SET WORK.FILE1; DCL Hash _h(DATASET:'WORK.FILE1', KEYSUM: '_ks', SUMINC: '_one'); _h.defineKey('account'); _h.defineData('account', 'account_amount'); _h.defineDone(); DROP account; END; IF _h.Find(KEY:policy) = 0 THEN DO; IF amount = account_amount THEN OUTPUT WORK.RECORDS1; ELSE OUTPUT WORK.RECORDS2; END; ELSE IF _h.Find(KEY:customer) = 0 THEN DO; IF amount = account_amount THEN OUTPUT WORK.RECORDS1; ELSE OUTPUT WORK.RECORDS2; END; ELSE OUTPUT WORK.RECORDS4; IF _done THEN _h.Output(DATASET: 'WORK.RECORDS3(WHERE=(_ks=0))'); RUN;
... View more