<?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: macro for excel file output (ods) in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300174#M16965</link>
    <description>you rock!   thank you.   =EXACT(census!A4499,cendev!    =EXACT(census!B4499,cendev!    =EXACT(census!C4499,cendev!&lt;BR /&gt;=EXACT(census!A4500,cendev!    =EXACT(census!B4500,cendev!    =EXACT(census!C4500,cendev!&lt;BR /&gt;&lt;BR /&gt;N = 4500&lt;BR /&gt;</description>
    <pubDate>Thu, 22 Sep 2016 17:57:34 GMT</pubDate>
    <dc:creator>kjohnsonm</dc:creator>
    <dc:date>2016-09-22T17:57:34Z</dc:date>
    <item>
      <title>macro for excel file output (ods)</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300164#M16963</link>
      <description>&lt;P&gt;Hello all,&lt;/P&gt;
&lt;P&gt;I am attempting to output in a data set text like this for auto caluclation in an excell file that SAS ODS produces for me:&lt;/P&gt;
&lt;P&gt;=EXACT({table_name1}!A1,{table_name2}!A1)&lt;/P&gt;
&lt;P&gt;=EXACT({table_name1}!A2,{table_name2}!A2)&lt;/P&gt;
&lt;P&gt;=EXACT({table_name1}!A3,{table_name2}!A3)&lt;/P&gt;
&lt;P&gt;=EXACT({table_name1}!A#...,{table_name2}!A#...)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro create(howmany);
   %do i=1 %to &amp;amp;howmany;
      data check_db;
	a&amp;amp;i.="=EXACT(census!A&amp;amp;i.,cendev!A&amp;amp;i.)"; 
	B&amp;amp;i.="=EXACT(census!B&amp;amp;i.,cendev!B&amp;amp;i.)"; 
	c&amp;amp;i.="=EXACT(census!C&amp;amp;i.,cendev!C&amp;amp;i.)";&lt;BR /&gt; output;
      run;
   %end;
%mend create;

%create(1);

proc print data=check_db;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;My output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Obs&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; a1&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B1&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =EXACT(census!A1,cendev!A1)&amp;nbsp;&amp;nbsp;&amp;nbsp; =EXACT(census!B1,cendev!B1)&amp;nbsp;&amp;nbsp;&amp;nbsp; =EXACT(census!C1,cendev!C1)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;However when I put in 2, or 3, 4, ...&lt;/P&gt;
&lt;P&gt;I still only get one line (1 obs) and the numbers all change to the number passed in.&amp;nbsp;&amp;nbsp; Can someone straighten me out here?&lt;/P&gt;
&lt;P&gt;What I want is if I pass in 20 I get 20 obs all numbered from 1 to 20.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%create(2);

proc print data=check_db;
run;
&lt;/CODE&gt;&lt;/PRE&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;&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;&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;&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;&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;&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14:52 Wednesday, September 21, 2016 837&lt;BR /&gt;&lt;BR /&gt;Obs&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; a2&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B2&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c2&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =EXACT(census!A2,cendev!A2)&amp;nbsp;&amp;nbsp;&amp;nbsp; =EXACT(census!B2,cendev!B2)&amp;nbsp;&amp;nbsp;&amp;nbsp; =EXACT(census!C2,cendev!C2)&lt;/P&gt;
&lt;P&gt;PS I get no errors:&lt;/P&gt;
&lt;P&gt;4097&amp;nbsp; %macro create(howmany);&lt;BR /&gt;4098&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i=1 %to &amp;amp;howmany;&lt;BR /&gt;4099&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data check_db;&lt;BR /&gt;4100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a&amp;amp;i.="=EXACT(census!A&amp;amp;i.,cendev!A&amp;amp;i.)";&lt;BR /&gt;4101&amp;nbsp; /*output;*/&lt;BR /&gt;4102&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;amp;i.="=EXACT(census!B&amp;amp;i.,cendev!B&amp;amp;i.)";&lt;BR /&gt;4103&amp;nbsp; /*output;*/&lt;BR /&gt;4104&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;amp;i.="=EXACT(census!C&amp;amp;i.,cendev!C&amp;amp;i.)"; output;&lt;BR /&gt;4105&lt;BR /&gt;4106&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;4107&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;BR /&gt;4108&amp;nbsp; %mend create;&lt;BR /&gt;4109&lt;BR /&gt;4110&amp;nbsp; %create(2);&lt;BR /&gt;&lt;BR /&gt;NOTE: The data set WORK.CHECK_DB has 1 observations and 3 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;NOTE: The data set WORK.CHECK_DB has 1 observations and 3 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;4111&lt;BR /&gt;4112&amp;nbsp; proc print data=check_db;&lt;BR /&gt;4113&amp;nbsp; run;&lt;BR /&gt;&lt;BR /&gt;NOTE: There were 1 observations read from the data set WORK.CHECK_DB.&lt;BR /&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;TIA.&amp;nbsp; -KJ&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 22 Sep 2016 17:35:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300164#M16963</guid>
      <dc:creator>kjohnsonm</dc:creator>
      <dc:date>2016-09-22T17:35:29Z</dc:date>
    </item>
    <item>
      <title>Re: macro for excel file output (ods)</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300171#M16964</link>
      <description>&lt;P&gt;Each iteration through the %DO is creating a complete DATA step.&amp;nbsp; Even your log shows that two data steps completed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to create one DATA step, with additional assignment statements, you have to move two pieces:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- the DATA statement goes before the %DO loop&lt;/P&gt;
&lt;P&gt;- the RUN statement goes after the %END statement&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you were to add this statement before running the macro, you could more easily follow what is happening:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;options mprint;&lt;/P&gt;</description>
      <pubDate>Thu, 22 Sep 2016 17:51:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300171#M16964</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-09-22T17:51:10Z</dc:date>
    </item>
    <item>
      <title>Re: macro for excel file output (ods)</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300174#M16965</link>
      <description>you rock!   thank you.   =EXACT(census!A4499,cendev!    =EXACT(census!B4499,cendev!    =EXACT(census!C4499,cendev!&lt;BR /&gt;=EXACT(census!A4500,cendev!    =EXACT(census!B4500,cendev!    =EXACT(census!C4500,cendev!&lt;BR /&gt;&lt;BR /&gt;N = 4500&lt;BR /&gt;</description>
      <pubDate>Thu, 22 Sep 2016 17:57:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300174#M16965</guid>
      <dc:creator>kjohnsonm</dc:creator>
      <dc:date>2016-09-22T17:57:34Z</dc:date>
    </item>
    <item>
      <title>Re: macro for excel file output (ods)</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300175#M16966</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro create(howmany);
data check_db;
	%do i=1 %to &amp;amp;howmany;
		A="=EXACT(census!A&amp;amp;i.,cendev!A&amp;amp;i.)";
		B="=EXACT(census!B&amp;amp;i.,cendev!B&amp;amp;i.)";
		C="=EXACT(census!C&amp;amp;i.,cendev!C&amp;amp;i.)";
	output;
	%end;
run;
%mend create;

%create(4500);
title 'Auto check matching counts';
proc print data=check_db noobs n;
run;
title;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 22 Sep 2016 17:58:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/macro-for-excel-file-output-ods/m-p/300175#M16966</guid>
      <dc:creator>kjohnsonm</dc:creator>
      <dc:date>2016-09-22T17:58:33Z</dc:date>
    </item>
  </channel>
</rss>

