Это пример процесса, который может выиграть от создания макроса.Похоже, ваш существующий код близок к готовности стать макросом.Просто оберните существующий код в определение макроса, которое принимает FILENAME в качестве параметра (удалите оператор% let).
Тогда ваша существующая программа может стать чем-то вроде этого.Где последняя строка - это та, которая фактически выполняет шаги, определенные в определении макроса.
%macro loadfile(filename=);
... existing code ....
%mend loadfile;
%loadfile(filename=file1.csv);
Чтобы расширить ее для загрузки всех файлов в каталоге, вам просто нужно сгенерировать список файлов и использовать списокгенерировать серию вызовов к макросу.Так что-то вроде этого может работать на компьютере с Windows.Поэтому он будет вызывать команду Windows DIR, чтобы получить список файлов и прочитать результат в переменную, и для каждого найденного файла сгенерировать вызов макроса.Команды, нажимаемые CALL EXECUTE, будут выполняться после завершения шага данных.
data _null_;
infile 'dir /b *.csv' pipe truncover ;
input filename $256. ;
call execute(cats('%nrstr(loadfile)(filename=',filename,')'));
run;