ich den folgenden Code ausgeführt wurde:ERROR: Keine logische assign für Dateinamen FNAME
%LET TIME_INTERVAL='MINUTE15';
/*
* Get the file names of a specific location
*/
%MACRO get_filenames(location,filenames);
filename _dir_ "%bquote(&location.)";
data &filenames(keep=fname);
handle=dopen('_dir_');
if handle > 0 then do;
count=dnum(handle);
do i=1 to count;
fname=dread(handle,i);
output &filenames;
end;
end;
rc=dclose(handle);
run;
filename _dir_ clear;
%MEND;
%MACRO NBBO (fname);
DATA TICKERS_NBBO;
INFILE &fname;
INPUT SYMBOL $;
RUN;
%mend;
%MACRO CALCU(DATE_VAR);
%get_filenames('./groups',filenames);
data _null_;
set filenames;
by fname;
if fname =: "&TIME_INTERVAL";
%NBBO(fname);
run;
%mend;
aber ich habe den Fehler: ERROR: No logical assign for filename FNAME.
Ich frage mich, was ist der Grund dafür, dass dies verursacht?
Es gibt viele csv-Dateien im Ordner groups
. Ich habe versucht, den NBBO-Makro auf jeder der Dateien auszuführen und jede Datei in einen Datensatz mit infile
-Anweisung zu laden.
Ist es mir möglich, Makro NBBO auf jeder der Dateien in den Dateinamen aufzurufen? –
Zum Beispiel 'call execute (cats ('% nrstr (% NBBO) (', fname, '') '));' –
Ja, es ist möglich (das ist die Art, wie Sie Call Execute verwenden würden, mehr oder weniger). Es wird nicht das tun, was Sie im obigen Beispiel wollen, aber mein Beispiel ist, was Sie wollen, ich bin mir ziemlich sicher (es sei denn, Ihr Beispiel ist nicht repräsentativ). – Joe