data &OUTPUT_DATASET; retain p20017_begin_date_active; retain p20017_begin_date_inactive; set &INPUT_DATASET; if first.account_number then do; p20017_begin_date_active = dhms(datepart(&RUNASOFDATE-5+1),0,0,0) ; p20017_begin_date_inactive = dhms(datepart(&RUNASOFDATE-&p20017_num_days+1), 23, 59, 59.999); end; p20017_agg_amt_active = 0; p20017_agg_amt_inactive=0; k = 0; do i = n to 1 by -1 while (date_key{i} >= p20017_begin_date_inactive); /*Active count*/ if ( (p20017_begin_date_active <= date_key{i} <= rundate) and upcase(customer_risk_category) in (&p20017_customer_risk_cat) and upcase(primary_medium_desc{i}) in (&p20017_primary_medium_active) and upcase(transaction_cdi_code{i}) in (&p20017_active_indicator) ) then do; p20017_date_key_num = input(put(date_key{i},date_to_num.),8.); temp_date_key = date_key{i}; do while (p20017_date_key_num = -1); temp_date_key = temp_date_key + 1; p20017_date_key_num = input(put(temp_date_key,date_to_num.),8.); end; p20017_agg_amt_active = p20017_agg_amt_active + currency_amount{i}; j = rundate_number-p20017_date_key_num + 1; end; else if ( (p20017_begin_date_inactive <= date_key{i} < p20017_begin_date_active) and upcase(customer_risk_category) in (&p20017_customer_risk_cat) and upcase(primary_medium_desc{i}) in (&p20017_primary_medium_inactive) and upcase(transaction_cdi_code{i}) in (&p20017_inactive_indicator) ) then do; p20017_date_key_num = input(put(date_key{i},date_to_num.),8.); temp_date_key = date_key{i}; do while (p20017_date_key_num = -1); temp_date_key = temp_date_key + 1; p20017_date_key_num = input(put(temp_date_key,date_to_num.),8.); end; p20017_agg_amt_inactive = p20017_agg_amt_inactive + currency_amount{i}; j = rundate_number-p20017_date_key_num + 1; end; end; /* Compare party values to parameters for a match */ if p20017_agg_amt_active >= &p20017_ctr_amount and p20017_agg_amt_inactive =0 then do; &message = "Aggregate Amount exceeds " &p20017_agg_amt_active; &score= &p20017_ctr_amount; %Event; end; run;