<?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 Recording an observation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94552#M19951</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;Consider a Table:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ID Var1 Var2 Var3 Var4 Var5&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to see, when is the first time value 3 has generated in var1 - var5&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My Method to do it is following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data Need;&lt;/P&gt;&lt;P&gt; Set Have;&lt;/P&gt;&lt;P&gt; Array check(*) Var1 - Var5&lt;/P&gt;&lt;P&gt;Do i = 1 to 5;&lt;/P&gt;&lt;P&gt; if Check(i) = 3 then do;&lt;/P&gt;&lt;P&gt; Flag = i; goto : en;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt; end; &lt;/P&gt;&lt;P&gt;en: Run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Goto statement helps me come out of the loop first time my condition satisties. It might not be a sophisticated way to write code but it works.&amp;nbsp; Any suggestions how this can be improved or something alternative?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 09 Dec 2012 07:06:59 GMT</pubDate>
    <dc:creator>bnarang</dc:creator>
    <dc:date>2012-12-09T07:06:59Z</dc:date>
    <item>
      <title>Recording an observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94552#M19951</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;Consider a Table:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ID Var1 Var2 Var3 Var4 Var5&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to see, when is the first time value 3 has generated in var1 - var5&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My Method to do it is following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data Need;&lt;/P&gt;&lt;P&gt; Set Have;&lt;/P&gt;&lt;P&gt; Array check(*) Var1 - Var5&lt;/P&gt;&lt;P&gt;Do i = 1 to 5;&lt;/P&gt;&lt;P&gt; if Check(i) = 3 then do;&lt;/P&gt;&lt;P&gt; Flag = i; goto : en;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt; end; &lt;/P&gt;&lt;P&gt;en: Run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Goto statement helps me come out of the loop first time my condition satisties. It might not be a sophisticated way to write code but it works.&amp;nbsp; Any suggestions how this can be improved or something alternative?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 09 Dec 2012 07:06:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94552#M19951</guid>
      <dc:creator>bnarang</dc:creator>
      <dc:date>2012-12-09T07:06:59Z</dc:date>
    </item>
    <item>
      <title>Re: Recording an observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94553#M19952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi "Bhpinder",&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;basically you are doing the right thing, but yes, it can be improved.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;to exit a do loop use the LEAVE statement (i.e. you can drop GOTO and its target label)&lt;/LI&gt;&lt;LI&gt;use 'do i=1 to dim(check);' thus bypassing hard coding the number of elements in the array&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;further possibilities for improvement:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;loop exit can also be controlled on the DO statement itself, so look up&lt;UL&gt;&lt;LI&gt;DO UNTIL and&lt;/LI&gt;&lt;LI&gt;DO WHILE respectively&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;some people prefer using automatic variables (e.g. _n_) for the loop counter because&lt;UL&gt;&lt;LI&gt;_n_ is automatically dropped i.e. not written to the eventual dataset&lt;/LI&gt;&lt;LI&gt;modifying _n_ does not interfere with the way _n_ gets assigned by the datastep's internal mechanisms so it can be used rather freely&lt;BR /&gt;(Don't waste too much time thinking about this statement if its meaning is not immediately understandable.&lt;BR /&gt;I'm sure it can be expressed much better but I'm getting to my limits here with regards to my command of the english language.)&lt;BR /&gt;(PS: I'm not an advocate of this use of _n_ as it might confuse people for whom SAS is but one of the many tools they use.)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Generally I strongly advice to bookmark SAS online documentation. My favourite (not having had access to any SAS system above 9.1.3) being - you guess it - the 9.1.3 &lt;A href="http://support.sas.com/onlinedoc/913/docMainpage.jsp" title="http://support.sas.com/onlinedoc/913/docMainpage.jsp"&gt;Documentation&lt;/A&gt; and there especially the Language Reference Dictionary book. SAS has such a rich set of functions, formats, informats, options and statements that skimming through its pages is time well invested. Furthermore there are overview pages in this document such as &lt;A href="http://support.sas.com/onlinedoc/913/getDoc/de/lrdict.hlp/a000245860.htm" title="http://support.sas.com/onlinedoc/913/getDoc/de/lrdict.hlp/a000245860.htm"&gt;Functions and CALL Routines : Functions and CALL Routines by Category &lt;/A&gt; that I always turn to when a voice inside me says "there must be some function, format, whatsoever that exactly does this".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards&lt;/P&gt;&lt;P&gt;Robert&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 09 Dec 2012 08:20:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94553#M19952</guid>
      <dc:creator>Robert_Bardos</dc:creator>
      <dc:date>2012-12-09T08:20:11Z</dc:date>
    </item>
    <item>
      <title>Re: Recording an observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94554#M19953</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The function is WHICHN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; find3;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;array&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; v[&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;5&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;];&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; id $ v&lt;LI&gt;;&lt;BR /&gt;&lt;/LI&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; find3 = whichN(&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;3&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,of v&lt;LI&gt;);&lt;BR /&gt;&lt;/LI&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;cards&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffc0;"&gt;1&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;BR /&gt;2&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;;;;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 09 Dec 2012 15:24:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94554#M19953</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-12-09T15:24:45Z</dc:date>
    </item>
    <item>
      <title>Re: Recording an observation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94555#M19954</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great! Thanks, data _null_,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;now that I have access to "my" z/OS system again, I verified that both search type functions (WHICHC/WHICHN) though not documented do work with SAS 9.1.3 as well (z/OS 1.12 here with SAS 9.1.3, &amp;amp;sysvlong displaying - retyped - 9.01.01M3P020206).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Added the 9.2 categorized list of functions to my bookmarks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Dec 2012 08:27:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Recording-an-observation/m-p/94555#M19954</guid>
      <dc:creator>Robert_Bardos</dc:creator>
      <dc:date>2012-12-10T08:27:56Z</dc:date>
    </item>
  </channel>
</rss>

