|
IF (a27<=DATE.DMY(31,08,2006) AND a28>=DATE.DMY(31,08,2006) AND (a34 = 1 OR a31>=DATE.DMY(31,08,2006))) il_p1 = 1.
IF (a27<=DATE.DMY(30,09,2006) AND a28>=DATE.DMY(30,09,2006) AND (a34 = 1 OR a31>=DATE.DMY(30,09,2006))) il_p2 = 1.
IF (a27<=DATE.DMY(31,10,2006) AND a28>=DATE.DMY(31,10,2006) AND (a34 = 1 OR a31>=DATE.DMY(31,10,2006))) il_p3 = 1.
IF (a27<=DATE.DMY(30,11,2006) AND a28>=DATE.DMY(30,11,2006) AND (a34 = 1 OR a31>=DATE.DMY(30,11,2006))) il_p4 = 1.
IF (a27<=DATE.DMY(31,12,2006) AND a28>=DATE.DMY(31,12,2006) AND (a34 = 1 OR a31>=DATE.DMY(31,12,2006))) il_p5 = 1.
IF (a27<=DATE.DMY(31,01,2007) AND a28>=DATE.DMY(31,01,2007) AND (a34 = 1 OR a31>=DATE.DMY(31,01,2007))) il_p6 = 1.
IF (a27<=DATE.DMY(28,02,2007) AND a28>=DATE.DMY(28,02,2007) AND (a34 = 1 OR a31>=DATE.DMY(28,02,2007))) il_p7 = 1.
IF (a27<=DATE.DMY(31,03,2007) AND a28>=DATE.DMY(31,03,2007) AND (a34 = 1 OR a31>=DATE.DMY(31,03,2007))) il_p8 = 1.
IF (a27<=DATE.DMY(30,04,2007) AND a28>=DATE.DMY(30,04,2007) AND (a34 = 1 OR a31>=DATE.DMY(30,04,2007))) il_p9 = 1.
IF (a27<=DATE.DMY(31,05,2007) AND a28>=DATE.DMY(31,05,2007) AND (a34 = 1 OR a31>=DATE.DMY(31,05,2007))) il_p10 = 1.
IF (a27<=DATE.DMY(30,06,2007) AND a28>=DATE.DMY(30,06,2007) AND (a34 = 1 OR a31>=DATE.DMY(30,06,2007))) il_p11 = 1.
IF (a27<=DATE.DMY(31,07,2007) AND a28>=DATE.DMY(31,07,2007) AND (a34 = 1 OR a31>=DATE.DMY(31,07,2007))) il_p12 = 1.
RECODE il_p1 il_p2 il_p3 il_p4 il_p5 il_p6 il_p7 il_p8 il_p9 il_p10 il_p11 il_p12 (sysmis = 0) (else = copy).
*Create new planned and actual end date variables that are set one day after the actual variables (this helps with calculating year end values).
Compute a28_1 = a28 + 60*60*24.
Compute a31_1 = a31 + 60*60*24.
FORMAT a28_1 a31_1 (DATE11).
*Calculate the number of months the learner is expected to be present for, adding an extra month if they plan to end on the last day of the month.
COMPUTE exp_months = DATEDIFF(DATE.DMY(2,XDATE.Month(a28_1),XDATE.Year(a28_1)),DATE.DMY(1,XDATE.Month(a27),XDATE.Year(a27)),'months').
*If the learner ends early, calculate how many months are remaining (similar to above), but removing a month if the learner leaves on the last day of the month.
COMPUTE months_remaining = 0.
IF (a34 <> 1 AND a28 > a31) months_remaining = DATEDIFF(DATE.DMY(2,XDATE.Month(a28_1),XDATE.Year(a28_1)),DATE.DMY(1,XDATE.Month(a31_1),XDATE.Year(a31_1)),'months').
*Add up number of payment months qualified for in this year and add on a balancing payment.
COMPUTE act_months_inyear = il_p1 + il_p2 + il_p3 + il_p4 + il_p5 + il_p6 + il_p7 + il_p8 + il_p9 + il_p10 + il_p11 + il_p12.
IF (a35 = 1 and a31 <= current_year_end and a31 >= current_year_start) act_months_inyear = act_months_inyear + months_remaining.
*Courses that start and finish in the same month and are not planned to finish on a month end.
DO IF(XDATE.YEAR(a28)=XDATE.YEAR(a27) AND XDATE.MONTH(a28)=XDATE.MONTH(a27) AND exp_months = 0).
COMPUTE exp_months = 1.
COMPUTE act_months_inyear = 1. END IF. |