thanks for you support , i have tested what i really want using you suggestion but i don't have the result expected ... i have a second anniversary date corresponding to the birthday ( month slicing) ... data input; input birth_date: ddmmyy10. start_date: ddmmyy10. end_date: ddmmyy10.; format birth_date start_date end_date ddmmyy10.; datalines; 06/07/2008 15/06/2008 31/12/2010 ; run; data expected; set input; format date_breaks ddmmyy10.; max_dur=intck('month', start_date ,end_date,'continuous'); do i=0 to max_dur; date_breaks=intnx('month', start_date,i,'s'); output; date_breaks=intnx('month', birth_date,i,'s'); output; end; drop i ; run; data want; set expected; format date_break1 date_break2 ddmmyy10.; if mod(_n_, 2) then do; date_break1 = date_breaks; date_break2 = intnx('month', date_breaks, 0, 'end'); end; else do; date_break2 = date_breaks; date_break1 = intnx('month', date_breaks, 0) - 1; end; /*drop date_breaks;*/ run; the result i have : 15/06/2008 30/06/2008 30/06/2008 06/07/2008 15/07/2008 31/07/2008 31/07/2008 06/08/2008 .. but i want : 15/06/2008 30/06/2008 30/06/2008 06/07/2008 06/07/2008 15/07/2008 15/07/2008 31/07/2008 31/07/2008 06/08/2008 ... could you explain me this part of the code : if mod(_n_, 2) then do; Many thanks
... View more