Revision: 34353
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 21, 2010 12:34 by sastechies
Initial Code
%macro ftpfile(localfile,localdir,remotefile,remotedir,remotehost,ftpcommand);
options comamid=tcp nosymbolgen;
filename sasparm "!mysasfiles\sasparm"; /*location of a file containing the username and password for access */
%global rmtuser rmtpw rc;
/* read in the username and password and create macrovars rmtuser rmtpw*/
data _null_;
length rmtuser rmtpw $30.;
infile sasparm;
input rmtuser $
rmtpw $
;
call symput('rmtuser',trim(rmtuser));
call symput('rmtpw',trim(rmtpw));
run;
/* Set a filename FTP statement to remote file */
filename rmfile ftp "&remotefile" cd="&remotedir." host="&remotehost." user="&rmtuser." pass="&rmtpw.";
%if &ftpcommand = get %then /*i.e. download remotefile to the Local file */
%do;
/* Check if the file exists */
%let rc=%sysfunc(fexist(rmfile));
%*****If unable to establish a filename, send error stop;
%if (&rc eq 0)%then
%do;
%put ******Unable to establish FTP connection to file--&rc.;
%put ******Problem with input file: &remotefile.;
%let rc= -1;
%end;
%else
%do;
%put ******Establish FTP connection to file--&remotefile;
data _null_;
infile rmfile;
file "&localdir./&localfile.";
input;
put _infile_;
run;
%let filrf=lclfile;
%let rc=%sysfunc(filename(filrf,"&localdir./&localfile."));
%end;
%end;
%else %if &ftpcommand = put %then
%do;
/* Check if the file exists */
%let filrf=lclfile;
%let rc=%sysfunc(filename(filrf,"&localdir./&localfile."));
%if &rc ne 0 %then
%do;
%put %sysfunc(sysmsg());
%end;
%else
%do;
data _null_;
infile "&localdir./&localfile.";
file rmfile;
input;
put _infile_;
run;
/* Check if the file exists */
%let rc=%sysfunc(fexist(rmfile));
%end;
%end;
%put ftp returncode:&rc;
/* Abort the job with rc=16 for batch processes...
Remove this line if you are using it in interactive sas..else your session will be ended
*/
%if &rc ne 0 %then %abort return 16;
%mend ftpfile;
/* FTP test.sas from desktop to test1.sas on unix server */
%ftpfile(test.sas,C:\,test1.sas,/data/dev/sastechies/sas,server,put);
/* FTP test1.sas from Server to test1.sas on Desktop */
%ftpfile(test1.sas,C:\,test1.sas,/data/dev/sastechies/sas,server,get);
Initial URL
Initial Description
Initial Title
SAS Macro to FTP files between PC and Unix or among Unix server Locations...
Initial Tags
unix
Initial Language
SAS