我有一个sas输出,并且每个人都有一些信息。但是每个人在打印时都应该在一个单独的页面上,换句话说,PDF应该是每个人的一页。我在代码中没有使用宏。我也不知道如何制作宏。那么有什么办法可以在不使用宏的情况下分离页面?
代码:
data _null_;
set maingroup;
call execute('%bygroup(' || trim(maingroup) || ')');
run;
此代码将每个页面的人员分开。但我没有宏,我稍微改变了代码。检查报告如下:
Ayda Ceyhan: 325
1258 458
Grade:3.0
Issues: Test
-------
Justin Costay: 526
1568 132
Grade:3.5
Issues: NA
这是输出,这里有两个人。我需要它们在打印时为每个页面分开。
答案 0 :(得分:2)
这在很大程度上取决于您的实际报告;但一般来说,你应该能够按组而不是使用宏来使用。
一个简单的例子:
ods pdf file="c:\temp\test.pdf" startpage=bygroup;
proc report data=sashelp.class nowd;
by name;
columns age sex height weight;
run;
ods pdf close;
startpage=bygroup
告诉PDF引擎为每个组打印一个新页面。如果您的by变量无法排序,则可能需要使用notsorted
。根据您制作报告的方式,这可能会或可能不会完全符合您的要求。
如果您使用数据步骤编程执行此操作,则可能更难以访问正在执行此操作的宏。老实说,我不会使用数据步骤编程;如今,proc报告/制表/等。非常擅长以您想要的任何格式生成报告,并且它们比数据步骤编程更强大。
在您的特定简单示例中,您可以通过调用execute(然后在原始ods pdf startpage=now;
语句上使用startpage=never
)发出ods pdf
命令。