Hello,
I am developing a SAS macro.
The macro output have two result datasets. For some reasons I want to keep them separately. Is there anyway to print both datasets in the same output page? Because if I call proc print twice, result datasets will be printed in 2 separate page even thought they have only a few rows.
Thanks a lot.
Can you provide some example of what you want the output to look like and which output destination you are using?
If you use ODS RTF with the KEEPN and STARTPAGE=NO options the output might fit on one page. You might want to investigate using a different style than the default RTF style to one with a smaller font to help.
You could go really old style and use PUT statements to write your report.
data _null_;
file print header=pagetop;
if not eof1 then do;
set dataset1 end=eof1;
put some stuff on the left hand side of the page @;
end;
if not eof2 then do;
set dataset2 end=eof2;
put some stuff on the right hand side of the page;
end;
return;
pagetop:
* Add top-of-page titles/headings, etc.;
return;
run;
Its hard work, but extremely flexible.
If you need put them together in a page vertically , add ods option startpage=never ,
or if you want side by side.
Then You need some advanced skill of ODS.
Code is take from a SAS book of Arthur.Carpenter
ods listing close; ods pdf style=sasweb file="c:\temp\x.pdf"; ods layout start; ods region x=.5in y=.1in width=3in height=4in; proc report data=sashelp.prdsale(where=(prodtype='OFFICE')) nowd; run; ods region x=5in y=.1in width=3in height=4in; proc report data=sashelp.prdsale(where=(prodtype='FURNITURE')) nowd; run; ods layout end; ods pdf close; ods listing;
Xia Keshan
Message was edited by: xia keshan
Thank you very much for your replies.
I will try the put statement option first since it looks more friendly to me.
If one above the other is acceptable the ODS solution will be much friendlier and easier to maintain.
Also what you want to view this in makes a difference.
basic code for RTF (Word) output would be:
ods rtf file="c:\myfolder\mydocument.rtf" startpage=no;
proc print data=dataset1;
run;
proc print data=dataset2;
run;
ods rtf close;
There are lots of options involved in the ODS RTF statement that relate to style, table of contents and how titles appear. If you want separate titles for you two data sets you will likely want the option Bodytitle on the ODS RTF statement.
What about appending them to each other in a temporary dataset for the sake of printing?
data temp;
set dataset1 dataset2;
run;
proc print data=temp;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.