Я заинтересован в чтении каждого набора данных SAS в папке C: \ Users и создании pdf-файла однопроцессорного процесса для каждого из этих наборов данных SAS. То есть, если у меня есть 50 наборов данных в C: \ Users, мне бы хотелось 50 файлов PDF.Как читать каждый набор данных SAS в определенной папке и создавать отдельные PDF-выходы для каждого из них?
У меня возникли проблемы с указанием имени pdf и где он должен идти. Ниже мой код:
filename DIRLIST pipe 'dir "C:\Users\*.sas7bdat" ';
data dirlist;
infile dirlist lrecl=200 truncover;
input line $200.;
if input(substr(line,1,10), ?? mmddyy10.) = . then delete;
length file_name $ 150;
file_name=scan(scan(line,-1," "),1,".");
keep file_name;
data _null_;
set dirlist end=end;
count+1;
call symput('read'||left(count),left(trim(file_name)));
if end then call symput('max',count);
run;
options mprint symbolgen;
%macro stack;
%do i=1 %to &max;
data _null_;
call symput('pdfname'||left(count),cat("C:\Users\",&&read&i,".pdf"));
run;
ods pdf file=&&pdfname&i;
proc univariate data = &&read&i noprint;
run;
ods pdf close;
%end;
%mend stack;
%stack;
Я получаю сообщение об ошибке, которое выдвигает на первый план «:» в «C: \ Users \», и это говорит
ОШИБКА 22-322: Ошибка синтаксиса, ожидая одного из следующее:;, Якорь, АВТОР, ФОН, БАЗА, тело, закладки, BOOKMARKGEN, BOOKMARKLIST, близко, цвет, КОЛОННЫ, КОМПРЕСС, СОДЕРЖАНИЕ, CSSSTYLE, дисплей, DPI, FILE, FONTSCALE, GFOOTNOTE, GTITLE, ХОЗЯИН, KEYWORDS, LAYOUT, NAMED_DEST, NEWFILE, NOBACKGROUND, NOBOOKMARKGEN, NOKOOKMARKLIST, NOCOLOR, NOCONTENTS, NOGFOOTNOTE, NOGTITLE, NOPDFNOTE, NOTOC, ПАКЕТ, PCL, PDF, PDFMARK, PDFNOTE, PDFTOC, PRINTER, PS, RENDER, SAS, SGE, STARTPAGE, STYLE, SUBJECT, TEXT, TITLE, UNIFORM.
ОШИБКА 200-322: Символ не распознается и будет игнорироваться.
Я также получаю ошибку, которая говорит
ОШИБКА: Символическое имя переменной PDFNAME. должен содержать только буквы, цифры и символы подчеркивания.
Спасибо, это сработало! Не возражаете, если я спрошу вас, как вы это сделаете? Я очень новичок в макросах SAS и не имею формального обучения в них. Мой мыслительный процесс больше «как мне это сделать?» а не «что это лучший способ сделать это?» и я хотел бы изменить это. – NewNameStat
То, что вы сделали, было на самом деле довольно хорошим. Одна вещь, которую я предлагаю, - никогда не помещать что-либо в каталог библиотеки SAS. Создайте новый каталог для своих отчетов. Это просто чище, потому что библиотека SAS может содержать объекты, отличные от файлов «* .sas7bdat». Кроме того, было бы «безопаснее» использовать приведенный ниже вид SASHELP.VMEMBER, а не синтаксический анализ команды DIR. И есть много информации о макрообработке; возьмите час или около того и прочитайте документы (а не только руководства по синтаксису). В общем, вы сделали очень хорошую программу. – BellevueBob