<?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: Complex programming goal in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649433#M194705</link>
    <description>&lt;P&gt;What's the value of I?&lt;BR /&gt;Make the array larger if you need to, but if you declare the associated variables correctly the size will be correct.&lt;/P&gt;
&lt;P&gt;If you have end dates after 2018, you should test for that as you know the flag is 0 and there is no provision for this when the array is defined.&lt;/P&gt;</description>
    <pubDate>Thu, 21 May 2020 01:59:38 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2020-05-21T01:59:38Z</dc:date>
    <item>
      <title>Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649402#M194684</link>
      <description>&lt;P&gt;Hello All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need some programming help. My dataset looks like.....&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp;start_month&amp;nbsp; &amp;nbsp; &amp;nbsp;start_year&amp;nbsp; &amp;nbsp; &amp;nbsp;end_month&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end_year&amp;nbsp; &amp;nbsp; enrol_1_13&amp;nbsp; &amp;nbsp; enrol_2_13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;enrol_3_13&amp;nbsp; &amp;nbsp; enrol_4_13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enrol_5_13...........................enrol_12_18&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 14&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&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;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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; 1&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;0&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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; 1&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;1&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&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;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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; 1&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;0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here start_month and start_year are start month and year of a disease episode and end_month and end_year are end month and year of the same disease. Now I want to see whether that particular individual was insured during the whole time he had the disease. The enrol variables here represents enrollment status for each month from 2013 to 2018 e.g. enrol_1_13 stands for enrollment status of the patient for January month of 2013.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example patient ID 2 here had disease from 1/2013 to 5/2013 and his enrollment status was 1 for every month during this period, so I want to flag this patient's final enrollment status as "Y" but for patient ID 3 it should be "N" as his disease started from 2/2013 but his enrollment status for 2/2013 was 0.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 23:34:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649402#M194684</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-20T23:34:57Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649404#M194686</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp;start_month&amp;nbsp; &amp;nbsp; &amp;nbsp;start_year&amp;nbsp; &amp;nbsp; &amp;nbsp;end_month&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end_year&amp;nbsp; &amp;nbsp; enrol_1_13&amp;nbsp; &amp;nbsp; enrol_2_13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;enrol_3_13&amp;nbsp; &amp;nbsp; enrol_4_13&amp;nbsp; &amp;nbsp; &amp;nbsp;enrol_5_13.................enrol_12_18&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 14&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&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;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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;0&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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;1&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&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;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&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;0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 23:41:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649404#M194686</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-20T23:41:22Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649424#M194696</link>
      <description>&lt;P&gt;1. This is a very lousy data layout. You'll be struggling to do any data manipulation, as you are now.&lt;/P&gt;
&lt;P&gt;2. This does what you want:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data T;
  input ID START_MONTH START_YEAR END_MONTH END_YEAR ENROL_1_13 ENROL_2_13 ENROL_3_13 ENROL_4_13 ENROL_5_13;
  array ENROL [*] ENROL: ;
  START_INDEX = START_YEAR-13+START_MONTH;
  END_INDEX   = END_YEAR-13  +END_MONTH;
  do I=START_INDEX to END_INDEX; 
    SUM=sum(SUM,ENROL[I]);
    N  =sum(N,1);
  end;
  FLAG=SUM=N;
cards;
2 1 13 5 13 1 1 1 1 1 1
3 2 13 5 13 0 0 1 1 1 1
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 00:59:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649424#M194696</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-05-21T00:59:27Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649425#M194697</link>
      <description>&lt;P&gt;I would suggest associating a 2-dimensional array with your dummy variables.&amp;nbsp; The row dimension are the years 2013 through 2018, and the columns months 1 through 12:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  array dummies {2013:2018,1:12}  enrol_1_13 -- enrol_12_18;

  begdate=mdy(start_month,1,2000+start_year);
  enddate=mdy(end_month,1,2000+end_year);
  
  insured='Y';  /* Initialize */
  do date=begdate to enddate while (insured='Y');
    if dummies{year(date),month(date)}=0 then insured='N';
    date=intnx('month',date,0,'end');
  end;
  drop begdate enddate;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I've edited the DO loop above.&amp;nbsp; The "by 0" was not accepted, unlike some other contexts I've used it in.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 May 2020 05:13:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649425#M194697</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-05-22T05:13:17Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649429#M194701</link>
      <description>&lt;P&gt;Thank you Chris for your response, I tried your code but it is giving me an error "Array subscript out of range" for line&amp;nbsp;&lt;/P&gt;&lt;PRE class="language-sas"&gt;&lt;CODE&gt;SUM=sum(SUM,ENROL[I]);&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Also, just be clear on this the variable with ENROL prefix starts from Jan 2013 (ENROL_1_13) and ends at Dec 2018 (ENROL_12_18). So there are a total 72 variables.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I might sound stupid as I am new to SAS programming.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 01:40:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649429#M194701</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-21T01:40:18Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649433#M194705</link>
      <description>&lt;P&gt;What's the value of I?&lt;BR /&gt;Make the array larger if you need to, but if you declare the associated variables correctly the size will be correct.&lt;/P&gt;
&lt;P&gt;If you have end dates after 2018, you should test for that as you know the flag is 0 and there is no provision for this when the array is defined.&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 01:59:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649433#M194705</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-05-21T01:59:38Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649437#M194708</link>
      <description>&lt;P&gt;The value of i is 0 for the error.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Although as you said I have end year 2019 as well start year 2012.&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 02:50:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649437#M194708</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-21T02:50:38Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649439#M194710</link>
      <description>&lt;P&gt;Well don't test these values:&lt;/P&gt;
&lt;P&gt;1. You know the outcome (FLAG=0), and&lt;/P&gt;
&lt;P&gt;2. The array can't deal with them (since it spans 2013 to 2018)&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 06:09:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649439#M194710</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-05-21T06:09:13Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649444#M194713</link>
      <description>&lt;P&gt;I created new variables ENROL for all months of 2012 and 2019 and assigned them value of 1, assuming that everyone had insurance for that period of time and then re-ran the code. It worked but I still can't figure out who had insurance during the tenure of their disease. Please help me figure that out.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 03:19:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649444#M194713</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-21T03:19:57Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649448#M194714</link>
      <description>??That's what the flag variable is for isn't it? &lt;BR /&gt;</description>
      <pubDate>Thu, 21 May 2020 04:04:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649448#M194714</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-05-21T04:04:26Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649459#M194722</link>
      <description>&lt;P&gt;First, split your dataset into two datasets, one with the start/end dates, the other with the enrol flags. Transpose the enrol dataset, and convert all date-related values to SAS dates. The final code will then be a breeze.&lt;/P&gt;
&lt;P&gt;Maxim 33: Intelligent Data Makes for Intelligent Programs.&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 05:59:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649459#M194722</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-05-21T05:59:04Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649572#M194767</link>
      <description>&lt;P&gt;Sorry I missed the flag the first time around. It is still not giving me the correct results, it is not flagging for many observations which should have been flagged.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 14:06:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649572#M194767</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-21T14:06:57Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649575#M194768</link>
      <description>&lt;P&gt;Hi Mkeintz,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your input but it is still giving me error with 0. Log is displaying error that it is invalid do loop control information.....................&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2020 14:11:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649575#M194768</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-21T14:11:15Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649835#M194855</link>
      <description>&lt;P&gt;Just to illustrate how good data design enables simple and easy to maintain code:&lt;/P&gt;
&lt;P&gt;(taking&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/16961"&gt;@ChrisNZ&lt;/a&gt;'s example dataset)&lt;/P&gt;
&lt;P&gt;First, bring the data into shape:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data T;
  input ID START_MONTH START_YEAR END_MONTH END_YEAR ENROL_1_13 ENROL_2_13 ENROL_3_13 ENROL_4_13 ENROL_5_13;
  array ENROL [*] ENROL: ;
  START_INDEX = START_YEAR-13+START_MONTH;
  END_INDEX   = END_YEAR-13  +END_MONTH;
  do I=START_INDEX to END_INDEX; 
    SUM=sum(SUM,ENROL[I]);
    N  =sum(N,1);
  end;
  FLAG=SUM=N;
cards;
2 1 13 5 13 1 1 1 1 1 1
3 2 13 5 13 0 0 1 1 1 1
;

data patient;
set t;
keep id start_date end_date;
format start_date end_date yymmddd10.;
start_date = mdy(start_month,1,start_year);
end_date = mdy(end_month,1,end_year);
run;

proc transpose
  data=t
  out=trans (rename=(col1=enrol))
;
by id;
var enrol:;
run;

data enrol;
set trans;
format period yymmddd10.;
period = mdy(input(scan(_name_,2,'_'),2.),1,2000+input(scan(_name_,3,'_'),2.));
drop _name_;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now you have data with a small number of columns (3 each), all dates are SAS dates, and the final code basically writes itself:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
merge
  patient
  enrol
;
by id;
retain enrolled;
if first.id then enrolled = 'Y';
if start_date le period le end_date and enrol = 0 then enrolled = 'N';
keep id enrolled;
if last.id;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;ID	enrolled
2	Y
3	N
&lt;/PRE&gt;
&lt;P&gt;With the long structure, other analysis becomes easy, like summing up the number of sick per given months, comparing months across years, and so on.&lt;/P&gt;
&lt;P&gt;To repeat:&lt;/P&gt;
&lt;P&gt;Maxim 33: Intelligent Data Makes for Intelligent Programs&lt;/P&gt;
&lt;P&gt;Maxim 19: Long Beats Wide&lt;/P&gt;
&lt;P&gt;and also Maxim 29: If in Doubt, Use Brute Force ("Brute Force" here being the simple code you need in the end), or also known as the KISS principle.&lt;/P&gt;</description>
      <pubDate>Fri, 22 May 2020 10:18:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649835#M194855</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-05-22T10:18:33Z</dc:date>
    </item>
    <item>
      <title>Re: Complex programming goal</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649919#M194878</link>
      <description>&lt;P&gt;Thank you Kurt. This makes sense,&amp;nbsp; simplifying the data makes it straight-forward.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 May 2020 14:36:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-programming-goal/m-p/649919#M194878</guid>
      <dc:creator>NickS2</dc:creator>
      <dc:date>2020-05-22T14:36:49Z</dc:date>
    </item>
  </channel>
</rss>

