--- %%NOBANNER%% -->
/*-------------------<---Start of Description-->---------------------\
| Import an external file to a sas data; |
|---------------------<---End of Description-->----------------------|
|--------------------------------------------------------------------|
|------------<---Start of Files or Arguments Needed-->---------------|
| Argument: |
| infile: the file you want to import; |
| outdata: the sas data your want to save the contents of the file;|
| dbms: |
| ACCESS Microsoft Access database .MDB |
| DBF dBASE file .DBF |
| WK1 Lotus 1 spreadsheet .WK1 |
| WK3 Lotus 3 spreadsheet .WK3 |
| WK4 Lotus 4 spreadsheet .WK4 |
| EXCEL Excel Version 5 spreadsheet .XLS |
| EXCEL4 Excel Version 4 spreadsheet .XLS |
| EXCEL5 Excel Version 5 spreadsheet .XLS |
| EXCEL97 Excel 97 spreadsheet .XLS |
| DLM delimited file (default delimiter is a blank) .* |
| CSV delimited file (comma-separated values) .CSV |
| TAB delimited file (tab-delimited values) .TXT |
| replace: if a file with the same name exists, |
| T - overwrite it, |
| F - append to it; |
|-------------<---End of Files or Arguments Needed-->----------------|
|--------------------------------------------------------------------|
|------------------<---Start of Files Created-->---------------------|
| Example: %import(infile=c:\temp.xls, outdata=attest.covar); |
| Usage: %import(infile=, outdata=, dbms=tab, replace=t); |
\-------------------<---End of Files Created-->---------------------*/
%macro import(infile=, /**Input data set ***/
outdata=, /**output excel spread sheet*/
dbms=tab, /**DBMS can be CSV, tab, ...*/
replace=t); /**Replace the existing file? */
/*--------------------------------------------\
| Author: Duo Zhou; |
| Created: 7-21-2001 7:23pm; |
| Purpose: Import an external file into a sas |
| data set; |
\--------------------------------------------*/
%let out=%qscan(&outdata,1,%str((),));
%local fileref;
%let fileref=%qscan(&infile,1,%str((),""''));
%if &dbms ne %then %do;
%let dbms=%upcase(&dbms);
%end;
%else %do;
%let dbms=TAB;
%end;
%if &replace ne %then %do;
%let replace=%upcase(&replace);
%end;
%else %do;
%let replace=T;
%end;
%if &out ne %then %do;
%put --> Note: Wait! The system is importing from an input datafile;
%put --> "&fileref" ;
%put --> to the data set "&out". ;
%if (%quote(&fileref) ne) %then %do;
proc import datafile="&fileref"
out=&out DBMS=&dbms %if (%quote(%upcase(&replace))=T) %then %do;
REPLACE
%end;;
run;
%end;
%else %do;
%put ==> Alert! You forgot to give me an input datafile.;
%end;
%end;
%else %do;
%put ==> Alert! You forgot to give me an output dataset.;
%end;
%mend import;