I'm a regex fan, so here's another approach: * your first example ; data a; input info $1-50; cards; 101 pencils 35 102 parker pensl21 103 dellstudioipod 04 104 dellstudioipod 01 run; * your second example ; data b; input info $1-50; cards; 101 pencils 35 102 parker pens 21 103 apple ipod touch n shuffle 04 104 dell studio ipod 01 run; data want; set a; * or set b ; rx=prxparse("/^(\d+)(\D*)(\d+)$/o"); rc=prxmatch(rx,trim(info)); prid=input(prxposn(rx,1,info),best.); prname=prxposn(rx,2,info); prqty=input(prxposn(rx,3,info),best.); run; This will assign: 1) prid = beginning of line, all digits up to 2) prname = all non-digits, up to 3) prqty = all digits at the end of line
... View more