It's Regular Expressions to the rescue!
[pre]
data _null_;
infile datalines;
retain r;
if _n_ = 1 then
r = prxparse("/^0*(.*)$/");
input address $80.;
if prxmatch(r, address) then do;
call prxposn(r, 1, start, length);
address = substr(address, start, length);
end;
put address;
datalines;
000000000000000000000000000123 Elm
000000000000000000000000123 Elm St
00000000000000000000000123 Elm St.
00000000000000000000123 Elm Street
000000000000000000000000001050 Elm
0000001234 NE 1st Street, Extended
1111 Twisted Turny Long Avenue, NE
;;;;
[/pre]
produces
[pre]
42 data _null_;
43 infile datalines;
44 retain r;
45 if _n_ = 1 then
46 r = prxparse("/^0*(.*)$/");
47 input address $80.;
48 if prxmatch(r, address) then do;
49 call prxposn(r, 1, start, length);
50 address = substr(address, start, length);
51 end;
52 put address;
53 datalines;
123 Elm
123 Elm St
123 Elm St.
123 Elm Street
1050 Elm
1234 NE 1st Street, Extended
1111 Twisted Turny Long Avenue, NE
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
61 ;;;;
[/pre]
... View more