The SAS Output Delivery System and reporting techniques

Proc Report too long/too many rows, will not print

Accepted Solution Solved
Reply
Contributor
Posts: 27
Accepted Solution

Proc Report too long/too many rows, will not print

I have a proc report that when it is too long, will not dispaly. Is there a functionality that will allow for an automatic page break? 

I can do two data steps with outobjs=40 on both and  grab the top 40 then the bottom 40 and put the bottom 40 and a second page, but if there is a more elegant solution, I would rather do that. Here is a sniplet of the code that I am using.

 

 

/*** Test History ~ EOCs ***/
ods region x=1.0cm y=2.40cm;
proc report data=work.test_history_EOC split='~' missing spanrows
style(header)={font_face="Helvetica" font_size=5pt height=5pt just=c vjust=m background=#D3D3D3 font_weight=bold };
column ((seqno)
('Grade' grade_level)
('Test' test_date test_code test_name)
('Subject' subject_code subject_desc)
('Test Score(s)' AL SS LX PA PF RS TS));
define seqno / group noprint;
define grade_level / group 'Level' style={cellspacing=0 cellheight=4pt cellwidth=0.80cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define test_date / group 'Date' style={cellspacing=0 cellheight=4pt cellwidth=1.00cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define test_code / group 'Code' style={cellspacing=0 cellheight=4pt cellwidth=0.80cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define test_name / group 'Name' style={cellspacing=0 cellheight=4pt cellwidth=3.50cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define subject_code / display 'Code' style={cellspacing=0 cellheight=4pt cellwidth=0.75cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define subject_desc / display 'Description' style={cellspacing=0 cellheight=4pt cellwidth=4.50cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define AL / display 'AL' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define SS / display 'SS' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define LX / display 'LX' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define PA / display 'PA' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define PF / display 'PF' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define RS / display 'RS' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
define TS / display 'TS' style={cellspacing=0 cellheight=4pt cellwidth=0.65cm just=c vjust=m font_face="Helvetica" fontsize=4pt};
compute grade_level;
if (mod(seqno,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute test_date;
if (mod(seqno,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute test_code;
if (mod(seqno,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute test_name;
if (mod(seqno,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute subject_code;
count+1;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute subject_desc;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute AL;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute SS;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute LX;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute PA;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute PF;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute RS;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
compute TS;
if (mod(count,2)) then do;
call define(_col_,'style','style={background=#F5F5F5}');
end;
endcomp;
title1 j=c height=6pt bold lspace=1pt '**State End of Course Exams**';
run;


Accepted Solutions
Solution
‎05-25-2017 02:06 PM
Super User
Posts: 11,343

Re: Proc Report too long/too many rows, will not print

Can you provide data in the form of a data step that duplicates that behavior?

Also which ODS destination and options are you using?

View solution in original post


All Replies
Super User
Posts: 11,343

Re: Proc Report too long/too many rows, will not print

 

 

Do you get output that fill about a 2.4cm tall region and then stops displaying output?

Contributor
Posts: 27

Re: Proc Report too long/too many rows, will not print

No, I can display up to 40 rows, anything more than 40 rows and the report will not display.

 

Solution
‎05-25-2017 02:06 PM
Super User
Posts: 11,343

Re: Proc Report too long/too many rows, will not print

Can you provide data in the form of a data step that duplicates that behavior?

Also which ODS destination and options are you using?

SAS Super FREQ
Posts: 8,868

Re: Proc Report too long/too many rows, will not print

[ Edited ]

Hi:
You need to be very careful with ODS REGION and how it behaves/changes based on your ODS LAYOUT statements. Are you creating PDF output? Is your ODS LAYOUT gridded or absolute? Are you using a destination that supports ODS LAYOUT and ODS REGION, etc, etc. The rest of your code and your destination will help determine the issue. If you cannot share your data, then try to make some fake data or use one of the SASHELP datasets to try and replicate your problem.

cynthia

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 193 views
  • 0 likes
  • 3 in conversation