I HOPE YOU FIND THIS MORE UNDERSTANDABLE * CREATE MAIN TABLE *; DATA TABLE1; INFORMAT CAT $15. VALUE $500.; INFILE DATALINES DLM = '09X'; INPUT CAT $ VALUE $; DATALINES; PAYMENT09XSUNOCO PAY, BEST BUY PAY, SUCESSFUL ; RUN; *UNIFY FORMATS*; DATA TABLE1; RETAIN SOURCE CAT VALUE; SET TABLE1; SOURCE ='EMAIL'; VALUE=COMPRESS(VALUE,'09X'); * ELIMINATE TABS *; VALUE=TRANWRD(VALUE," ,",","); * REMOVE SPACE BETWEEN WORD AND COMMA *; VALUE=TRANWRD(VALUE,", ",","); * REMOVE SPACE BETWEEN COMMA AND WORD *; VALUE=TRANWRD(VALUE,",",", "); * PUT A SPACE BETWEEN COMMA AND WORD *; USER=UPCASE("&SYSUSERID."); * RECORD USERNAME *; TIMESTAMP = DATETIME(); FORMAT TIMESTAMP DATETIME16.; RUN; * TABLE 2 IS IMPORTED BUT FOR TIME REASONS I'LL JUST CREATE IT *; DATA TABLE2; INFORMAT WORD $15.; INFILE DATALINES DSD; DATALINES; INPUT WORD $; SUCESS BEST BUY PAY ; RUN; * PREPARE TABLE 2 *; PROC SORT DATA = TABLE2 NODUPKEY OUT=T2; BY WORD; RUN; DATA T2; RETAIN CAT; SET T2; CAT = "PAYMENT"; RUN; * CREATE TABLE 3 THATS WHERE THE ISSUE HAPPENS *; DATA TABLE3; LENGTH CAT $15 WORD $50. VALUE $500.; IF _N_ = 1 THEN DO; DECLARE HASH 3 (DATASET:'TABLE1'); E.DEFINEKEY('CAT'); E.DEFINEDATA('CAT','VALUE'); E.DEFINEDONE(); CALL MISSING(CAT,VALUE); END; SET T2; DROP RC; RC = E.FIND(); FINDW = FINDW(VALUE,WORD,'I'); FIND = FIND(TRIM(VALUE),TRIM(UPCASE(WORD))); RUN;
... View more