<?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: Regarding Dates in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86393#M24674</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What output do you want?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data x;
input PatID $ Start_Date : anydtdte. End_Date : anydtdte.;
format Start_Date End_Date yymmddn8.;
datalines;
ABC 20120201 20120229
ABC 20120401 20120430
ABC 20120701 20121231
DEF 20120401 20120530
DEF 20120101 20120229
DEF 20120301 20120331
GHI 20120401 20120430
GHI 20120101 20120229
GHI 20120301 20120331
GHI 20120501 20120930
;
run;

proc sort data=x;&amp;nbsp; by PatId Start_Date; run;
data want;
 merge x x(keep=PatId Start_Date rename=(PatId=_id Start_Date=_start) firstobs=2);
 output;
 if PatId=_id and End_Date+1 ne _start then do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Start_Date=intnx('month',End_Date,1,'b');
&amp;nbsp;&amp;nbsp;&amp;nbsp; End_Date=intnx('month',_start,-1,'e');
&amp;nbsp;&amp;nbsp;&amp;nbsp; output;
 end;
 drop _id _start;
run;

&lt;/PRE&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;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 Jun 2012 07:22:49 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2012-06-19T07:22:49Z</dc:date>
    <item>
      <title>Regarding Dates</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86391#M24672</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;In my final output I need to get that if any member is not enrolled for any month from Jan thru June 2012.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For e.g.: I have to create a report till June 30th 2012 for those members who have a gap in enrollment&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ABC 20110201 20120229&amp;nbsp;&amp;nbsp;&amp;nbsp; This means that the member is enrolled from Jan thru Feb 2012&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ABC 20120401 20120430&amp;nbsp;&amp;nbsp;&amp;nbsp; This means that the member is enrolled for April 2012&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ABC 20120701 20121231&lt;/P&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;&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;&amp;nbsp; In this case ABC has a gap for March, May and June 2012&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEF 20120401 20120530&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEF 20120101 20120229&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEF 20120301 20120331&lt;/P&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;&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; In this case DEF is enrolled for the months from Jan thru May 2012 and is missing June 2012&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GHI 20110401 20120430&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GHI 20120101 20120229&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GHI 20120301 20120331&lt;/P&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; GHI 20120501 20120930&lt;/P&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;&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; In this case GHI is enrolled for ALL the months from Jan thru Sep 2012 and is not needed in the final output&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let me know how to get a missing months on the final output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jun 2012 19:54:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86391#M24672</guid>
      <dc:creator>raveena</dc:creator>
      <dc:date>2012-06-18T19:54:40Z</dc:date>
    </item>
    <item>
      <title>Re: Regarding Dates</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86392#M24673</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is some overlapping of periods (GHI 20110401 20120430,GHI 20120101 20120229,GHI 20120301 20120331) and there is one place where 1 gap in coverage exists (DEF 20120401 20120530)&lt;/P&gt;&lt;P&gt;Assuming that the patient is covered for a given month if he has coverage on the first day of that month.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data x;&lt;/P&gt;&lt;P&gt;input PatID $ Start_Date anydtdte. End_Date anydtdte.; &lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;ABC 20110201 20120229&lt;/P&gt;&lt;P&gt;ABC 20120401 20120430&lt;/P&gt;&lt;P&gt;ABC 20120701 20121231&lt;/P&gt;&lt;P&gt;DEF 20120401 20120530&lt;/P&gt;&lt;P&gt;DEF 20120101 20120229&lt;/P&gt;&lt;P&gt;DEF 20120301 20120331&lt;/P&gt;&lt;P&gt;GHI 20110401 20120430&lt;/P&gt;&lt;P&gt;GHI 20120101 20120229&lt;/P&gt;&lt;P&gt;GHI 20120301 20120331&lt;/P&gt;&lt;P&gt;GHI 20120501 20120930&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=x;&amp;nbsp; by PatId; run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array m [0:5];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=0 to 5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m&lt;I&gt; =0;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until(last.PatId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by PatID;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Start_Date &amp;lt;= '30Jun2012'd or End_Date &amp;gt;= '01Jan2012'd then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cnt = INTCK('month',Start_Date,End_Date);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=0 to Cnt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Month = INTCK('month','01Jan2012'd,INTNX('month',Start_Date,i));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Month &amp;gt;=0 and Month &amp;lt;= 5 then m[Month]=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=0 to 5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if m&lt;I&gt; = 0 then do;Gap_Month = INTNX('month','01Jan2012'd,i);output;end;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; format gap_Month yymmd7.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; keep PatId Gap_Month;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jun 2012 21:29:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86392#M24673</guid>
      <dc:creator>Alpay</dc:creator>
      <dc:date>2012-06-18T21:29:19Z</dc:date>
    </item>
    <item>
      <title>Re: Regarding Dates</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86393#M24674</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What output do you want?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data x;
input PatID $ Start_Date : anydtdte. End_Date : anydtdte.;
format Start_Date End_Date yymmddn8.;
datalines;
ABC 20120201 20120229
ABC 20120401 20120430
ABC 20120701 20121231
DEF 20120401 20120530
DEF 20120101 20120229
DEF 20120301 20120331
GHI 20120401 20120430
GHI 20120101 20120229
GHI 20120301 20120331
GHI 20120501 20120930
;
run;

proc sort data=x;&amp;nbsp; by PatId Start_Date; run;
data want;
 merge x x(keep=PatId Start_Date rename=(PatId=_id Start_Date=_start) firstobs=2);
 output;
 if PatId=_id and End_Date+1 ne _start then do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Start_Date=intnx('month',End_Date,1,'b');
&amp;nbsp;&amp;nbsp;&amp;nbsp; End_Date=intnx('month',_start,-1,'e');
&amp;nbsp;&amp;nbsp;&amp;nbsp; output;
 end;
 drop _id _start;
run;

&lt;/PRE&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;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jun 2012 07:22:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86393#M24674</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-06-19T07:22:49Z</dc:date>
    </item>
    <item>
      <title>Re: Regarding Dates</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86394#M24675</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't know if "simplifying" the code makes it better or clearer, but here's an attempt.&amp;nbsp; Using the Ksharp code all the way through the PROC SORT, then:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want (keep=PatID gap_begins_date gap_ends_date);&lt;/P&gt;&lt;P&gt;set x;&lt;/P&gt;&lt;P&gt;by PatID;&lt;/P&gt;&lt;P&gt;last_end_date = lag(end_date);&lt;/P&gt;&lt;P&gt;if first.PatID then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if start_date &amp;gt; '01Jan2012'd then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gap_begins_date = '01Jan2012'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gap_ends_date = start_date - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else if start_date &amp;gt; last_end_date + 1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; gap_begins_date = last_end_date + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; gap_ends_date = start_date - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if last.PatID and end_date &amp;lt; '30jun2012'd then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; gap_begins_date = end_date + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; gap_ends_date = '30jun2012'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It will measure gaps to the day, not just the month.&amp;nbsp; Beauty is in the eye of the beholder, I guess.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jun 2012 17:59:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86394#M24675</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-06-19T17:59:40Z</dc:date>
    </item>
    <item>
      <title>Re: Regarding Dates</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86395#M24676</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for all suggestions.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jun 2012 15:13:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Regarding-Dates/m-p/86395#M24676</guid>
      <dc:creator>raveena</dc:creator>
      <dc:date>2012-06-20T15:13:11Z</dc:date>
    </item>
  </channel>
</rss>

