<?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: Invoking two different macros in a macro separately by passing different value to the parameter in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/559439#M156208</link>
    <description>&lt;P&gt;Sure, Thanks!&amp;nbsp; I appreciate&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 16 May 2019 18:29:35 GMT</pubDate>
    <dc:creator>SAS_USER10</dc:creator>
    <dc:date>2019-05-16T18:29:35Z</dc:date>
    <item>
      <title>Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558104#M155720</link>
      <description>&lt;P&gt;I am trying to create a macro within i am calling two other macros separately when passing different values to the parameter.&lt;/P&gt;&lt;P&gt;something like that-&lt;/P&gt;&lt;P&gt;1) %macro A;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; code&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;%mend A;&lt;/P&gt;&lt;P&gt;2) %macro B;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;code;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; %mend B;&lt;/P&gt;&lt;P&gt;3) %macro AB (var=);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;code;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;%mend AB;&lt;/P&gt;&lt;P&gt;how do i write the code in macro AB that if i try to call it by passing (var=A) it will call macro A and if its (var=B) it will call macro B.&lt;/P&gt;&lt;P&gt;how can i do - %macro AB (var=);&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;amp;var;&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;%mend;&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;%AB(var=A);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 12 May 2019 04:53:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558104#M155720</guid>
      <dc:creator>SAS_USER10</dc:creator>
      <dc:date>2019-05-12T04:53:48Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558105#M155721</link>
      <description>&lt;P&gt;Did you try the code you posted?&amp;nbsp; It should work.&lt;/P&gt;</description>
      <pubDate>Sun, 12 May 2019 05:07:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558105#M155721</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-05-12T05:07:33Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558107#M155723</link>
      <description>&lt;P&gt;I suppose what you want is:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro A(var=);
      code
%mend A;

%macro B(var=);
       code;&lt;BR /&gt;%mend B;

%macro AB;
    %A(var=A);
    %B(var=B);      
%mend AB;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 12 May 2019 05:15:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558107#M155723</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2019-05-12T05:15:44Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558109#M155725</link>
      <description>&lt;P&gt;Thanks Sir,&amp;nbsp; it worked.&amp;nbsp;&lt;/P&gt;&lt;P&gt;But i have a question, it may sound silly but what if we have 30-50 or more macros to call inside a macro.&lt;/P&gt;&lt;P&gt;can we do it without typing all the macros like %A(var=A), %B(var=B).........&amp;nbsp;&lt;/P&gt;&lt;P&gt;I mean how can we make code more generic in nature? or even is it possible to write a generic code for it?&lt;/P&gt;</description>
      <pubDate>Sun, 12 May 2019 05:43:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558109#M155725</guid>
      <dc:creator>SAS_USER10</dc:creator>
      <dc:date>2019-05-12T05:43:02Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558136#M155736</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/258468"&gt;@SAS_USER10&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Thanks Sir,&amp;nbsp; it worked.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But i have a question, it may sound silly but what if we have 30-50 or more macros to call inside a macro.&lt;/P&gt;
&lt;P&gt;can we do it without typing all the macros like %A(var=A), %B(var=B).........&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I mean how can we make code more generic in nature? or even is it possible to write a generic code for it?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Hypothetical questions are hard to answer.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In general if you have a complex code generation problem then you will probably find it to be much easier to use metadata (data about data) to drive the process.&amp;nbsp; Then you can use a DATA step to generate the code from the metadata.&amp;nbsp; You can reduce the complexity of the code generation step by creating macros encapsulate some steps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Say you had a list of "runs" you wanted to make. And each run had one or more macro calls it wanted to generate. Then you might use a step like this to generate code from that dataset with that information.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;filename code temp;
data _null_;
  set metadata ;
  by run_id;
  file code ;
  if first.run_id then put '%init_session(' run_id= ')';
  put '%' macro_name '(' parameter_values ')';
  if last.run_id then put '%term_session(' run_id= ')';
run;
%include code / source2;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now you can debug the code generation step by examining the program that is being generated.&lt;/P&gt;</description>
      <pubDate>Sun, 12 May 2019 15:36:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558136#M155736</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-05-12T15:36:15Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558155#M155743</link>
      <description>&lt;P&gt;Thanks Tom for the nice explanation.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Down here is what i actually need to do.....&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;%macro dm_attrib;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attrib usubjid length = $20 label = "Unique subject identifier"....&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%mend;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;%macro vs_attrib;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%mend;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;%macro attrib(domain=);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%&amp;amp;domain._attrib;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%mend;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;%attrib(domain=dm);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;create macros dm_attrib and vs_attrib, now create a new macro attrib in a way that when i pass the value dm to parameter domain&amp;nbsp;&lt;/P&gt;&lt;P&gt;it will invoke macro dm_attrib and when i pass vs it will call vs_attrib.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 12 May 2019 20:07:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558155#M155743</guid>
      <dc:creator>SAS_USER10</dc:creator>
      <dc:date>2019-05-12T20:07:05Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558169#M155753</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro foo;
   %put &amp;amp;sysmacroname;
%mend;
%macro bar;
   %put &amp;amp;sysmacroname;
%mend;
%macro blah;
   %put &amp;amp;sysmacroname;
%mend;
%macro baz;
   %put &amp;amp;sysmacroname;
%mend;
%macro code;
   %&amp;amp;word
%mend;
%loop(foo bar blah baz)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;See&amp;nbsp;&lt;A href="https://github.com/scottbass/SAS/tree/master/Macro" target="_blank"&gt;https://github.com/scottbass/SAS/tree/master/Macro&lt;/A&gt;&amp;nbsp;for the %loop macro.&lt;/P&gt;</description>
      <pubDate>Mon, 13 May 2019 01:58:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/558169#M155753</guid>
      <dc:creator>ScottBass</dc:creator>
      <dc:date>2019-05-13T01:58:31Z</dc:date>
    </item>
    <item>
      <title>Re: Invoking two different macros in a macro separately by passing different value to the parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/559439#M156208</link>
      <description>&lt;P&gt;Sure, Thanks!&amp;nbsp; I appreciate&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 16 May 2019 18:29:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Invoking-two-different-macros-in-a-macro-separately-by-passing/m-p/559439#M156208</guid>
      <dc:creator>SAS_USER10</dc:creator>
      <dc:date>2019-05-16T18:29:35Z</dc:date>
    </item>
  </channel>
</rss>

