Hello, I am new to using hash and doing most of my learning while troubleshooting old code. The following code has been used for a while, this is a small segment of a much larger piece. If I run the code more than once the variables that start with 'pre' will not be consistent, meaning the code doesn't do the same thing two times in a row. If anyone can look at this and see what the issue is I will be very appreciative. I'm going to keep looking through sas papers and try to find the issue myself as well. I'm not able to add this as a word doc so I added it as a pdf, if you would like it in any other format let me know. I'll also paste it below: Thanks, ********************************************************************************; *** MERGE MIGRATION DATA WITH DISCO AND SEGMENT TABLES ***; ********************************************************************************; DATA WORK.&FILE_TYPE._&START_DATE._2; LENGTH ABB_CORE_SEGMENT ABB_CORE_SEGMENT_2 ABB_CORE_SEGMENT_3 $16 PSU_VIDEO PSU_HSD PSU_DP MDS 3. VIDEO HSD DP ABB_LVL_1 $8; DECLARE HASH SEG(); RC = SEG.DEFINEKEY ('ANLY_SEG_KEY'); RC = SEG.DEFINEDATA ('ABB_CORE_SEGMENT', 'ABB_CORE_SEGMENT_2', 'ABB_CORE_SEGMENT_3', 'ABB_LVL_1', 'PSU_VIDEO', 'PSU_HSD', 'PSU_DP', 'MDS', 'VIDEO', 'HSD', 'DP'); RC = SEG.DEFINEDONE(); DO UNTIL (EOF_SEG); SET TWR0TXV.ANALYSIS_SEGMENT END = EOF_SEG; RC = SEG.REPLACE(); END; DO UNTIL (EOF_UNIVERSE); SET WORK.&FILE_TYPE._&START_DATE._1 END=EOF_UNIVERSE; *PRODUCT HOLDING DETAILS*; ABB_CORE_SEGMENT=''; ABB_CORE_SEGMENT_2=''; ABB_CORE_SEGMENT_3=''; ABB_LVL_1=''; PSU_VIDEO=.; PSU_HSD=.; PSU_DP=.; MDS=.; VIDEO=''; HSD=''; DP=''; RC=SEG.FIND(); /* POST IS USED IN 1ST PASS FOR RC-AD, PRE IS USED FOR RD-DD */ IF SEG.FIND()=0 THEN POST_SGMNT_MATCH = 'Y'; ELSE POST_SGMNT_MATCH = 'N'; RENAME ABB_CORE_SEGMENT = POST_ABB_CORE_SEGMENT ABB_CORE_SEGMENT_2 = POST_ABB_CORE_SEGMENT_2 ABB_CORE_SEGMENT_3 = POST_ABB_CORE_SEGMENT_3 ABB_LVL_1 = POST_ABB_LVL_1 PSU_VIDEO = POST_PSU_VIDEO PSU_HSD = POST_PSU_HSD PSU_DP = POST_PSU_DP MDS = POST_MDS VIDEO = POST_VIDEO HSD = POST_HSD DP = POST_DP; OUTPUT; END; STOP; RUN; DATA WORK.&FILE_TYPE._POST_TRANSACTIONS_2_&END_DATE.; LENGTH ABB_CORE_SEGMENT ABB_CORE_SEGMENT_2 ABB_CORE_SEGMENT_3 $16 PSU_VIDEO PSU_HSD PSU_DP MDS 3. VIDEO HSD DP ABB_LVL_1 $8; DECLARE HASH SEG(); RC = SEG.DEFINEKEY ('ANLY_SEG_KEY'); RC = SEG.DEFINEDATA ('ABB_CORE_SEGMENT', 'ABB_CORE_SEGMENT_2', 'ABB_CORE_SEGMENT_3', 'ABB_LVL_1', 'PSU_VIDEO', 'PSU_HSD', 'PSU_DP', 'MDS', 'VIDEO', 'HSD', 'DP'); RC = SEG.DEFINEDONE(); DO UNTIL (EOF_SEG); SET TWR0TXV.ANALYSIS_SEGMENT END = EOF_SEG; RC = SEG.REPLACE(); END; DO UNTIL (EOF_UNIVERSE); SET WORK.&FILE_TYPE._PRE_POST_TRANSACTIONS_&END_DATE. END=EOF_UNIVERSE; *PRODUCT HOLDING DETAILS*; ABB_CORE_SEGMENT=''; ABB_CORE_SEGMENT_2=''; ABB_CORE_SEGMENT_3=''; ABB_LVL_1=''; PSU_VIDEO=.; PSU_HSD=.; PSU_DP=.; MDS=.; VIDEO=''; HSD=''; DP=''; RC=SEG.FIND(); /* PRE IS USED IN 2ND PASS FOR RC-AD, POST IS USED FOR RD-DD */ IF SEG.FIND()=0 THEN PRE_SGMNT_MATCH = 'Y'; ELSE PRE_SGMNT_MATCH = 'N'; RENAME ABB_CORE_SEGMENT = PRE_ABB_CORE_SEGMENT ABB_CORE_SEGMENT_2 = PRE_ABB_CORE_SEGMENT_2 ABB_CORE_SEGMENT_3 = PRE_ABB_CORE_SEGMENT_3 ABB_LVL_1 = PRE_ABB_LVL_1 PSU_VIDEO = PRE_PSU_VIDEO PSU_HSD = PRE_PSU_HSD PSU_DP = PRE_PSU_DP MDS = PRE_MDS VIDEO = PRE_VIDEO HSD = PRE_HSD DP = PRE_DP; OUTPUT; END; STOP; RUN;
... View more