@Reezaand @Astounding Thanks for your comments. Yes, I tried to simplify my syntax and typed it (rather than cutting and pasting). The variable names are not descriptive and quickly become confusing. My actual syntax (with additional comments) follows: data rr_rptsernum; set rr_srutype; length rptsernumA rptsernum1 $15.; /*added length statements as suggested*/ length rptsernum1a rptsernum1b rptsernum2 $10.; length rptsernum3a rptsernum3b RRnum3 $5.; rptsernum = compress(rptsernum,'-)','C'); rptsernumA = tranwrd(rptsernum,' (','/');/*replace ' (' with '/'*/ rptsernum1 = tranwrd(rptsernumA,'XX','999'); rptsernum1a = substr(rptsernum1,1,2); /*retains only initial 2 digits = year*/ rptsernum1b = substr(rptsernum1,3); /*retains everything else (rpt number and extra text)*/ rptsernum2 = scan(rptsernum1b,1,' '); /*deletes everything that follows a space*/ rptsernum2a = anyalpha(rptsernum2); rptsernum2b = anypunct(rptsernum2); rptsernum2c = anydigit(rptsernum2); if rptsernum2a = 0 and rptsernum2b = 0 then rptsernum3a = rptsernum2; else if rptsernum2a gt 0 and rptsernum2b eq 0 then rptsernum3a = substr(rptsernum2,rptsernum2c,rptsernum2a-rptsernum2c); else if rptsernum2a eq 0 and rptsernum2b gt 0 then rptsernum3a = substr(rptsernum2,rptsernum2c,rptsernum2b-rptsernum2c); else if rptsernum2a gt 0 and rptsernum2b gt 0 then rptsernum3a = substr(rptsernum2,rptsernum2c,rptsernum2b-rptsernum2c); if rptsernum2a = 0 and rptsernum2b = 0 then rptsernum3b = ' '; else if rptsernum2a gt 0 and rptsernum2b eq 0 then rptsernum3b = substr(rptsernum2,rptsernum2a,3); else if rptsernum2a eq 0 and rptsernum2b gt 0 then rptsernum3b = substr(rptsernum2,rptsernum2b+1,3); /*added '+1' as suggested*/ else if rptsernum2a gt 0 and rptsernum2b gt 0 then rptsernum3b = substr(rptsernum2,rptsernum2b+1,3); /*added '+1' as suggested*/ RRnum1 = input(rptsernum1a, 4.); RRnum2 = input(rptsernum3a, 4.); RRnum3 = rptsernum3b; run; Including the length statements and adding '+1' to account for the punctuation were both required. The syntax now properly divides the original variable into the required component parts. Thanks so much for your assistance! SM1
... View more