The following program fix the incorrect input CSV file than contains 7 fields but the 3rd one includes commas: %let invalid=3; %let total=7; data _null_; length record $200 newrecord $200; infile datalines ; input; record= _infile_; from=findc(record,','); do i=2 to &Invalid-1; from=findc(record,',',from+1); end; to=findc(record,',','B'); do i=&invalid+1 to &total-1; to=findc(substr(record,1,to-1),',','B'); end; newrecord=cats(substr(record,1,from),'"',substr(record,from+1,to-from-1),'"',substr(record,to)); put newrecord; datalines; 12,125,JOHN TAYLOR,NC,48,1,XYZ 22,7897,BROWN, PETER,MA,62,2,ZZY 333,1740,PETER WHITE,NY,77.2,1,XYZ 555,45,JUAN, MARIA, LUIS,XX,18,,BBB ; RUN; LOG: 653 %let invalid=3; 654 %let total=7; 655 656 data _null_; 657 length record $200 newrecord $200; 658 infile datalines ; 659 input; 660 record= _infile_; 661 from=findc(record,','); 662 do i=2 to &Invalid-1; 663 from=findc(record,',',from+1); 664 end; 665 to=findc(record,',','B'); 666 do i=&invalid+1 to &total-1; 667 to=findc(substr(record,1,to-1),',','B'); 668 end; 669 newrecord=cats(substr(record,1,from),'"',substr(record,from+1,to-from-1),'"',substr(record,to)); 670 put newrecord; 671 datalines; 12,125,"JOHN TAYLOR",NC,48,1,XYZ 22,7897,"BROWN, PETER",MA,62,2,ZZY 333,1740,"PETER WHITE",NY,77.2,1,XYZ 555,45,"JUAN, MARIA, LUIS",XX,18,,BBB NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds 676 ; 677 RUN; CTorres
... View more