Hello Everyone, I am trying to read a file folder full of XMLs. I want my sas program to read the file names in the directory, as well as count them. Then I want my macro to run data steps on each individual xml file after reading it in. The following code executes, but each of the sas files it creates have no data in them. When I run the libref xml statements outside of the macro (ie, I explicitly state the file name) it works just fine. It just won't work in the macro. What am I doing wrong here? This works all by itself: filename sim 'S:\Shared Folders\TruDecision Inbound Leads\L20170515131953681608.xml'; filename map 'c:\sasdata\leadmap.map'; libname sim xmlv2 xmlmap=map; data d.lead ; set sim.lead; run; When I print 'd.lead' (above), all the info prints out perfectly. When I embed that in this macro, it creates all the right files from each xml, just no data in it (empty file). No error messages show up in log either. Here's my code: libname d 'c:\sasdata'; filename DIRLIST pipe 'dir "S:\Shared Folders\TruDecision Inbound Leads\L*.xml" /b '; data dirlist ; infile dirlist lrecl=200 truncover; input file_name $100.; run; data _null_; set dirlist end=end; count+1; call symputx('read'||put(count,4.-l),cats('S:\Shared Folders\TruDecision Inbound Leads\',file_name)); call symputx('dset'||put(count,4.-l),scan(file_name,1,'.')); if end then call symputx('max',count); run; data d.dirlist(rename=(file_name=leadfile)); set dirlist; order=_n_;run; options mprint symbolgen; %macro readin; %do i=1 %to &max; data d.leadtarget&i; set d.dirlist; if &i=order; run; proc sql noprint; select leadfile into :lf from d.leadtarget&i; quit; filename sim 'S:\Shared Folders\TruDecision Inbound Leads\&lf'; filename map 'c:\sasdata\leadmap.map'; libname sim xmlv2 xmlmap=map; data d.lead; set sim.lead; run; %end; %mend readin; %readin;
... View more