我有一个问题,即do循环创建我的报告但是每次列出宏的标题页并没有反映正确的命名约定。 它适用于PDF中的每个书签以及proc报告本身。但是标题没有正确反映。
%macro PDF_T2(year=, age= );
proc sql noprint;
select distinct region, bh_type
into :region1 - :region14, :bh_type1 - :bh_type14
from table2_IP
;
quit;
/*%put ®ion1 ®ion2;*/
/*%put &bh_type1 &bh_type2;*/
ods escapechar '^';
ods pdf file="C:\PDFS\Table2.pdf" pdftoc=2 style=Custom;
options orientation=landscape missing=' '
topmargin=.25in
bottommargin=.25in
leftmargin=.25in rightmargin=.25in ;
ods proclabel " Inpatient Analysis By Plan ";
%do i=1 %to 4;
TITLE "^{style [JUST= C ]Table 2. Inpatient Utilization By Plan,}";
TITLE2 "^{style [JUST= C ]&®ion&i. }" ;
Title3 "^{style [JUST= C ]Adult (21 to 64)}";
Title4 "^{style [JUST= C ]&&bh_type&i. Analysis}" ;
PROC REPORT DATA = Table2_IP contents="&&bh_type&i. Table: Inpatient`enter code here`
答案 0 :(得分:1)
我会尝试确保您使用%local宏变量。如果你有全局宏变量浮动,可能会导致一些令人惊讶的结果。
我还要打开MPRINT并查看日志以查看正在生成的代码。它将显示宏正在生成的TITLE语句。
标题不会自行清除,但每次执行TITLE语句时都会清除任何现有标题。
我修改了你的代码以便在sashelp.prdsale上工作,看起来很好:
%macro titletest(dummy);
%local i region1 region2;
proc sql noprint;
select distinct region
into :region1 - :region2
from sashelp.prdsale
;
quit;
%put region1=®ion1 region2=®ion2;
%do i=1 %to 2;
title1 "Results for &®ion&i";
proc print data=sashelp.prdsale;
where region="&®ion&i";
run;
title1;
%end;
%mend;
options mprint;
%titletest()