Hi! Is there a way to work an equivalent of #byval() into the "compute before _page_" part of PROC REPORT? It seems that #byval and #byvar only works for TITLE statements. TIA.
data example;
input name $ num;
datalines;
Bob 12
Jill 19
Bob 23
Jill 40
;
proc sort; by name; run;
options nobyline;
proc report data=example nowd;
by name;
/* title "#byval(name)";*/
column name num;
compute before _page_ / style=header{just=l};
line "#byval(name)";
endcomp;
run;
Never mind. Further Googling helped me to figure it out. I already figured out keeping the bottom border. But how do I insert the top border to make the tables look like these?
proc template;
define style styles.test1;
parent=styles.printer;
style fonts /
'TitleFont' = ("Albany AMT",13pt,bold)
'TitleFont2' = ("Albany AMT",13pt,bold)
'StrongFont' = ("<MTserif>, Times Roman",10pt,bold)
'EmphasisFont' = ("Calibri",10pt,bold)
'FixedEmphasisFont' = ("<MTmonospace>, Courier",9pt,italic)
'FixedStrongFont' = ("<MTmonospace>, Courier",9pt,bold)
'BatchFixedFont' = ("SAS Monospace, <MTmonospace>, Courier",6.7pt)
'FixedFont' = ("<MTmonospace>, Courier",9pt)
'headingFont' = ("<MTserif>, Times Roman",11pt,bold)
'docFont'=("Albany AMT",10pt)
;
style systemtitle from TitlesAndFooters /
just=center
vjust=center
;
style Body from Document /
marginbottom = 0.5in
margintop = 0.5in
marginright = 0.25in
marginleft = 0.25in;
style Table from Output /
frame=below
rules = none
borderspacing=0
borderwidth=0.5pt
borderstyle = solid
font=fonts('docFont')
;
style header from table /
just=right
vjust=middle
fontsize=11pt
fontweight=bold
background=white
;
class cell /
paddingleft=1pt
paddingright=1pt
;
end;
run;
data example;
input name $ num;
datalines;
Bob 12
Jill 19
Bob 23
Jill 40
;
run;
ods pdf file="example.pdf" notoc style=styles.test1;
proc report data=example nowd;
column name num;
define name / order order=internal format=$4.;
break after name / page;
compute before _page_ / style=header{just=l};
line name $4.;
endcomp;
run;
ods pdf close;
Never mind again. Figured adding "style(header)=[bordertopwidth=0.5pt bordertopcolor=black]" did the trick.
proc template;
define style styles.test1;
parent=styles.printer;
style fonts /
'TitleFont' = ("Albany AMT",13pt,bold)
'TitleFont2' = ("Albany AMT",13pt,bold)
'StrongFont' = ("<MTserif>, Times Roman",10pt,bold)
'EmphasisFont' = ("Calibri",10pt,bold)
'FixedEmphasisFont' = ("<MTmonospace>, Courier",9pt,italic)
'FixedStrongFont' = ("<MTmonospace>, Courier",9pt,bold)
'BatchFixedFont' = ("SAS Monospace, <MTmonospace>, Courier",6.7pt)
'FixedFont' = ("<MTmonospace>, Courier",9pt)
'headingFont' = ("<MTserif>, Times Roman",11pt,bold)
'docFont'=("Albany AMT",10pt)
;
style systemtitle from TitlesAndFooters /
just=center
vjust=center
;
style Body from Document /
marginbottom = 0.5in
margintop = 0.5in
marginright = 0.25in
marginleft = 0.25in;
style Table from Output /
frame=below
rules = none
borderspacing=0
borderwidth=0.5pt
borderstyle = solid
font=fonts('docFont')
;
style header from table /
just=right
vjust=middle
fontsize=11pt
fontweight=bold
background=white
;
class cell /
paddingleft=1pt
paddingright=1pt
;
end;
run;
data example;
input name $ num;
datalines;
Bob 12
Jill 19
Bob 23
Jill 40
;
run;
ods pdf file="example.pdf" notoc style=styles.test1;
proc report data=example nowd
style(header)=[bordertopwidth=0.5pt bordertopcolor=black]
;
column name num;
define name / order order=internal format=$4.;
break after name / page;
compute before _page_ / style=header{just=l};
line name $4.;
endcomp;
run;
ods pdf close;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.