<?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 A simple sas macro in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7908#M252</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You apparently didn't notice the title of that particular exhibit in the paper it came from: "Figure 6. A Common Error"&amp;nbsp; see: &lt;A href="http://www.nesug.org/proceedings/nesug03/bt/bt009.pdf"&gt;http://www.nesug.org/proceedings/nesug03/bt/bt009.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In short, the code won't work as written.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, it is also a nice summary on the topic.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 13 Sep 2011 15:25:15 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2011-09-13T15:25:15Z</dc:date>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7901#M245</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I developed a simple macro as below. The purpose is to create dummy age groups based on different cut-off value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to have 3 variables: age1, age2 and ag3. All these 3 variables are binary (0, 1). For example, if age &amp;lt; max(age) / 3, then age1 = 1, else age1=0.&amp;nbsp; Similarly for age2 and age3.&amp;nbsp; Unfortunately, the resut from PROC FREQ is wrong (all 0).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%LET n=3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro threshold;&lt;BR /&gt;PROC SQL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT max(age) INTO:max&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM work.data;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;DATA work.test;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET work.data;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %DO i=1 %TO &amp;amp;n-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %IF age &amp;lt; &amp;amp;i * &amp;amp;max / &amp;amp;n&amp;nbsp;&amp;nbsp; %THEN age&amp;amp;i=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %ELSE age&amp;amp;i=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %END;&lt;BR /&gt;%mend threshold;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%threshold&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC FREQ DATA=work.test(obs=1000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLES age1 age2 age3;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 12:15:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7901#M245</guid>
      <dc:creator>bncoxuk</dc:creator>
      <dc:date>2011-09-13T12:15:53Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7902#M246</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You mix macro and non-macro code incorrectly.&amp;nbsp; However, you don't even need a macro and I'd suggest reconsidering your design.&amp;nbsp; I could definitely be wrong, but I'd think that you really want to include minimum and maximum ages in your logic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, using sashelp.class, does the following reflect what you really want to accomplish?:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set sashelp.class;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%LET n=3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SELECT min(age),max(age),max(age)-min(age)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO :min, :max, :range&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM work.data&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA work.test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET work.data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array age_group(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DO i=1 TO &amp;amp;n.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF &amp;amp;min.+(i-1)*&amp;amp;range./&amp;amp;n.&amp;lt;=age&amp;lt;=&amp;amp;min.+i*&amp;amp;range./&amp;amp;n.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN age_group(i)=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE age_group(i)=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC FREQ DATA=work.test(obs=1000);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLES age_group:*age;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 13:34:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7902#M246</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-09-13T13:34:05Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7903#M247</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi art, thanks for reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am wondering what is 'macro and non-macro code' here. Do you mean that PROC SQL is non-macro code?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I really want to incorporate all codes (except PROC FREQ) in a single macro, what is the right answer?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 13:49:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7903#M247</guid>
      <dc:creator>bncoxuk</dc:creator>
      <dc:date>2011-09-13T13:49:25Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7904#M248</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set sashelp.class end=eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if eof then do age=1 to 14;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%LET n=3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro threshold;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT max(age) INTO:max&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM work.data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; quit;&lt;/P&gt;&lt;P&gt;/*RUN;*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA work.test;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SET work.data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %DO i=1 %TO &amp;amp;n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF age &amp;lt;= &amp;amp;i * &amp;amp;max / &amp;amp;n&amp;nbsp;&amp;nbsp; THEN age&amp;amp;i=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE age&amp;amp;i=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %END;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend threshold;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%threshold&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC FREQ DATA=work.test(obs=1000);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLES age1 age2 age3;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 14:16:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7904#M248</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-09-13T14:16:20Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7905#M249</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Hi art, it is a good code and it worked.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I found my problem is from the %if. So I should not use %if when %do is used. Can I ask why? I have assumed that for macro code, all conditional statements (e.g., if, do) should add the '%' sign.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 14:38:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7905#M249</guid>
      <dc:creator>bncoxuk</dc:creator>
      <dc:date>2011-09-13T14:38:12Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7906#M250</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can find a nice explanation of the timing considerations at: &lt;A href="http://www2.sas.com/proceedings/sugi27/p020-27.pdf"&gt;http://www2.sas.com/proceedings/sugi27/p020-27.pdf&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 14:52:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7906#M250</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-09-13T14:52:29Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7907#M251</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Thanks for sharing the resource, art.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I just found a macro code online as below. Both if and %if are used. Very confused :smileyconfused: Do you mind if please give a clue?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro claimsrep;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set claims end=eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp; count + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if eof then call symput(‘count’, left(put(count,5.)));&lt;/P&gt;&lt;P&gt;&amp;nbsp; %if &amp;amp;count &amp;gt; 0 %then %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* additional sas statements */&lt;/P&gt;&lt;P&gt;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;%mend claimsrep;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%claimsrep&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 15:08:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7907#M251</guid>
      <dc:creator>bncoxuk</dc:creator>
      <dc:date>2011-09-13T15:08:27Z</dc:date>
    </item>
    <item>
      <title>A simple sas macro</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7908#M252</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You apparently didn't notice the title of that particular exhibit in the paper it came from: "Figure 6. A Common Error"&amp;nbsp; see: &lt;A href="http://www.nesug.org/proceedings/nesug03/bt/bt009.pdf"&gt;http://www.nesug.org/proceedings/nesug03/bt/bt009.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In short, the code won't work as written.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, it is also a nice summary on the topic.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2011 15:25:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/A-simple-sas-macro/m-p/7908#M252</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-09-13T15:25:15Z</dc:date>
    </item>
  </channel>
</rss>

