Thanks all. I finally got it working for everything (even for my last problem). My solution data work.testje; input var $ 100.; length new_var $ 20; do _j=1 to countw(var,','); _var=scan(var,_j,','); if find(_var,'-') then do; _v1=scan(_var,1,'- '); _v2=scan(_var,2,'- '); do _i=prxchange('s/(\w*\D+)(\d+)/$2/',-1,_v1) to prxchange('s/(\w*\D+)(\d+)/$2/',-1,_v2); _len_new=LENGTH(STRIP(_i)); _len_old=LENGTH(SUBSTR(STRIP(_v1),(LENGTH(STRIP(_v1))-ANYALPHA(STRIP(REVERSE(_v1)))) +2)); _new_i=REPEAT('0',_len_old - _len_new - 1)||STRIP(_i); _turned=REVERSE(STRIP(_v1)); SUBSTR(_turned,1,_len_old)=REVERSE(STRIP(_new_i)); new_var=REVERSE(STRIP(_turned)); output; end; end; else do;new_var=left(_var);output;end; end; cards; G1, G2, G4, X1 -X3, H051-H055, T10,NA03ME1-NA03ME3, 34WE100-34WE103,001-008, 1-10, H0001- H0010
... View more