|
Helen,
You might want to consider turning on symbolgen to see what your macro
vars are resolving too and when, thus helping you find the problem more
easily.
Toby Dunn
-----Original Message-----
From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of
Helen
Sent: Friday, September 03, 2004 11:43 AM
To: SAS-L@LISTSERV.UGA.EDU
Subject: "No logical assign for filename" Error
Dear SAS-l,
I am trying to get the lastest Excel filename according to modified
date under a certain directory. It works well without macro. But it
gave me error message "No logical assign for filename " in the
following macro. Any comments?
Thanks!
Helen
1
2 %macro GetLatestFileName(dir);
3 filename xlfile pipe "dir ""&dir""" lrecl=200;
4 data in;
5 infile xlfile length=len;
6 input char $varying200. len;
7
8 retain lastestname lastestdate ;
9 date=input(substr(char,1,10),mmddyy10.);
10 name=scan(char,4,' ');
11 if _n_=1 then do; lastestname=name; lastestdate=date;
end;
12 if date>lastestdate then do;lastestname=name;
lastestdate=date; end;
13 call symput("fname",trim(lastestname));
14 run;
15 filename xlfile clear;
16 &fname;
17 %mend;
18
19 options mprint;
20 %let test=%GetLatestFileName(c:\temp\*.xls);
MPRINT(GETLATESTFILENAME): data in;
MPRINT(GETLATESTFILENAME): infile xlfile length=len;
MPRINT(GETLATESTFILENAME): input char $varying200. len;
MPRINT(GETLATESTFILENAME): retain lastestname lastestdate ;
MPRINT(GETLATESTFILENAME): date=input(substr(char,1,10),mmddyy10.);
MPRINT(GETLATESTFILENAME): name=scan(char,4,' ');
MPRINT(GETLATESTFILENAME): if _n_=1 then do;
MPRINT(GETLATESTFILENAME): lastestname=name;
MPRINT(GETLATESTFILENAME): lastestdate=date;
MPRINT(GETLATESTFILENAME): end;
MPRINT(GETLATESTFILENAME): if date>lastestdate then do;
MPRINT(GETLATESTFILENAME): lastestname=name;
MPRINT(GETLATESTFILENAME): lastestdate=date;
MPRINT(GETLATESTFILENAME): end;
MPRINT(GETLATESTFILENAME): call symput("fname",trim(lastestname));
MPRINT(GETLATESTFILENAME): run;
ERROR: No logical assign for filename XLFILE.
ERROR: No logical assign for filename XLFILE.
ERROR: No logical assign for filename XLFILE.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: SAS set option OBS=0 and will continue to check statements.
......
|