<?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 using loop in the define step of proc report in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535099#M22374</link>
    <description>&lt;P&gt;Here is my question:&lt;/P&gt;&lt;P&gt;I want to using loop to repeat define step in proc report.&lt;/P&gt;&lt;P&gt;Here is my example:&lt;/P&gt;&lt;P&gt;*get data;&lt;/P&gt;&lt;P&gt;data mydata;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;set sashelp.class;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*rename the columns with regular name, like mycol1, mycol2...;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;%macro&lt;/SPAN&gt;&lt;SPAN&gt; rename_col(inset&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;,outset&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;proc sql&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;create table&lt;/SPAN&gt;&lt;SPAN&gt; rename_table_1 &lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;select&lt;/SPAN&gt; &lt;SPAN&gt;trim&lt;/SPAN&gt;&lt;SPAN&gt;(name)&lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; oldname &lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;dictionary.&lt;/SPAN&gt;&lt;SPAN&gt;columns&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;where&lt;/SPAN&gt; &lt;SPAN&gt;libname&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'WORK'&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN&gt;memname&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;upcase&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;amp;inset&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;data&lt;/SPAN&gt; &lt;SPAN&gt;rename_table_2&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;set&lt;/SPAN&gt; &lt;SPAN&gt;rename_table_1&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;nrow&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;put&lt;/SPAN&gt;&lt;SPAN&gt;(_n_,&lt;/SPAN&gt;&lt;SPAN&gt;3&lt;/SPAN&gt;&lt;SPAN&gt;.);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;newname&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;compress&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;cat&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"mycol"&lt;/SPAN&gt;&lt;SPAN&gt;,nrow));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;proc sql&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;select&lt;/SPAN&gt; &lt;SPAN&gt;cats&lt;/SPAN&gt;&lt;SPAN&gt;(oldname,&lt;/SPAN&gt;&lt;SPAN&gt;'='&lt;/SPAN&gt;&lt;SPAN&gt;,newname)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;into&lt;/SPAN&gt;&lt;SPAN&gt; :myrename &lt;/SPAN&gt;&lt;SPAN&gt;separated by&lt;/SPAN&gt; &lt;SPAN&gt;' '&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; rename_table_2&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;data&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;outset&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;set&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;inset&lt;/SPAN&gt;&lt;SPAN&gt;.(&lt;/SPAN&gt;&lt;SPAN&gt;rename&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;&amp;amp;myrename&lt;/SPAN&gt;&lt;SPAN&gt;));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;%mend&lt;/SPAN&gt;&lt;SPAN&gt; rename_col;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;%rename_col(inset=mydata,ouset=finaldata);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*loop define step in proc report, like, define mycol1 / "title1"; define mycol2 / "title2";.....*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;proc report data=finaldata;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;array headers(*) $ ("title1" "title2" "title3" "title4" "title5");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;array cols(*) (mycol1 mycol2 mycol3 mycol4 mycol5);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;do i=1 to dim(headers);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; define cols(i) / headers(i);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;end;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Finally, the code does not work. Array could not be used proc report, excepting compute block.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Is there another way to implement this function?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 13 Feb 2019 05:04:09 GMT</pubDate>
    <dc:creator>wikich</dc:creator>
    <dc:date>2019-02-13T05:04:09Z</dc:date>
    <item>
      <title>using loop in the define step of proc report</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535099#M22374</link>
      <description>&lt;P&gt;Here is my question:&lt;/P&gt;&lt;P&gt;I want to using loop to repeat define step in proc report.&lt;/P&gt;&lt;P&gt;Here is my example:&lt;/P&gt;&lt;P&gt;*get data;&lt;/P&gt;&lt;P&gt;data mydata;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;set sashelp.class;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*rename the columns with regular name, like mycol1, mycol2...;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;%macro&lt;/SPAN&gt;&lt;SPAN&gt; rename_col(inset&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;,outset&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;proc sql&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;create table&lt;/SPAN&gt;&lt;SPAN&gt; rename_table_1 &lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;select&lt;/SPAN&gt; &lt;SPAN&gt;trim&lt;/SPAN&gt;&lt;SPAN&gt;(name)&lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; oldname &lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;dictionary.&lt;/SPAN&gt;&lt;SPAN&gt;columns&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;where&lt;/SPAN&gt; &lt;SPAN&gt;libname&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'WORK'&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN&gt;memname&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;upcase&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;amp;inset&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;data&lt;/SPAN&gt; &lt;SPAN&gt;rename_table_2&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;set&lt;/SPAN&gt; &lt;SPAN&gt;rename_table_1&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;nrow&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;put&lt;/SPAN&gt;&lt;SPAN&gt;(_n_,&lt;/SPAN&gt;&lt;SPAN&gt;3&lt;/SPAN&gt;&lt;SPAN&gt;.);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;newname&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;compress&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;cat&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"mycol"&lt;/SPAN&gt;&lt;SPAN&gt;,nrow));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;proc sql&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;select&lt;/SPAN&gt; &lt;SPAN&gt;cats&lt;/SPAN&gt;&lt;SPAN&gt;(oldname,&lt;/SPAN&gt;&lt;SPAN&gt;'='&lt;/SPAN&gt;&lt;SPAN&gt;,newname)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;into&lt;/SPAN&gt;&lt;SPAN&gt; :myrename &lt;/SPAN&gt;&lt;SPAN&gt;separated by&lt;/SPAN&gt; &lt;SPAN&gt;' '&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; rename_table_2&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;quit;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;data&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;outset&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;set&lt;/SPAN&gt; &lt;SPAN&gt;&amp;amp;inset&lt;/SPAN&gt;&lt;SPAN&gt;.(&lt;/SPAN&gt;&lt;SPAN&gt;rename&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;&amp;amp;myrename&lt;/SPAN&gt;&lt;SPAN&gt;));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;%mend&lt;/SPAN&gt;&lt;SPAN&gt; rename_col;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;%rename_col(inset=mydata,ouset=finaldata);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*loop define step in proc report, like, define mycol1 / "title1"; define mycol2 / "title2";.....*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;proc report data=finaldata;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;array headers(*) $ ("title1" "title2" "title3" "title4" "title5");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;array cols(*) (mycol1 mycol2 mycol3 mycol4 mycol5);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;do i=1 to dim(headers);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; define cols(i) / headers(i);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;end;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Finally, the code does not work. Array could not be used proc report, excepting compute block.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Is there another way to implement this function?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Feb 2019 05:04:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535099#M22374</guid>
      <dc:creator>wikich</dc:creator>
      <dc:date>2019-02-13T05:04:09Z</dc:date>
    </item>
    <item>
      <title>Re: using loop in the define step of proc report</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535107#M22375</link>
      <description>Hi:&lt;BR /&gt;  It is not clear to me what you want to do, or why. The DEFINE statement allows you to provide the column header that you want to use for each item in your COLUMN statement, why not just use that capability.&lt;BR /&gt;&lt;BR /&gt;  Although you can use an ARRAY in a COMPUTE block, the ARRAY will NOT touch the values of the COLUMN headers, as you envision. The ARRAY might be used to perform some operation on the column values, but NOT on the column headers. That is the purpose of the permanently defined labels or the use of the label option in the DEFINE statement.&lt;BR /&gt;&lt;BR /&gt;Cynthia</description>
      <pubDate>Wed, 13 Feb 2019 06:19:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535107#M22375</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2019-02-13T06:19:37Z</dc:date>
    </item>
    <item>
      <title>Re: using loop in the define step of proc report</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535110#M22376</link>
      <description>&lt;P&gt;Thanks for your reply,&amp;nbsp;&lt;SPAN&gt;Cynthia.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I want to write a macro to form a report dynamically with the header I provided.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In my&amp;nbsp; case, I have many table to output. Every table have different header names.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;for example, i have a table with 10 columns. If I want to generate a table with specific header manually, I have to write define ../.. 10 times. In addition, I have more than 30 tables like this to export. It is tedious and boring.&lt;/P&gt;&lt;P&gt;So I want to write a macro to deal with such problem.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Feb 2019 06:34:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535110#M22376</guid>
      <dc:creator>wikich</dc:creator>
      <dc:date>2019-02-13T06:34:58Z</dc:date>
    </item>
    <item>
      <title>Re: using loop in the define step of proc report</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535113#M22378</link>
      <description>&lt;P&gt;Store names and labels in a dataset, and use call execute() from that:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data columns;
input name label;
cards;
mycol1 title1
mycol2 title2
mycol3 title3
mycol4 title4
mycol5 title5
;
run;

data _null_;
set columns end=eof;
if _n_ = 1 then call execute('proc report data=finaldata;');
call execute('define ' !! name !! '/ "' !! trim(label) !! '";');
if eof then call execute('run;');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You will probably expand the data _null_ step so that it also creates the column statement.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Feb 2019 07:12:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535113#M22378</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-02-13T07:12:27Z</dc:date>
    </item>
    <item>
      <title>Re: using loop in the define step of proc report</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535118#M22379</link>
      <description>&lt;P&gt;Thank you KurtBremser.&lt;/P&gt;&lt;P&gt;Your mehod works.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Feb 2019 07:37:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/using-loop-in-the-define-step-of-proc-report/m-p/535118#M22379</guid>
      <dc:creator>wikich</dc:creator>
      <dc:date>2019-02-13T07:37:01Z</dc:date>
    </item>
  </channel>
</rss>

