<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Format is changed when data _null_ and file are used to output in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/360610#M18670</link>
    <description>&lt;P&gt;Hi SAS experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm trying to write a macro to do 1. compile files 2. add TOC.&lt;/P&gt;&lt;P&gt;Attched files are needed to run the program as below. Two issues:&lt;/P&gt;&lt;P&gt;1. Font for L16.2.6.4 and L16.2.6.5 is courier new with 8pt. But when they are combined, it changed to time new roman automatically, please see complied.rtf.&lt;/P&gt;&lt;P&gt;2. Is there any way that can make TOC portrait and L16.2.6.4 &amp;amp; L16.2.6.5 landscape.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!&lt;/P&gt;&lt;P&gt;Bob&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc template;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;define style styles.ftoc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;parent=styles.rtf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;style body from document /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;leftmargin=1in&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rightmargin=1in&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;topmargin=1.25in&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bottommargin=1in;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;options orientation=portrait;&lt;BR /&gt;*This creates the Table of Contents RTF file;&lt;BR /&gt;ods listing close;&lt;BR /&gt;ods rtf file="&amp;amp;loc.\TOC.rtf" style=ftoc headery = 500 footery = 500 startpage=no anchor='TOC';&lt;BR /&gt;title;&lt;BR /&gt;footnote;&lt;BR /&gt;proc report data=text2 nowd missing&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; style(column)={asis=on font_size=10pt font_face="Courier New" font_weight=bold&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;background=white&amp;nbsp; foreground=black&amp;nbsp; /*cellheight=0.4in*/}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;style(header)={asis=on just=left font_size=12pt font_face="Courier New" font_weight=bold&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;background=white&amp;nbsp; foreground=black&amp;nbsp; bordertopcolor=black&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;borderbottomcolor=black bordertopwidth=1 borderbottomwidth=1 }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;style(lines)={asis=on just=left font_size=10pt font_face="Courier New" font_weight=bold&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;background=white&amp;nbsp; foreground=black};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; column ttlord fdisp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;define ttlord/order order=internal noprint;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; define fdisp / "Table of Contents";&lt;BR /&gt;&lt;BR /&gt;run;&lt;BR /&gt;ods rtf close;&lt;BR /&gt;ods listing;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;%Macro Compile(titles=toc2);&lt;BR /&gt;&lt;BR /&gt;*Step 1: Read in the TOC file and modify the end RTF code;&lt;BR /&gt;data readtoc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; infile "&amp;amp;loc.\TOC.rtf" missover length=len end=fin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lrecl=2000 firstobs=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; input string $varying2000. len;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fin then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=compress(string,'}'); *The final } ends the RTF document, so it is removed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to add additional code (i.e. RTF documents.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run; quit;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*Step 2: Begin Compiled file;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "&amp;amp;loc.\Compiled.rtf" lrecl=2000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set readtoc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put string;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*Step 3: Read in tables from the titles dataset and create macro variables;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set &amp;amp;titles. end=fin;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if anatype='Table' then call symput('F'||strip(_n_),'T'||strip(FINALNO));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if anatype='Listing' then call symput('F'||strip(_n_),'L'||strip(FINALNO));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fin then call symput('fileno',strip(_n_));&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;*Step 4: Read in each table file and modify the RTF code;&lt;BR /&gt;%do tt=1 %to &amp;amp;fileno.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put &amp;amp;&amp;amp;F&amp;amp;tt..;&lt;BR /&gt;&lt;BR /&gt;data readrtf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; infile "&amp;amp;loc.\&amp;amp;&amp;amp;F&amp;amp;tt...rtf" missover length=len end=fin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lrecl=2000 firstobs=25; *This starts at 25, because the first 24 lines of code&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; are for document creation and are included in the TOC section.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; input string $varying2000. len;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _n_=1 then string="\sect"||strip(string); *The \sect creates a break and a new&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; section at the beginning of this table.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else string=string;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fin then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=compress(string,'}');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Change bookmark name on 1st page;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if find(string,'*\bkmkstart IDX}{\*\bkmkend IDX}')&amp;gt;0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=tranwrd(string,'IDX',strip(translate("&amp;amp;&amp;amp;F&amp;amp;tt..",'_','.')));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Remove other bookmarks;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if find(string,'\bkmkstart')&amp;gt;0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rstart=find(string,'\bkmkstart'); *Find the position of \bkmkstart;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bkmk=scan(substr(string,rstart),2,' }{\'); *Find the name of the bookmark (2nd word);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bkmkend=find(string,'\bkmkend'); *Find the position of \bkmkend;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rend=find(string, strip(bkmk), bkmkend)+length(bkmk)-1; *Find the position of the bookmark after \bkmrkend plus the length of the bookmark name;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; remove=substr(string,rstart,(rend-rstart+1)); *String to be removed;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=tranwrd(string,strip(remove),''); *Remove bookmark RTF code;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;*Step 4a: Write to RTF file;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "&amp;amp;loc.\Compiled.rtf" lrecl=2000 mod;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set readrtf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put string;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;%end;&lt;BR /&gt;&lt;BR /&gt;*Step 5: Finish RTF file;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "&amp;amp;loc.\Compiled.rtf" lrecl=32767 mod;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put '}';&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;%Mend Compile;&lt;BR /&gt;&lt;BR /&gt;%Compile;&lt;/P&gt;</description>
    <pubDate>Tue, 23 May 2017 20:22:56 GMT</pubDate>
    <dc:creator>fbl204653</dc:creator>
    <dc:date>2017-05-23T20:22:56Z</dc:date>
    <item>
      <title>Format is changed when data _null_ and file are used to output</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/360610#M18670</link>
      <description>&lt;P&gt;Hi SAS experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm trying to write a macro to do 1. compile files 2. add TOC.&lt;/P&gt;&lt;P&gt;Attched files are needed to run the program as below. Two issues:&lt;/P&gt;&lt;P&gt;1. Font for L16.2.6.4 and L16.2.6.5 is courier new with 8pt. But when they are combined, it changed to time new roman automatically, please see complied.rtf.&lt;/P&gt;&lt;P&gt;2. Is there any way that can make TOC portrait and L16.2.6.4 &amp;amp; L16.2.6.5 landscape.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!&lt;/P&gt;&lt;P&gt;Bob&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc template;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;define style styles.ftoc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;parent=styles.rtf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;style body from document /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;leftmargin=1in&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rightmargin=1in&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;topmargin=1.25in&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bottommargin=1in;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;options orientation=portrait;&lt;BR /&gt;*This creates the Table of Contents RTF file;&lt;BR /&gt;ods listing close;&lt;BR /&gt;ods rtf file="&amp;amp;loc.\TOC.rtf" style=ftoc headery = 500 footery = 500 startpage=no anchor='TOC';&lt;BR /&gt;title;&lt;BR /&gt;footnote;&lt;BR /&gt;proc report data=text2 nowd missing&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; style(column)={asis=on font_size=10pt font_face="Courier New" font_weight=bold&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;background=white&amp;nbsp; foreground=black&amp;nbsp; /*cellheight=0.4in*/}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;style(header)={asis=on just=left font_size=12pt font_face="Courier New" font_weight=bold&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;background=white&amp;nbsp; foreground=black&amp;nbsp; bordertopcolor=black&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;borderbottomcolor=black bordertopwidth=1 borderbottomwidth=1 }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;style(lines)={asis=on just=left font_size=10pt font_face="Courier New" font_weight=bold&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;background=white&amp;nbsp; foreground=black};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; column ttlord fdisp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;define ttlord/order order=internal noprint;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; define fdisp / "Table of Contents";&lt;BR /&gt;&lt;BR /&gt;run;&lt;BR /&gt;ods rtf close;&lt;BR /&gt;ods listing;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;%Macro Compile(titles=toc2);&lt;BR /&gt;&lt;BR /&gt;*Step 1: Read in the TOC file and modify the end RTF code;&lt;BR /&gt;data readtoc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; infile "&amp;amp;loc.\TOC.rtf" missover length=len end=fin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lrecl=2000 firstobs=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; input string $varying2000. len;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fin then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=compress(string,'}'); *The final } ends the RTF document, so it is removed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to add additional code (i.e. RTF documents.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run; quit;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*Step 2: Begin Compiled file;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "&amp;amp;loc.\Compiled.rtf" lrecl=2000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set readtoc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put string;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*Step 3: Read in tables from the titles dataset and create macro variables;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set &amp;amp;titles. end=fin;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if anatype='Table' then call symput('F'||strip(_n_),'T'||strip(FINALNO));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if anatype='Listing' then call symput('F'||strip(_n_),'L'||strip(FINALNO));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fin then call symput('fileno',strip(_n_));&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;*Step 4: Read in each table file and modify the RTF code;&lt;BR /&gt;%do tt=1 %to &amp;amp;fileno.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put &amp;amp;&amp;amp;F&amp;amp;tt..;&lt;BR /&gt;&lt;BR /&gt;data readrtf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; infile "&amp;amp;loc.\&amp;amp;&amp;amp;F&amp;amp;tt...rtf" missover length=len end=fin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lrecl=2000 firstobs=25; *This starts at 25, because the first 24 lines of code&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; are for document creation and are included in the TOC section.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; input string $varying2000. len;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _n_=1 then string="\sect"||strip(string); *The \sect creates a break and a new&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; section at the beginning of this table.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else string=string;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fin then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=compress(string,'}');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Change bookmark name on 1st page;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if find(string,'*\bkmkstart IDX}{\*\bkmkend IDX}')&amp;gt;0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=tranwrd(string,'IDX',strip(translate("&amp;amp;&amp;amp;F&amp;amp;tt..",'_','.')));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Remove other bookmarks;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if find(string,'\bkmkstart')&amp;gt;0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rstart=find(string,'\bkmkstart'); *Find the position of \bkmkstart;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bkmk=scan(substr(string,rstart),2,' }{\'); *Find the name of the bookmark (2nd word);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bkmkend=find(string,'\bkmkend'); *Find the position of \bkmkend;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rend=find(string, strip(bkmk), bkmkend)+length(bkmk)-1; *Find the position of the bookmark after \bkmrkend plus the length of the bookmark name;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; remove=substr(string,rstart,(rend-rstart+1)); *String to be removed;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string=tranwrd(string,strip(remove),''); *Remove bookmark RTF code;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;*Step 4a: Write to RTF file;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "&amp;amp;loc.\Compiled.rtf" lrecl=2000 mod;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set readrtf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put string;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;%end;&lt;BR /&gt;&lt;BR /&gt;*Step 5: Finish RTF file;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file "&amp;amp;loc.\Compiled.rtf" lrecl=32767 mod;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put '}';&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;%Mend Compile;&lt;BR /&gt;&lt;BR /&gt;%Compile;&lt;/P&gt;</description>
      <pubDate>Tue, 23 May 2017 20:22:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/360610#M18670</guid>
      <dc:creator>fbl204653</dc:creator>
      <dc:date>2017-05-23T20:22:56Z</dc:date>
    </item>
    <item>
      <title>Re: Format is changed when data _null_ and file are used to output</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/360737#M18673</link>
      <description>&lt;P&gt;I forgot to mention. I referred to &lt;A href="https://www.pharmasug.org/proceedings/2012/AD/PharmaSUG-2012-AD12.pdf" target="_blank"&gt;https://www.pharmasug.org/proceedings/2012/AD/PharmaSUG-2012-AD12.pdf&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 23 May 2017 13:54:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/360737#M18673</guid>
      <dc:creator>fbl204653</dc:creator>
      <dc:date>2017-05-23T13:54:28Z</dc:date>
    </item>
    <item>
      <title>Re: Format is changed when data _null_ and file are used to output</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/361217#M18688</link>
      <description>&lt;P&gt;Hi, I have not read the paper you referenced and I hardly ever use DATA step with RTF. So this might end up to be a question for Tech Support. However, if I use "vanilla" RTF with the orientation controls, as shown below, I am able to get TOC in portrait and the SASHELP.CARS output in landscape.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Code and output shown in image of first 2 pages in Print Preview.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;cynthia&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="regular_switch_orientation.png" alt="regular_switch_orientation.png" src="https://communities.sas.com/t5/image/serverpage/image-id/9009iFEB2DA6114C13A02/image-size/original?v=1.0&amp;amp;px=-1" border="0" /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 24 May 2017 14:03:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/361217#M18688</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2017-05-24T14:03:30Z</dc:date>
    </item>
    <item>
      <title>Re: Format is changed when data _null_ and file are used to output</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/361239#M18689</link>
      <description>&lt;P&gt;Thanks for your reply, Cynthia! I used Infile statement to read the attached file that was generated using 'ods rtf', then I tried to use 'ods rtf' like you suggested to output it. The rtf files turns out to be like the snap as below. data _null_+file statement is the only method I tried that is able to generate the right output. Is there an other output method. Thanks again for your help!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/9010i2672D653191BE872/image-size/original?v=1.0&amp;amp;px=-1" alt="Capture.PNG" title="Capture.PNG" border="0" /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 24 May 2017 14:59:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Format-is-changed-when-data-null-and-file-are-used-to-output/m-p/361239#M18689</guid>
      <dc:creator>fbl204653</dc:creator>
      <dc:date>2017-05-24T14:59:42Z</dc:date>
    </item>
  </channel>
</rss>

