@ChrisNZ ,
Thanks much for the advice .
I am doing what you have mentioned as Point 7 now :
"So now you have 3 steps: pre-clean, proc import, post-clean instead of one data step."
only now there is a slight formatting issue . Can you please give any suggestion on this . I have pasted my code and output
%let repA=' '; /* replacement character LF */
%let repD=' '; /* replacement character CR */
%let dsnnme="_test_1.csv"; /* use full path of CSV file */
data _null_;
/* RECFM=N reads the file in binary format. The file consists */
/* of a stream of bytes with no record boundaries. SHAREBUFFERS */
/* specifies that the FILE statement and the INFILE statement */
/* share the same buffer. */
infile &dsnnme recfm=n sharebuffers;
file &dsnnme recfm=n;
/* OPEN is a flag variable used to determine if the CR/LF is within */
/* double quotes or not. Retain this value. */
retain open 0;
input a $char1.;
/* If the character is a double quote, set OPEN to its opposite value. */
if a = '"' then
open = ^(open);
/* If the CR or LF is after an open double quote, replace the byte with */
/* the appropriate value. */
if open then
do;
if a = '0D'x then
put &repD;
else if a = '0A'x then
put &repA;
end;
run;
/*STEP 2 ; */
proc import
/* CSV */
datafile="_test_1.csv"
out=test dbms=csv replace;
delimiter=',';
guessingrows=32767;
run;
/* new steps */
data a;
set test ;
keep surveyid REASON_FOR_SCORE varname ;
varname = translate(REASON_FOR_SCORE,"'","’");
run;
Below is the output I get .. There is a space after the " ' " . Is there anything to not have that extra space
... View more