That is really weird. Maybe you need buy a ticket to sas support.
About your last question, you can get rid of "Table1...." by using option "contents=" of PROC REPORT.
The attachment is the rtf file I got and no problem as you described.
DATA AAA; SET SASHELP.CARS; RUN; proc sort data=AAA; by Make; run; data AAA; set AAA; PAGE_NO = FLOOR((_n_-1)/15)+1; run; ODS RTF(ID=INDA) FILE= "c:\temp\A.rtf" CONTENTS=YES STARTPAGE=YES TOC_DATA; PROC REPORT DATA=AAA(obs=100) contents=' '; COLUMNS PAGE_NO Make Model Type Origin DriveTrain MSRP Invoice EngineSize Cylinders Horsepower MPG_City MPG_Highway; DEFINE PAGE_NO / ORDER NOPRINT contents=""; DEFINE Make / ORDER NOPRINT; DEFINE Model / DISPLAY ID STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Type / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Origin / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE DriveTrain / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE MSRP / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Invoice / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN} contents="" PAGE; DEFINE EngineSize / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Cylinders / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Horsepower / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE MPG_City / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE MPG_Highway /DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; COMPUTE BEFORE Make; LINE @1 " "; LINE @1 Make $16.; LINE @1 " "; ENDCOMP; break after page_no / page contents=" "; compute after _page_; line "Some text"; line "Some other text"; endcomp; RUN; ods text='End of Table'; ODS RTF(ID=INDA) CLOSE;
Ha. Try this one :
%let n=20; * a page has 20 records ; DATA AAA; SET SASHELP.CARS(obs=100); RUN; proc sort data=AAA; by Make; run; data AAA; set AAA; by Make; if first.Make then n=0; n+1; if first.Make or mod(n,&n.)=1 then PAGE_NO+1; drop n; run; ODS RTF(ID=INDA) FILE= "c:\temp\A.rtf" CONTENTS=YES STARTPAGE=YES TOC_DATA; PROC REPORT DATA=AAA contents=''; COLUMNS Make PAGE_NO Model Type Origin DriveTrain MSRP Invoice EngineSize Cylinders Horsepower MPG_City MPG_Highway; DEFINE Make / ORDER contents=""; DEFINE PAGE_NO / ORDER NOPRINT contents=""; DEFINE Model / DISPLAY ID STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Type / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Origin / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE DriveTrain / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE MSRP / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Invoice / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN} contents="" PAGE; DEFINE EngineSize / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Cylinders / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE Horsepower / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE MPG_City / DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; DEFINE MPG_Highway /DISPLAY STYLE(COLUMN)={CELLWIDTH=1IN}; COMPUTE BEFORE _page_; LINE @1 " "; LINE @1 Make $16.; LINE @1 " "; ENDCOMP; break before page_no / page contents=""; compute after _page_; line "Some text"; line "Some other text"; endcomp; RUN; ods text='End of Table'; ODS RTF(ID=INDA) CLOSE;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.