我正在使用Base SAS 8.1(OpenVMS)编写报告.我需要它每次观察有1页...类似于下面.我找不到任何显示如何使用PROC PRINT或PROC REPORT执行此操作的内容.除了PUT语句之外,还有什么方法可以做到这一点吗?不幸的是,升级或添加模块不是一种选择.任何帮助表示赞赏.
标题文本观察ID 1
第1行文本----------------变量1
第2行文本----------------变量2
第3行文本----------------变量3
- 分页符 -
标题文本观察ID 2
第1行文本----------------变量1
第2行文本----------------变量2
第3行文本----------------变量3
- 分页符 -
如果您通过观察数转置数据集,那么proc report
可以毫无问题地处理它.心连心.
/* test data -- each obs is identified by obsId */ data class; set sashelp.class; obsId = _n_; run; /* transpose the data */ proc transpose data=class out=report(rename=(_name_=var col1=value)); var _all_; by obsId; run; /* change the varaible name into "Line 1 text ..." */ data report; drop line cLine dashes; length var cLine $30; dashes = repeat("-", 20-1); /* usual DoW */ do line = 1 by 1 until (last.obsId); set report; by obsId; cLine = put(line, best.-l); var = "Line "||trim(cline)||" text "||dashes; output; end; run; /* print out one obs per page */ options nocenter; proc report data=report nowd; column obsId var value; define obsId / " " group noprint; define var / " " display left; define value / " " display left; break after obsId / page; compute before obsId; id = put(obsId, best.-l); len = length(id); line @2 "Header Text Observation Id " iD $varying. len; line " "; endcomp; run; /* on lst, in part. Header Text Observation Id 1 Line 1 text ------------------ Alfred Line 2 text ------------------ M Line 3 text ------------------ 14 Line 4 text ------------------ 69 Line 5 text ------------------ 112.5 Line 6 text ------------------ 1 (new page) Header Text Observation Id 2 Line 1 text ------------------ Alice Line 2 text ------------------ F Line 3 text ------------------ 13 Line 4 text ------------------ 56.5 Line 5 text ------------------ 84 Line 6 text ------------------ 2 (new page) ... */