<?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: sas macro program in proc sql in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316104#M69031</link>
    <description>&lt;P&gt;That's not really clear.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What are you trying to do?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Some comments based on the code you've provided, see the comments. I'm really not sure how the second part aligns with your first set of code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let var1= tab; *create these as parameters to your macro;
%let  var2=VR2;
%let var3=ctr_1;
 
I will do;
%marco test; *Macro vs marco - note spelling!;
proc sql;
 create table county_%substr(&amp;amp;var1.,1,2)_&amp;amp;var2_&amp;amp;var3. as /*Dont use substr here, pre calculate it outside of the sql if necessary to help keep your code clean*/
select catx('-',&amp;amp;var1,&amp;amp;var2.) as Id,
          catx('-',&amp;amp;var1,&amp;amp;var2., &amp;amp;var3.) as section,
v4,
v5,
v6
 
from toto;
quit;

*No %mend;?;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 01 Dec 2016 22:56:37 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2016-12-01T22:56:37Z</dc:date>
    <item>
      <title>sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316102#M69030</link>
      <description>&lt;P&gt;Hello experts,&lt;/P&gt;
&lt;P&gt;Please, I want to use sas macro -program in proc sql to automate the treatement, but I still have the errors&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let var1= tab;&lt;/P&gt;
&lt;P&gt;%let&amp;nbsp; var2=VR2;&lt;/P&gt;
&lt;P&gt;%let var3=ctr_1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I will do;&lt;/P&gt;
&lt;P&gt;%marco test;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;create table county_%substr(&amp;amp;var1.,1,2)_&amp;amp;var2_&amp;amp;var3. as&lt;/P&gt;
&lt;P&gt;select catx('-',&amp;amp;var1,&amp;amp;var2.) as Id,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catx('-',&amp;amp;var1,&amp;amp;var2., &amp;amp;var3.) as section,&lt;/P&gt;
&lt;P&gt;v4,&lt;/P&gt;
&lt;P&gt;v5,&lt;/P&gt;
&lt;P&gt;v6&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;from toto;&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;is it possible to put the below party in sas macro-program&amp;nbsp; %init &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;create table county_%substr(&amp;amp;var1.,1,2)_&amp;amp;var2_&amp;amp;var3. as&lt;/P&gt;
&lt;P&gt;select catx('-',&amp;amp;var1,&amp;amp;var2.) as Id,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catx('-',&amp;amp;var1,&amp;amp;var2., &amp;amp;var3.) as section,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and do&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%macro test;&lt;/P&gt;
&lt;P&gt;%init;&lt;/P&gt;
&lt;P&gt;v4,&lt;/P&gt;
&lt;P&gt;v5,&lt;/P&gt;
&lt;P&gt;v6&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;from toto;&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;
&lt;P&gt;%mend test;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%test;&lt;/P&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;
&lt;P&gt;&amp;nbsp;&lt;/P&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;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 01 Dec 2016 22:50:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316102#M69030</guid>
      <dc:creator>LineMoon</dc:creator>
      <dc:date>2016-12-01T22:50:39Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316104#M69031</link>
      <description>&lt;P&gt;That's not really clear.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What are you trying to do?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Some comments based on the code you've provided, see the comments. I'm really not sure how the second part aligns with your first set of code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let var1= tab; *create these as parameters to your macro;
%let  var2=VR2;
%let var3=ctr_1;
 
I will do;
%marco test; *Macro vs marco - note spelling!;
proc sql;
 create table county_%substr(&amp;amp;var1.,1,2)_&amp;amp;var2_&amp;amp;var3. as /*Dont use substr here, pre calculate it outside of the sql if necessary to help keep your code clean*/
select catx('-',&amp;amp;var1,&amp;amp;var2.) as Id,
          catx('-',&amp;amp;var1,&amp;amp;var2., &amp;amp;var3.) as section,
v4,
v5,
v6
 
from toto;
quit;

*No %mend;?;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 01 Dec 2016 22:56:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316104#M69031</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-12-01T22:56:37Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316110#M69032</link>
      <description>&lt;P&gt;If you get error messages in the log post the log of the code ran and the error message. Post it to the forum in the code box to maintain formatting as the position of things can be of importance.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If the results are an error but not a code error then we need some example input data, the result data and what you expected should be the results.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your existing code should be generating a WARNING about not resolving a VAR2_ . I think you meant to use:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;create table county_&lt;/FONT&gt;&lt;FONT color="#ff0080" face="SAS Monospace" size="2"&gt;%substr&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;(&amp;amp;var1.,1,2)_&amp;amp;var2._&amp;amp;var3. ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;Note the . between &amp;amp;var2 and the _ to indicate the end of the macro variable name as &amp;amp;var2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;I agree with &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;&amp;nbsp;that use of %substr inline is not optimal coding style. &lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 01 Dec 2016 23:16:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316110#M69032</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2016-12-01T23:16:33Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316139#M69041</link>
      <description>&lt;P&gt;While I agree with those who would not code it that way, you can do what you are asking if you make a couple of changes:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;There has to be a PROC SQL statement somewhere. &amp;nbsp;You can't just add a CREATE statement in the middle of a program.&lt;/LI&gt;
&lt;LI&gt;When calling a macro, do not add an extra semicolon. &amp;nbsp;%init is correct, but %init; is incorrect.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 02 Dec 2016 04:12:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316139#M69041</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-12-02T04:12:44Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316553#M69203</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding﻿&lt;/a&gt;&amp;nbsp;: Thank you.&lt;/P&gt;
&lt;P&gt;I have tested your idea, it&amp;nbsp;is correct, it is working.&lt;/P&gt;
&lt;P&gt;I just add the below&amp;nbsp;modifications. Please, why %init is correct but %init; is not&amp;nbsp; correct ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let var1=alpha;&lt;BR /&gt;%let var2=beta;&lt;BR /&gt;%let var3=omega;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;proc sql ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;create table county_%substr(&amp;amp;var1., 1, 2)_&amp;amp;var2._&amp;amp;var3. as &lt;BR /&gt;&amp;nbsp;&amp;nbsp;select catx('-', "&amp;amp;var1.","&amp;amp;var2.") as Id, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catx('-', "&amp;amp;var1.", "&amp;amp;var2.", "&amp;amp;var3.") as section,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="sasSource"&gt;74 %macro test;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;75 %init&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;76 v4, v5, v6&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;77 from toto;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;78 quit;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;79&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;80 %mend test;&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;81&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;82 %test;&lt;/DIV&gt;
&lt;DIV class="sasNote" id="sasLogNote3_1480842983226"&gt;NOTE: Table WORK.COUNTY_AL_BETA_OMEGA created, with 1 rows and 5 columns.&lt;/DIV&gt;
&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="sasNote" id="sasLogNote4_1480842983226"&gt;NOTE: PROCEDURE SQL used (Total process time):&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;real time 0.01 seconds&lt;/DIV&gt;
&lt;DIV class="sasNote"&gt;cpu time 0.01 seconds&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 04 Dec 2016 09:22:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316553#M69203</guid>
      <dc:creator>LineMoon</dc:creator>
      <dc:date>2016-12-04T09:22:46Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316558#M69206</link>
      <description>&lt;P&gt;Calling a macro with %init (or any other macro for that matter) does not require a semicolon. &amp;nbsp;If you add one, it is not part of calling the macro. &amp;nbsp;It is just an extra semicolon that is text, and becomes part of the SAS program. &amp;nbsp;In most cases, adding an extra semicolon in the middle of a program does no harm. &amp;nbsp;It just becomes an extra do-nothing SAS statement. &amp;nbsp;In your case, however, the extra semicolon appears in the middle of a CREATE statement, ending that statement too early.&lt;/P&gt;</description>
      <pubDate>Sun, 04 Dec 2016 12:25:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316558#M69206</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-12-04T12:25:10Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316565#M69209</link>
      <description>&lt;P&gt;Your code will be much easier to understand and maintain if you move your macro defintions to before the block of code that will use them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro init;
 ?????
%end;
%macro test;
  %init
  v4,v5,v6
  from toto
;
quit;
%mend test;

proc sql ;
create table county_%substr(&amp;amp;var1.,1,2)_&amp;amp;var2_&amp;amp;var3. as
select catx('-',&amp;amp;var1,&amp;amp;var2.) as Id,
          catx('-',&amp;amp;var1,&amp;amp;var2., &amp;amp;var3.) as section,
%test;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Since those macros do not appear to be doing any conditional logic why not just replace them with macro variables instead?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let init= v1,v2,v3  ;
%let test= &amp;amp;init,v4,v5,v6 from toto ;

proc sql ;
  create table county_%substr(&amp;amp;var1,1,2)_&amp;amp;var2._&amp;amp;var3 as
    select catx('-',&amp;amp;var1,&amp;amp;var2) as Id
         , catx('-',&amp;amp;var1,&amp;amp;var2,&amp;amp;var3) as section
         , &amp;amp;test
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 04 Dec 2016 17:18:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316565#M69209</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2016-12-04T17:18:09Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316567#M69211</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom﻿&lt;/a&gt; : Thank you for your answer,&lt;/P&gt;
&lt;P&gt;That's wight, but the matter is that&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In one hand this section will be the same for all treatement&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sql&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
create &lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt; county_&lt;SPAN class="token macroname"&gt;%substr&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var1&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;2&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;_&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var2_&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var3&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; as
&lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;catx&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'-'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var1&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var2&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; as &lt;SPAN class="token keyword"&gt;Id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;
          &lt;SPAN class="token function"&gt;catx&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'-'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var1&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var2&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;var3&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; as section&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;in other hand, this section will change, it can be&amp;nbsp; "w4,z8, y11 from beta " or "m2,x2,l11 from lambda"&lt;/P&gt;
&lt;P&gt;That's why, I have used that méthode&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt; v4&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;v5&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;v6
  &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; toto
&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;,&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 04 Dec 2016 17:02:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316567#M69211</guid>
      <dc:creator>LineMoon</dc:creator>
      <dc:date>2016-12-04T17:02:54Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316569#M69212</link>
      <description>&lt;P&gt;In that case write a proper macro with parameters.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(var1,var2,var3,varlist,memname);
%local dsn varlistsql;
%let dsn = county_%substr(&amp;amp;var1,1,2)_&amp;amp;var2._&amp;amp;var3 ;
%if %length(&amp;amp;varlist) %then 
  %let varlistsql = ,%sysfunc(translate(%sysfunc(compbl(&amp;amp;varlist)),',',' '))
;

proc sql ;
  create table &amp;amp;dsn as
    select catx('-',&amp;amp;var1,&amp;amp;var2) as Id
         , catx('-',&amp;amp;var1,&amp;amp;var2,&amp;amp;var3) as section
         &amp;amp;varlistsql
    from &amp;amp;memname
  ;
quit;
%mend test ;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then you could call like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%test(var1=A,var2=B,var3=C,varlist=w4 z8 y11,memname=beta)
%test(var1=A,var2=B,var3=C,varlist=m2 x2 l11,memname=labda);

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Or even like this if you want to pass in the values of your existing VAR1 to VAR3 macro variables as the values to pass for those three parameters and if you didn't want to include any other variables from your source table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%test(var1=&amp;amp;var1,var2=&amp;amp;var2,var3=&amp;amp;var3,varlist=,memname=labda);
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 04 Dec 2016 17:32:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316569#M69212</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2016-12-04T17:32:22Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316577#M69217</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom﻿&lt;/a&gt;: that's right , it is a good idea.&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;
&lt;P&gt;So please, what's about the length of the varlist, if I have the hundrerd of variables ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;varlist&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 04 Dec 2016 19:07:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316577#M69217</guid>
      <dc:creator>LineMoon</dc:creator>
      <dc:date>2016-12-04T19:07:41Z</dc:date>
    </item>
    <item>
      <title>Re: sas macro program in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316584#M69219</link>
      <description>&lt;P&gt;A macro variable can be 64K characters long. So you could easily have thousands of variables.&lt;/P&gt;</description>
      <pubDate>Sun, 04 Dec 2016 22:18:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-macro-program-in-proc-sql/m-p/316584#M69219</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2016-12-04T22:18:40Z</dc:date>
    </item>
  </channel>
</rss>

