/* check if datalog exists in dir, if it exists then import it from Excel and create SAS data set called datalog*/
%IF &n <= &index %then %Do;
%let foundit = %sysfunc(exist(&&path&x..&dsname));
proc import datafile= "&&path&x"
out=&libto..&dsname
dbms=dlm
replace;
delimiter=", ";
getnames=yes;
Title "Listing of CSV Files In &dsname As of &sysdate";
proc print data=&libto..&dsname;
run;
Title " ";
/* This part of the macro uses DO While to loop through each name, path of csv */
/* files and extract the data sets specified by the upper limit INDEX */
/* and the lower limit n */
%DO %WHILE (&n <=&index);
data _NULL_;
set &libto..&dsname end=last;
if _N_ =&n then Do;
call symput(COMPRESS('path'),Path); /* Get file path*/
call symput(COMPRESS('dsn'),Name); /* Get dataset name*/
if not last then index+1; /* if not last record then increment index by 1 on each iteration*/
else if last then call symput ('index',index); /* if last record then call the macro variable index*/
End;
run;
proc import datafile= "&path"
out= &libto..&dsn
dbms=dlm
replace;
delimiter=", " ;
getnames=yes;
run;
Title "Data set &dsn";
proc print data=&libto..&dsn;
run;
Title " ";
%let n=%eval(&n+1);
%let log1 = C:\log\statlog.txt; /* output the log to log1*/
%let log2 = H:\..\log\statlog.txt; /* or output the log to log2*/
proc printto log="&&log&x" new ;
run;
%End;
%End;
/* Write Error Message to the log if &n gt &index"*/
Data _NULL_;
set &libto..&dsname;
%IF &n gt &Index %then %Put ERROR Ending execution: Check values of n and Index (n must be less than or equal to index);
run;
%Mend get_data;
/* Macro Call*/
%get_data(8,1,5);
... View more