<?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 Understanding. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77464#M16746</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To Shivas,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for giving a debuging tools, I need time to digest.&lt;/P&gt;&lt;P&gt;To Ksharp,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for giving a thought, but I am a greenhand , have to learn before create.(those codes not mine).&lt;/P&gt;&lt;P&gt;To Alpay,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for taking time to write the sample code for me. Very useful. I am trying to reading the logs.&lt;/P&gt;&lt;P&gt;And thank you all for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 Jun 2012 06:21:35 GMT</pubDate>
    <dc:creator>bbb_NG</dc:creator>
    <dc:date>2012-06-07T06:21:35Z</dc:date>
    <item>
      <title>Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77458#M16740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,can any one help to explain the following code within a macro;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.5pt; font-family: 宋体;"&gt;%let Cond=;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to &amp;amp;Nvars; *Nvars means how many variables within a dataset;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if (&amp;amp;i&amp;gt;1) %then %let Cond=&amp;amp;Cond and ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;V&amp;amp;i=0 %then %do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=C %then&amp;nbsp;&amp;nbsp; *Ti helps to identify the variable's type, c or n;&lt;BR /&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; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i = '';&amp;nbsp;&amp;nbsp; /* String C */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=N %then&amp;nbsp;&amp;nbsp; &lt;BR /&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; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i=. ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Numeric N */&lt;BR /&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; %end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %else %do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=C %then&amp;nbsp;&amp;nbsp; &lt;BR /&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; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne '' ;&amp;nbsp; /* String C */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=N %then&amp;nbsp;&amp;nbsp; &lt;BR /&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; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne . ;&amp;nbsp;&amp;nbsp; /* Numeric N */&lt;BR /&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; %end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;Pls give a hand. You need not explain sentance by sentance, what I don't understand is the changing of Cond,&lt;/P&gt;&lt;P&gt;what happened to the variable cond(condition)?&lt;/P&gt;&lt;P&gt;what's the value for cond after %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne '' ;(say)&lt;/P&gt;&lt;P&gt;Very thanks.&lt;/P&gt;&lt;P&gt;Dawn&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 03:24:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77458#M16740</guid>
      <dc:creator>bbb_NG</dc:creator>
      <dc:date>2012-06-07T03:24:42Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77459#M16741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Add something.&lt;/P&gt;&lt;P&gt;There is a dataset with 1/0 values only,(0 for missing value,1 for non-missing value)&lt;/P&gt;&lt;P&gt;observation 1 might be 1 1 1 1--- 1&lt;/P&gt;&lt;P&gt;this part of code is aiming to find whether the above variable pattern exist in the data set, using cond.&lt;/P&gt;&lt;P&gt;thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 03:31:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77459#M16741</guid>
      <dc:creator>bbb_NG</dc:creator>
      <dc:date>2012-06-07T03:31:04Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77460#M16742</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use this options you will get lot of information in the log&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Options symbolgen mprint mprintnest mlogic merror;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Shiva&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 04:26:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77460#M16742</guid>
      <dc:creator>shivas</dc:creator>
      <dc:date>2012-06-07T04:26:43Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77461#M16743</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;what happened to the variable cond(condition)?&lt;/P&gt;
&lt;P&gt;what's the value for cond after %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne '' ;(say)&lt;/P&gt;
&lt;P&gt;Very thanks.&lt;/P&gt;
&lt;P&gt;Dawn&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;First of all, I don't think your code is good.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems that macro variable cond is trying to make a condition which can judge whether a variable(&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ) is missing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why not use missing() ,which can take care of both numberic and character variable.&lt;/P&gt;&lt;P&gt;You don't need to write so many and so obscure code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 04:43:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77461#M16743</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-06-07T04:43:58Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77462#M16744</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Plus,&lt;/P&gt;&lt;P&gt;Why not use PRX function to check this pattern, which is very very powerful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;what's the value for cond after %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne '' ;(say)&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;It will generate something like :&lt;/P&gt;&lt;P&gt;var1 ne &amp;amp;&amp;amp; var2 &amp;amp;&amp;amp; var3 &amp;amp;&amp;amp; var4 ........&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 04:48:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77462#M16744</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-06-07T04:48:41Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77463#M16745</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I tried to replicate what your code was doing.&lt;/P&gt;&lt;P&gt;Added a %put statement before the last %end statement.&lt;/P&gt;&lt;P&gt;&amp;nbsp; %put i=&amp;amp;i v&amp;amp;i = &amp;amp;&amp;amp;v&amp;amp;i t&amp;amp;i &amp;amp;&amp;amp;t&amp;amp;i Cond = "&amp;amp;Cond";&lt;/P&gt;&lt;P&gt;To me, it looks like a statement is being constructed to check whether the value of varıables are mıssıng or non-mıssıng based on the value of ındıcators and types of varıables. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Zafer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;&amp;nbsp; numvar = .; charvar = ''; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; numvar = .; charvar = 'a'; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; numvar = 1; charvar = ''; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; numvar = 1; charvar = 'a'; output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp; v1 = (numvar = .);&lt;/P&gt;&lt;P&gt;&amp;nbsp; v2 = (charvar = '');&lt;/P&gt;&lt;P&gt;&amp;nbsp; keep v1 v2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let NVars = 2;&lt;/P&gt;&lt;P&gt;%let var1 = numvar;&lt;/P&gt;&lt;P&gt;%let var2 = charvar;&lt;/P&gt;&lt;P&gt;%let t1 = N;&lt;/P&gt;&lt;P&gt;%let t2 = C;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro test(v1,v2);&lt;/P&gt;&lt;P&gt;%let Cond=;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to &amp;amp;Nvars;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %if (&amp;amp;i&amp;gt;1) %then %let Cond=&amp;amp;Cond and ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %if &amp;amp;&amp;amp;V&amp;amp;i=0 %then %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=C %then &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i = ' ';&amp;nbsp;&amp;nbsp; /* String C */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=N %then &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i = . ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Numeric N */&lt;/P&gt;&lt;P&gt;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %else %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=C %then &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne ' ' ;&amp;nbsp; /* String C */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;&amp;amp;T&amp;amp;i=N %then &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let Cond=&amp;amp;Cond &amp;amp;&amp;amp;Var&amp;amp;i ne . ;&amp;nbsp;&amp;nbsp; /* Numeric N */&lt;/P&gt;&lt;P&gt;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %put i=&amp;amp;i v&amp;amp;i = &amp;amp;&amp;amp;v&amp;amp;i t&amp;amp;i &amp;amp;&amp;amp;t&amp;amp;i Cond = "&amp;amp;Cond";&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%test(0,0);&lt;/P&gt;&lt;P&gt;%test(0,1);&lt;/P&gt;&lt;P&gt;%test(1,0);&lt;/P&gt;&lt;P&gt;%test(1,1);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 05:53:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77463#M16745</guid>
      <dc:creator>Alpay</dc:creator>
      <dc:date>2012-06-07T05:53:40Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Understanding.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77464#M16746</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To Shivas,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for giving a debuging tools, I need time to digest.&lt;/P&gt;&lt;P&gt;To Ksharp,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for giving a thought, but I am a greenhand , have to learn before create.(those codes not mine).&lt;/P&gt;&lt;P&gt;To Alpay,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks for taking time to write the sample code for me. Very useful. I am trying to reading the logs.&lt;/P&gt;&lt;P&gt;And thank you all for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2012 06:21:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Understanding/m-p/77464#M16746</guid>
      <dc:creator>bbb_NG</dc:creator>
      <dc:date>2012-06-07T06:21:35Z</dc:date>
    </item>
  </channel>
</rss>

