<?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: %sysfunc(open) where problem in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113508#M23395</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should make a loop. Something like this (untested):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro read_rec (ds);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let j=1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let table_id=%sysfunc(open(&amp;amp;ds(where=(run_flag=1)),i));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let rc=%sysfunc(fetch(&amp;amp;table_id ));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do %while(&amp;amp;rc=0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %let name_code=%sysfunc(getvarc(&amp;amp;table_id, %sysfunc(varnum(&amp;amp;table_id,name))));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put name is &amp;amp;name_code;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let rc=%sysfunc(fetch(&amp;amp;table_id ));&lt;/P&gt;&lt;P&gt;%let j=%eval(&amp;amp;j+1);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%let rc1 = %sysfunc(close(&amp;amp;table_id));&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 20 Jun 2013 14:45:59 GMT</pubDate>
    <dc:creator>Oleg_L</dc:creator>
    <dc:date>2013-06-20T14:45:59Z</dc:date>
    <item>
      <title>%sysfunc(open) where problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113507#M23394</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have a dataset close to 1 million observations. My task is to read only few observations &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input name $ amt run_flag;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;John 100 1&lt;/P&gt;&lt;P&gt;Peter 200 0&lt;/P&gt;&lt;P&gt;Serge 300 1&lt;/P&gt;&lt;P&gt;Mark 400 0&lt;/P&gt;&lt;P&gt;Jonathan 500 0&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro read_rec (ds);&lt;/P&gt;&lt;P&gt;%let table_id=%sysfunc(open(&amp;amp;ds(where=(run_flag=1)),i));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let rc=%sysfunc(fetch(&amp;amp;table_id ));&lt;/P&gt;&lt;P&gt;%if &amp;amp;rc ne 0 %then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put something is wrong ...;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;%else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let name_code=%sysfunc(getvarc(&amp;amp;table_id, %sysfunc(varnum(&amp;amp;table_id,name))));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put name is &amp;amp;name_code;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;%let rc1 = %sysfunc(close(&amp;amp;table_id));&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%read_rec(have);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;so I would need my macro to run 2 times for values John and Serge. But t runs only for John. I would have used datastep but this is a modification code so I am stuck to this, also since my original dataset is hug, i must use open and close functions... So my problem is to read one by one all matching conditions.. Please suggest where i am going wrong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Jun 2013 14:08:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113507#M23394</guid>
      <dc:creator>forumsguy</dc:creator>
      <dc:date>2013-06-20T14:08:46Z</dc:date>
    </item>
    <item>
      <title>Re: %sysfunc(open) where problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113508#M23395</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should make a loop. Something like this (untested):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro read_rec (ds);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let j=1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let table_id=%sysfunc(open(&amp;amp;ds(where=(run_flag=1)),i));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let rc=%sysfunc(fetch(&amp;amp;table_id ));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do %while(&amp;amp;rc=0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %let name_code=%sysfunc(getvarc(&amp;amp;table_id, %sysfunc(varnum(&amp;amp;table_id,name))));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put name is &amp;amp;name_code;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let rc=%sysfunc(fetch(&amp;amp;table_id ));&lt;/P&gt;&lt;P&gt;%let j=%eval(&amp;amp;j+1);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%let rc1 = %sysfunc(close(&amp;amp;table_id));&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Jun 2013 14:45:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113508#M23395</guid>
      <dc:creator>Oleg_L</dc:creator>
      <dc:date>2013-06-20T14:45:59Z</dc:date>
    </item>
    <item>
      <title>Re: %sysfunc(open) where problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113509#M23396</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;%macro read_rec (ds);&lt;/P&gt;&lt;P&gt;%let table_id=%sysfunc(open(&amp;amp;ds(where=(run_flag=1)),i)); &lt;/P&gt;&lt;P&gt;%do %while (%sysfunc(fetch(&amp;amp;table_id))=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let name_code=%sysfunc(getvarc(&amp;amp;table_id, %sysfunc(varnum(&amp;amp;table_id,name))));&lt;/P&gt;&lt;P&gt;&amp;nbsp; %put name is &amp;amp;name_code;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%let rc1 = %sysfunc(close(&amp;amp;table_id));&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%read_rec(have);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 10:14:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sysfunc-open-where-problem/m-p/113509#M23396</guid>
      <dc:creator>Vladislaff</dc:creator>
      <dc:date>2013-06-21T10:14:01Z</dc:date>
    </item>
  </channel>
</rss>

