Imagine that I have a lot of dbf files in different folders. For example, in d:\test\A, I have af.dbf, sh.dbf, and syhd.dbf. And in d:\test\B, I have ujs.dbf, i.dbf, qye.dbf, and ysuje.dbf. ... So, random large numbers of dbf files are distributed across some random numbers of folders under the d:\test.
For all the dbf.files, there is a field (say, CODE). I want to add a field (say, CODE4), extract the last four digits of the values in CODE, and save them to the CODE4 as character values. So, it looks like as follows:
CODE CODE4
8273123878 3878
9182787386 7386
0182730099 0099
61267198 7198
... ...
How can I automate that process for all the dbf files? Thanks.
The simplese way is use PIPE function to gain the power of OS command.
filename x pipe 'dir c:\test\*.txt /s /b'; * list all of txt files under c:\test;
data _null_;
infile x length=len;
input fname $varying200. len;
call execute('proc import datafile="'||fname||'" out='||strip(scan(fname,-2,".\"))||' dbms=dlm replace;getnames=yes;delimiter=" ";run;');
call execute('data '||strip(scan(fname,-2,".\"))||'; set '||strip(scan(fname,-2,".\"))||';code4=substr(code,length(code)-3);run;');
run;
Ksharp
The simplese way is use PIPE function to gain the power of OS command.
filename x pipe 'dir c:\test\*.txt /s /b'; * list all of txt files under c:\test;
data _null_;
infile x length=len;
input fname $varying200. len;
call execute('proc import datafile="'||fname||'" out='||strip(scan(fname,-2,".\"))||' dbms=dlm replace;getnames=yes;delimiter=" ";run;');
call execute('data '||strip(scan(fname,-2,".\"))||'; set '||strip(scan(fname,-2,".\"))||';code4=substr(code,length(code)-3);run;');
run;
Ksharp
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.