<?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 2X DWL or DUL dilemma? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47902#M9909</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hai.kuo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I looked at the paper Art recommended. It is a very good paper. I made some changes to one of your posts for practice.&amp;nbsp; Thank you!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input naics4 $ taxable1-taxable5;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 20 30 40 50 60&lt;/P&gt;&lt;P&gt;1 25 35 45 55 65&lt;/P&gt;&lt;P&gt;1 30 40 50 60 70&lt;/P&gt;&lt;P&gt;2 20 30 40 50 60&lt;/P&gt;&lt;P&gt;2 25 35 45 55 65&lt;/P&gt;&lt;P&gt;3 30 40 50 60 70&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want (drop=tax: );&lt;/P&gt;&lt;P&gt;do&amp;nbsp; until (last.naics4);&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;by naics4;&lt;/P&gt;&lt;P&gt;array tax(*) taxable1-taxable5;&lt;/P&gt;&lt;P&gt;array st(*) sum_tax1-sum_tax5;&lt;/P&gt;&lt;P&gt;do _n_=1 to dim(tax);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; st(_n_)=sum(st(_n_),tax(_n_));&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Feb 2012 01:23:06 GMT</pubDate>
    <dc:creator>Linlin</dc:creator>
    <dc:date>2012-02-08T01:23:06Z</dc:date>
    <item>
      <title>2X DWL or DUL dilemma?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47898#M9905</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Dear All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It was just occured to me that I still have this question on 2x Do-loops regarless of so many times I have used them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;infile cards missover;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;input YEAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; patient $&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mortality_in365days $;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1990&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 221&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1991&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 221&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1991&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 221&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1993&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 221&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1995&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 221&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 789&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 789&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 789&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 965&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2005&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 965&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do until (last.patient);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;by patient year;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Death_year=ifn(last.patient,year,death_year);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;retain death_year;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do until (last.patient);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;by patient year;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Years_Before_death=death_year-year;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end;&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;&lt;/P&gt;&lt;P&gt;My question is: by the time the first loop reaches the end of first 'have', the datastep should stop, so the final output should be lacking the last group of data, say patient= 965 should not be seen in the final output. Instead, datastep keeps on moving forward, and only being finished after the second set reach its end. I mean I am really glad that datastep acts smart on this one, the 2xDUL gets to hold its charm. But why?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance for all of your inputs and Answers!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Feb 2012 15:45:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47898#M9905</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-02-07T15:45:33Z</dc:date>
    </item>
    <item>
      <title>2X DWL or DUL dilemma?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47899#M9906</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I can't write a full paper here to explain the concept but, forunately, Paul Dorfman and Koen Vyverman already have.&amp;nbsp; Take a good look at &lt;A href="http://support.sas.com/resources/papers/proceedings09/038-2009.pdf"&gt;http://support.sas.com/resources/papers/proceedings09/038-2009.pdf&lt;/A&gt; .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think it will provide all of the explanations you are seeking.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Feb 2012 15:58:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47899#M9906</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-02-07T15:58:33Z</dc:date>
    </item>
    <item>
      <title>2X DWL or DUL dilemma?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47900#M9907</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Haikuo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is not with the DO loop.&amp;nbsp; It has to do with the behavior of the SET statement.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3 class="title"&gt;"What SET Does&lt;/H3&gt;&lt;P&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; &lt;A name="p0q41lzdtw8gzan1ejt0rqn0ekbd"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P class="paragraph"&gt;&lt;A name="p1fe9tx7arsdx6n19464j791tjpo"&gt;&lt;/A&gt;Each time the SET statement&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; is executed, SAS reads one observation into the program data vector.&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; SET reads all variables and all observations from the input data&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; sets unless you tell SAS to do otherwise. A SET statement can contain&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; multiple data sets; a DATA step can contain multiple SET statements.&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; See&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;&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; &lt;SPAN class="bookTitle"&gt;Combining and Modifying SAS Data Sets: Examples&lt;/SPAN&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; "&lt;/P&gt;&lt;P class="paragraph"&gt;&lt;/P&gt;&lt;P class="paragraph"&gt;By design, the second SET statement starts over at the beginning of the dataset.&amp;nbsp; There are examples in the documentation that cover the behavior that you observed.&lt;/P&gt;&lt;P class="paragraph"&gt;&lt;/P&gt;&lt;P class="paragraph"&gt;Doc Muhlbaier&lt;/P&gt;&lt;P class="paragraph"&gt;Duke&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Feb 2012 16:05:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47900#M9907</guid>
      <dc:creator>Doc_Duke</dc:creator>
      <dc:date>2012-02-07T16:05:02Z</dc:date>
    </item>
    <item>
      <title>2X DWL or DUL dilemma?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47901#M9908</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Wow, it is a GREAT paper! I probably need more time to dwell on it, but Thanks, Art!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Feb 2012 16:08:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47901#M9908</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-02-07T16:08:04Z</dc:date>
    </item>
    <item>
      <title>2X DWL or DUL dilemma?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47902#M9909</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Hai.kuo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I looked at the paper Art recommended. It is a very good paper. I made some changes to one of your posts for practice.&amp;nbsp; Thank you!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input naics4 $ taxable1-taxable5;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 20 30 40 50 60&lt;/P&gt;&lt;P&gt;1 25 35 45 55 65&lt;/P&gt;&lt;P&gt;1 30 40 50 60 70&lt;/P&gt;&lt;P&gt;2 20 30 40 50 60&lt;/P&gt;&lt;P&gt;2 25 35 45 55 65&lt;/P&gt;&lt;P&gt;3 30 40 50 60 70&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want (drop=tax: );&lt;/P&gt;&lt;P&gt;do&amp;nbsp; until (last.naics4);&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;by naics4;&lt;/P&gt;&lt;P&gt;array tax(*) taxable1-taxable5;&lt;/P&gt;&lt;P&gt;array st(*) sum_tax1-sum_tax5;&lt;/P&gt;&lt;P&gt;do _n_=1 to dim(tax);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; st(_n_)=sum(st(_n_),tax(_n_));&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Feb 2012 01:23:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/2X-DWL-or-DUL-dilemma/m-p/47902#M9909</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-02-08T01:23:06Z</dc:date>
    </item>
  </channel>
</rss>

