This is a brute force method that works for your example. Caveats: Single characters will be eliminated. A check for length could be added to the execute the line with compress only if length is greater than minimum acceptable duplication. Also, case is not taken into account. If AaA is supposed to be removed it won't unless UPCASE is applied. The array size is arbitrary but needs to 1) have enough elements to catch all of your repeat strings, 2) each element needs to long enough to contain the longest repeat string. data Test; input id$ 1-127; array t {100} $ 100 _t1 -_t100; do i=1 to (countw(ID)); t= scan(id,i); if compress(t,first(t)) = '' then t=compress(t,first(t)); end; outstr = catx(' ', of _t1 - _t100); /* this is the hopefully desired output string*/ drop _t: i; cards; AAA VVVVVVVVVVVVVVVVVVVVVV EEEEEEEEEEEEEEEEEEEEEEEEEE RTYUY QWEPO ZZZZZZZZZZZZZ KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK KOOL GONE ; RUN ;
... View more