sas data步中不足账龄表现的问题

sas的data步
问题:各月份的放款数据,通过年份进行分组求各账龄下的逾期表现,要求该账龄下的逾期若未完全表现则该账龄下的数据不计算。
解决方法:data步 array账龄数据,by年份可以实现。
疑惑点:想要知道这个array下的原理是什么,为什么可以满足(该账龄下的逾期若未完全表现则该账龄下的数据不计算)的需求
代码:
%macro pinbiao(start_date=20191231,end_date=20230630,n_k=42);

data temp1;
SET temp;
by 年份 ;

array m_p_o m_p_o_:;
array m_o_i m_o_i_:;
array sum_m_p_o sum_m_p_o_0-sum_m_p_o_%sysfunc(compress(&n_k.));
array sum_m_p_o_r sum_m_p_o_r_0-sum_m_p_o_r_%sysfunc(compress(&n_k.));
damn_k=INTCK('month',合同开始时间,input("&end_date.",yymmdd10.))+1;

if first.年份  then do;
    sum_m_fk=0;
    do i =1 to damn_k;
    sum_m_p_o(i)=0;
    sum_m_p_o_r(i)=0;
    end;
end;
sum_m_fk+m_fk;

do i = 1 to damn_k;
        if m_o_i(i)>1   then do;
    sum_m_p_o(i)+m_p_o(i);
    end;
sum_m_p_o_r(i)=sum_m_p_o(i)/sum_m_fk;
if i=damn_k then do;yq_dkye=sum_m_p_o(i);end;
end;

if last.年份 then output;
keep 年份 sum_m_p_o_r_:;
run;
%mend;
%pinbiao(start_date=20191231,end_date=20230630,n_k=42);
结果:

img