<?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: Global macro variables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479148#M123632</link>
    <description>&lt;P&gt;%macro dqcreadin(id=);&lt;/P&gt;&lt;P&gt;%xls2sas(_infile=dqc.xlsx, _indir=../../../../../metadata, _sheet=Sheet1, _datarow=2, _outdata=dqcout);&lt;/P&gt;&lt;P&gt;data dqcout;&lt;BR /&gt;set dqcout(rename=(var1=id var3=title var6=variables var7=domain var8=issue var10=exception));&lt;BR /&gt;if issue='Yes';&lt;BR /&gt;if id="&amp;amp;id";&lt;BR /&gt;domain=tranwrd(domain,', ','#');&lt;BR /&gt;if index(variables,'--')&amp;gt;0 then variables=tranwrd(variables,'--',"&amp;amp;dsn.");&lt;BR /&gt;variables=tranwrd(variables,', ',' ');&lt;BR /&gt;dmvars =tranwrd(exception,',',' ');&lt;BR /&gt;keep id title variables domain issue dmvars ;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%global id title variables domain dmvars;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;select id, title , variables, domain, dmvars into :id, :title , :variables, :domain, :dmvars&lt;BR /&gt;from dqcout&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;id &amp;amp;title &amp;amp;variables &amp;amp;domain &amp;amp;dmvars;&lt;/P&gt;&lt;P&gt;%mend dqcreadin;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Main code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro missblfl;&lt;/P&gt;&lt;P&gt;%symdel variables;&lt;BR /&gt;%dqcreadin(id=0021);&lt;BR /&gt;%if %symexist(domain) %then %do;&lt;BR /&gt;%do i= 1 %to %eval(%sysfunc(count(&amp;amp;domain,#))+1);&lt;BR /&gt;%let dsn=%scan(&amp;amp;domain,&amp;amp;i,#);&lt;/P&gt;&lt;P&gt;%if %sysfunc(exist(&amp;amp;sdtm..&amp;amp;dsn)) %then %do;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data &amp;amp;dsn;&lt;BR /&gt;set &amp;amp;sdtm..&amp;amp;dsn (keep=usubjid &amp;amp;variables);&lt;BR /&gt;record=_n_;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%missblfl;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 18 Jul 2018 17:12:30 GMT</pubDate>
    <dc:creator>petlove</dc:creator>
    <dc:date>2018-07-18T17:12:30Z</dc:date>
    <item>
      <title>Global macro variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479136#M123626</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to reset the global macro value&amp;nbsp;before&amp;nbsp;the next loop.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am calling macro %dqcreadin which has macro variable: &amp;amp;variables (list of variables like ="&amp;amp;dsn.BLFL &amp;amp;dsn.ORRES"), &amp;amp;domain: list of datasets (e.g. LB#EG).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%dqcreadin;&lt;BR /&gt;%if %symexist(domain) %then %do;&lt;BR /&gt;%do i= 1 %to %eval(%sysfunc(count(&amp;amp;domain,#))+1);&lt;BR /&gt;%let dsn=%scan(&amp;amp;domain,&amp;amp;i,#);&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When next loop starts for new dataset e.g. here EG: &amp;amp;variables should have values EGBLFL EGORRES. However, in my&amp;nbsp;log&amp;nbsp;it has values of previous loop that is LBBLFL LBORRES.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried using "%symdel&amp;nbsp; Variables" in program before calling %dqcreadin. However, it still does have LBBLFL LBORRES.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 16:47:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479136#M123626</guid>
      <dc:creator>petlove</dc:creator>
      <dc:date>2018-07-18T16:47:21Z</dc:date>
    </item>
    <item>
      <title>Re: Global macro variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479140#M123629</link>
      <description>&lt;P&gt;Show us the code for %dqcreadin, and show us the main code where the macro is called.&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 16:50:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479140#M123629</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-07-18T16:50:53Z</dc:date>
    </item>
    <item>
      <title>Re: Global macro variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479148#M123632</link>
      <description>&lt;P&gt;%macro dqcreadin(id=);&lt;/P&gt;&lt;P&gt;%xls2sas(_infile=dqc.xlsx, _indir=../../../../../metadata, _sheet=Sheet1, _datarow=2, _outdata=dqcout);&lt;/P&gt;&lt;P&gt;data dqcout;&lt;BR /&gt;set dqcout(rename=(var1=id var3=title var6=variables var7=domain var8=issue var10=exception));&lt;BR /&gt;if issue='Yes';&lt;BR /&gt;if id="&amp;amp;id";&lt;BR /&gt;domain=tranwrd(domain,', ','#');&lt;BR /&gt;if index(variables,'--')&amp;gt;0 then variables=tranwrd(variables,'--',"&amp;amp;dsn.");&lt;BR /&gt;variables=tranwrd(variables,', ',' ');&lt;BR /&gt;dmvars =tranwrd(exception,',',' ');&lt;BR /&gt;keep id title variables domain issue dmvars ;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%global id title variables domain dmvars;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;select id, title , variables, domain, dmvars into :id, :title , :variables, :domain, :dmvars&lt;BR /&gt;from dqcout&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;id &amp;amp;title &amp;amp;variables &amp;amp;domain &amp;amp;dmvars;&lt;/P&gt;&lt;P&gt;%mend dqcreadin;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Main code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro missblfl;&lt;/P&gt;&lt;P&gt;%symdel variables;&lt;BR /&gt;%dqcreadin(id=0021);&lt;BR /&gt;%if %symexist(domain) %then %do;&lt;BR /&gt;%do i= 1 %to %eval(%sysfunc(count(&amp;amp;domain,#))+1);&lt;BR /&gt;%let dsn=%scan(&amp;amp;domain,&amp;amp;i,#);&lt;/P&gt;&lt;P&gt;%if %sysfunc(exist(&amp;amp;sdtm..&amp;amp;dsn)) %then %do;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data &amp;amp;dsn;&lt;BR /&gt;set &amp;amp;sdtm..&amp;amp;dsn (keep=usubjid &amp;amp;variables);&lt;BR /&gt;record=_n_;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%missblfl;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 17:12:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479148#M123632</guid>
      <dc:creator>petlove</dc:creator>
      <dc:date>2018-07-18T17:12:30Z</dc:date>
    </item>
    <item>
      <title>Re: Global macro variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479176#M123642</link>
      <description>&lt;P&gt;Be advised that frequent use of the program structure like this:&lt;/P&gt;
&lt;PRE&gt;data dqcout;
    set dqcout ;&lt;/PRE&gt;
&lt;P&gt;Can lead to difficult debugging as destroy the original data set. So when attempting to trace back to values of things manipulated (such as your variable var6 / variables ). Especially since you just read an external file in this case AND manipulated the value of the problematic variable in general.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 18:06:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479176#M123642</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-07-18T18:06:09Z</dc:date>
    </item>
    <item>
      <title>Re: Global macro variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479183#M123645</link>
      <description>Thank you for advise. Will follow it.</description>
      <pubDate>Wed, 18 Jul 2018 18:19:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479183#M123645</guid>
      <dc:creator>petlove</dc:creator>
      <dc:date>2018-07-18T18:19:34Z</dc:date>
    </item>
    <item>
      <title>Re: Global macro variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479244#M123667</link>
      <description>&lt;P&gt;I&amp;nbsp;changed VARIABLE name in %dqcreadin macro. It resolved the issue. Now, it resets the &amp;amp;variables values for each loop.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your help and suggestions.&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 20:02:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-macro-variables/m-p/479244#M123667</guid>
      <dc:creator>petlove</dc:creator>
      <dc:date>2018-07-18T20:02:31Z</dc:date>
    </item>
  </channel>
</rss>

