BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
mmkr
Quartz | Level 8

Iam looking for report like below , 

2nd page always should be signature page like below 

By variable is Age 

let's say i have 35,40,45 ages so it should be total 6 pages 

3 pages of data and 3 pages of signature pages

but 2nd page should be always a signature page like below 

 

 

     

Page No :1

Title "Report Page1" by Age 35

     

Name

Age

Sex

   

Tom

35

M

   

Martin

35

M

   

Sophie

35

F

   
         
         
       

Page No : 2

         

I here by confirm ---------Signature above report is correct

         
         
         
       

Page No : 3

         

Title "Report Page1" by Age 40

     

Name

Age

Sex

   

Stephine

40

M

   

Don

40

M

   

Thomas

40

M

   
         
         
       

Page No : 4

         

I here by confirm ---------Signature above report is correct

 

1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User

Nope. Make a macro to generate the code I showed, not using BY statement.

 

proc sort data=sashelp.class out=output;by age;run;
proc freq data=output noprint;
table age/out=age;
run;

%macro report(age=);
proc report data=output nowd;
where age=&age.;
run;
ods pdf startpage=now;
proc odstext;
p 'Signature: ________________'/style={fontsize=8 just=r};
run;
%mend;


ods pdf file='c:\temp\temp.pdf' notoc;
options nodate nonumber;
title j=r ' PageNo:(*ESC*){thispage} ';

data _null_;
 set age;
 call execute(catt('%report(age=',age,')'));
run;

ods pdf close;

View solution in original post

9 REPLIES 9
data_null__
Jade | Level 19

Maybe something like this with signature at the bottom of the page.

 

proc report data=sashelp.class;
   columns age name sex height weight;
   define age / order;
   break after age / page;
   compute after age / style(lines)=[just=r];
      line ' ';
      line 'Signature: ________________';
      endcomp;
   run;

Capture.PNG

 

 

mmkr
Quartz | Level 8

i want completely in to the second page 

mmkr
Quartz | Level 8

Iam looking for report like below , 

2nd page always should be signature page like below 

By variable is Age 

let's say i have 35,40,45 ages so it should be total 6 pages 

3 pages of data and 3 pages of signature pages

but 2nd page should be always a signature page like below 

 

 

     

Page No :1

Title "Report Page1" by Age 35

     

Name

Age

Sex

   

Tom

35

M

   

Martin

35

M

   

Sophie

35

F

   
         
         
       

Page No : 2

         

I here by confirm ---------Signature above report is correct

         
         
         
       

Page No : 3

         

Title "Report Page1" by Age 40

     

Name

Age

Sex

   

Stephine

40

M

   

Don

40

M

   

Thomas

40

M

   
         
         
       

Page No : 4

         

I here by confirm ---------Signature above report is correct

ChrisNZ
Tourmaline | Level 20

Like this?

 

options nodate nonumber;
ods escapechar='^';
ods pdf file="~/test.pdf";
%macro report;
  %local i;
  %do i=11 %to 16;
	ods pdf startpage=now;
	title j=r 'Page ^{thispage} of ^{lastpage}' j=c "Report for age &i";
	proc print noobs data=SASHELP.CLASS; 
	  where AGE=&i.;
	run;  
	ods pdf startpage=now;
	title  j=r 'Page ^{thispage} of ^{lastpage}' ;
	ods text="^S={just=c topmargin=5cm}I hereby confirm --------- the above report for age &i is correct.";
	ods text="^S={just=c rightmargin=2cm}Signature";
  %end;
  ods _all_ close;
%mend; 
%report

This creates page 1:

 

ChrisNZ_0-1719291233912.png

page 2:

ChrisNZ_1-1719291260824.png

etc

 

 

Ksharp
Super User

Use PROC ODSTEXT instead.


 
ods rtf file='c:\temp\temp.rtf' ;
options nodate nonumber;
title j=r ' PageNo:(*ESC*){thispage}   ';
proc report data=sashelp.class nowd;
where age=14;
run;
ods rtf startpage=now;
proc odstext;
p 'Signature: ________________'/style={fontsize=8 just=r};
run;

ods rtf startpage=now;
proc report data=sashelp.class nowd;
where age=15;
run;
ods rtf startpage=now;
proc odstext;
p 'Signature: ________________'/style={fontsize=8 just=r};
run;

ods rtf startpage=now;
proc report data=sashelp.class nowd;
where age=16;
run;
ods rtf startpage=now;
proc odstext;
p 'Signature: ________________'/style={fontsize=8 just=r};
run;
ods rtf close;

 

mmkr
Quartz | Level 8

Below is the updated code :

 

Iam getting signature page on only last page , but i need it for every by variable 

proc sort data=sashelp.class out=output;by age;run;

ods pdf file='c:\temp\temp.pdf' ;
options nodate nonumber;
title j=r ' PageNo:(*ESC*){thispage} ';

proc report data=output nowd;by age;

ods pdf startpage=now;
proc odstext;
p 'Signature: ________________'/style={fontsize=8 just=r};
run;
ods pdf close;

Ksharp
Super User

Nope. Make a macro to generate the code I showed, not using BY statement.

 

proc sort data=sashelp.class out=output;by age;run;
proc freq data=output noprint;
table age/out=age;
run;

%macro report(age=);
proc report data=output nowd;
where age=&age.;
run;
ods pdf startpage=now;
proc odstext;
p 'Signature: ________________'/style={fontsize=8 just=r};
run;
%mend;


ods pdf file='c:\temp\temp.pdf' notoc;
options nodate nonumber;
title j=r ' PageNo:(*ESC*){thispage} ';

data _null_;
 set age;
 call execute(catt('%report(age=',age,')'));
run;

ods pdf close;
mmkr
Quartz | Level 8

Thanks so much , it worked as i needed

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 9 replies
  • 446 views
  • 1 like
  • 5 in conversation