<?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 Re: problem lining up rows between columns in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/problem-lining-up-rows-between-columns/m-p/149875#M11569</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Upon further investigation, it appears that Adobe is doing the line wrapping, so SAS has no idea that it happened. I have decided to create 3 reports: 1 in landscape with the columns wide enough to not require wrapping; 1 in portrait with the font reduced enough to not require wrapping; and 1 in Excel which, because of the cells, would keep everything lined up. I will present each of these options to the user and let them decide what to do.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 06 Aug 2014 14:49:19 GMT</pubDate>
    <dc:creator>pasvorto</dc:creator>
    <dc:date>2014-08-06T14:49:19Z</dc:date>
    <item>
      <title>problem lining up rows between columns</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/problem-lining-up-rows-between-columns/m-p/149874#M11568</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am tasked with a problem to solve. I have a report with 4 columns. Each cell can have multiple rows. I need to rows to line up in the columns. Everything is fine until I hit a row which as to wrap. From that point on, the rows in the other columns are off by one. This is the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA&amp;nbsp; overmas3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *FILE mout;&amp;nbsp; RETAIN minus -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length&amp;nbsp; prot_field $ 100&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pat_field&amp;nbsp; $ 60&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exp_field&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; late_field $ 2000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mat_field&amp;nbsp; $ 2000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item_field $ 2000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET overdu END=enda; BY dc_num;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY forms(500)&amp;nbsp; form1-form500;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY folds(500)&amp;nbsp; fold1-fold500;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY whicho(500) which1-which500;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY dayl(500)&amp;nbsp;&amp;nbsp;&amp;nbsp; day1-day500;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARRAY exp(500)&amp;nbsp;&amp;nbsp;&amp;nbsp; exp1-exp500;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot_field&amp;nbsp; = TRIM(LEFT(dc_num))&amp;nbsp; || ' \n \n' ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(dm_rb))&amp;nbsp;&amp;nbsp;&amp;nbsp; || ' \n'&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(phone))&amp;nbsp;&amp;nbsp;&amp;nbsp; || ' \n'&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(sa))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || ' \n'&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Added per Rave Project */&lt;/P&gt;&lt;P&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; TRIM(LEFT(saqc));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pat_field&amp;nbsp; = TRIM(LEFT(dcntr_id)) || ' \n \n' ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(intl))&amp;nbsp;&amp;nbsp;&amp;nbsp; || ' \n'&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(rmbr_id))&amp;nbsp; || ' \n'&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(PUT(date_on,MMDDYY10.))) || ' \n'&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&lt;/P&gt;&lt;P&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; TRIM(LEFT(PUT(fu_date,MMDDYY10.)));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mat_field&amp;nbsp; = '';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; item_field = '';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exp_field&amp;nbsp; = '';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; late_field = '';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DO I=1 to 500;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF forms(I)^=''&amp;nbsp; THEN&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DO;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp;&amp;nbsp; IF I=1 THEN mat_field&amp;nbsp; =&amp;nbsp; TRIM(LEFT(forms(I)))|| foldr;&lt;/P&gt;&lt;P&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; ELSE mat_field&amp;nbsp; = TRIM(LEFT(mat_field))&amp;nbsp; ||'\n'|| '\n' || TRIM(LEFT(forms(I)))|| foldr; */&lt;/P&gt;&lt;P&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; IF I=1 THEN mat_field&amp;nbsp; = catx (',',folds(I), forms(I));&lt;/P&gt;&lt;P&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; ELSE mat_field&amp;nbsp; = TRIM(LEFT(mat_field))&amp;nbsp; ||'\n'|| '\n' ||catx(',', folds(I),forms(I));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF I=1 THEN item_field = TRIM(LEFT(whicho(I)));&lt;/P&gt;&lt;P&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; ELSE item_field = TRIM(LEFT(item_field)) || '\n' || '\n' || TRIM(LEFT(whicho(I)));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF I=1 THEN exp_field&amp;nbsp; = TRIM(LEFT(PUT(exp(I),MMDDYY10.)));&lt;/P&gt;&lt;P&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; ELSE exp_field&amp;nbsp; = TRIM(LEFT(exp_field))&amp;nbsp; || '\n' ||'\n' || TRIM(LEFT(PUT(exp(I),MMDDYY10.)));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF I=1 THEN late_field = TRIM(LEFT(PUT(dayl(I),5.)));&lt;/P&gt;&lt;P&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; ELSE late_field = TRIM(LEFT(late_field)) || '\n' || '\n' || TRIM(LEFT(PUT(dayl(I),5.)));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;/P&gt;&lt;P&gt;&amp;nbsp; RUN;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;This is the report code:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TITLE1 j=center "&amp;amp;otitle";&lt;/P&gt;&lt;P&gt;TITLE2 j=center "&amp;amp;pmem&amp;nbsp; &amp;amp;ploc";&lt;/P&gt;&lt;P&gt;TITLE3 j=center "&amp;amp;thirty&amp;nbsp; &amp;amp;sixty&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;ninety ";&lt;/P&gt;&lt;P&gt;FOOTNOTE&amp;nbsp; j=right "Created on: &amp;amp;pdat";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OPTIONS NOBYLINE NUMBER PAGENO=1 NODATE;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PROC REPORT DATA=overmas3 NOWINDOWS&amp;nbsp; spanrows center headskip headline&amp;nbsp; style(header)=[font_size=9pt font_weight=bold]&lt;/P&gt;&lt;P&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; style(report)=[borderwidth=1pt cellpadding=2pt cellspacing=0 rules=all font_size=9pt] ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; BY dc_num;&lt;/P&gt;&lt;P&gt;&amp;nbsp; COLUMN prot_field pat_field mat_field&amp;nbsp; item_field exp_field late_field;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DEFINE prot_field&amp;nbsp; / order&amp;nbsp; style=[outputwidth=1.0in just=l fontsize=8pt] 'Protocol\n\nQCS\nPhone\nSA\nSAQC';&lt;/P&gt;&lt;P&gt;&amp;nbsp; DEFINE pat_field&amp;nbsp; / display style=[outputwidth=1.0in just=l fontsize=8pt]&lt;/P&gt;&lt;P&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; 'Patient\n\nInitials\nLocalID\nDate On\nLast Contacted';&lt;/P&gt;&lt;P&gt;&amp;nbsp; DEFINE mat_field&amp;nbsp; / display style=[outputwidth=2.50in&amp;nbsp; just=l fontsize=8pt] 'Material';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;&amp;nbsp; /*--- if mat_field &amp;gt; 2.5 inches we need to move the following 3 fields down 1 line for each 2.5 of material ---*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DEFINE item_field&amp;nbsp; / display style=[outputwidth=1.75in&amp;nbsp; just=l fontsize=8pt] 'Items';&lt;/P&gt;&lt;P&gt;&amp;nbsp; DEFINE exp_field&amp;nbsp; / display style=[outputwidth=.9in&amp;nbsp; just=c fontsize=8pt] 'Expected';&lt;/P&gt;&lt;P&gt;&amp;nbsp; DEFINE late_field&amp;nbsp; / display style=[outputwidth=.4in&amp;nbsp; just=c fontsize=8pt] 'Days/Late';&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have attached a copy of a snapshot of the report. You can see that wnen the first line wraps, the row in the second column for the second row is not longer lining up.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use proc print a lot, but I am not to familiar with proc report.&lt;/P&gt;&lt;BR /&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/10683iD2A58FD7AA8F59C0/image-size/large?v=1.0&amp;amp;px=600" border="0" alt="overdue.gif" title="overdue.gif" /&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/10684iA62597086DD091FE/image-size/large?v=1.0&amp;amp;px=600" border="0" alt="report.gif" title="report.gif" /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 Aug 2014 15:17:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/problem-lining-up-rows-between-columns/m-p/149874#M11568</guid>
      <dc:creator>pasvorto</dc:creator>
      <dc:date>2014-08-05T15:17:51Z</dc:date>
    </item>
    <item>
      <title>Re: problem lining up rows between columns</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/problem-lining-up-rows-between-columns/m-p/149875#M11569</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Upon further investigation, it appears that Adobe is doing the line wrapping, so SAS has no idea that it happened. I have decided to create 3 reports: 1 in landscape with the columns wide enough to not require wrapping; 1 in portrait with the font reduced enough to not require wrapping; and 1 in Excel which, because of the cells, would keep everything lined up. I will present each of these options to the user and let them decide what to do.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Aug 2014 14:49:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/problem-lining-up-rows-between-columns/m-p/149875#M11569</guid>
      <dc:creator>pasvorto</dc:creator>
      <dc:date>2014-08-06T14:49:19Z</dc:date>
    </item>
  </channel>
</rss>

