1

我有一个 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

这是输出,这里有两个人。我需要它们在打印时为每一页分开。

4

1 回答 1

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 引擎为每个组打印一个新页面。notsorted如果您的 by 变量无法排序,您可能需要使用。这可能会也可能不会完全符合您的要求,具体取决于您生成报告的方式。

如果您使用数据步编程来执行此操作,则可能无法访问正在执行此操作的宏。老实说,我不会使用数据步进编程;如今,proc报告/制表/等。非常擅长以您想要的任何格式生成报告,并且它们比数据步骤编程更强大。

在您的特定简单示例中,您可以ods pdf startpage=now;通过调用 execute 发出命令(然后startpage=never在原始ods pdf语句上使用)。

于 2014-05-15T19:55:56.880 回答