Hi guys,
I'm here again. Basically I'm having hard time debugging why my code doesn't work.
I would like to open an external file and capture some string and save the result it in a data step variable. Here is my code:
%let sPath = root/documents/files;
data work._output;
set work._input;
length lname, fname, path $512. filename $32.;
if filename ne "" then do;
path = symget('sPath');
f2r = catx("/", path, filename);
infile a filevar=f2r;
input @'Firstname:' fname $;
input @'Lastname:' lname $;
output work._output;
end;
run;
Basically, I have files in folder root/documents/files which are:
cus_01.txt
cus_02.txt
cus_03.txt
Each file has these kinds of values, please note that these text files have free format and may contain other character but the fixed part is that there would be label before the value (i.e. Firstname: 'Lonzo')
cus_01.txt:
ID: '100001'
Firstname: 'Lonzo'
Lastname: 'Ball'
cus_02.txt:
<DUMMY OR BLANK TEXT FILE THAT DOES NOT CONTAIN THE FIRSTNAME AND LASTNAME KEYWORD TO BE SEARCHED>
cus_03.txt:
ID: '100002'
Firstname: 'Lebron'
Lastname: 'James'
My work._input data set would look like this
filename
cus_01.txt
cus_02.txt
cus_03.txt
MY PROBLEM:
First iteration of the data step will read the first obs which contains the filename = cus_01.txt. Since filename is not equal to blank, it will now concatenate the path and the text file so for this obs f2r would look like this:
root/documents/files/cus_01.txt
Then INFILE will open the cus_01.txt and will search for string Firstname: and Lastname: and will put the result to data step variable fname and lname respectively.
So for obs 1 this will be the work._output:
fname lname filename
Lonzo Ball cus_01.txt
Next it will process obs 2 of the work._input data set which is filename = cus_02.txt.
Here comes the problem, Since there are no "Firstname:" nor "Lastname:" string in the cus_02.txt, the INFILE stops the whole data step and does not continue with obs 3 of work._input.
May I know why? I've tried using combinations of options TRUNCOVER, SCANOVER, and MISSOVER, but still not working.
Thank you for your help. 🙂
... View more