I have adapted your code to fix it:
data want(drop=i dob add_zip add_cntry);
set have;
retain i zip1-zip4 CNTRY1-CNTRY4 DOB1-DOB4;
ARRAY ZIP {*} $ ZIP1-ZIP4;
ARRAY CNTRY {*} $ CNTRY1-CNTRY4;
ARRAY DOB_ {*} $ DOB1-DOB4;
if first.ID then do;
i=1;
call missing(of zip(*));
call missing(of cntry(*));
call missing(of dob_(*));
end;
ZIP(i) = ADD_ZIP;
CNTRY(i) = ADD_CNTRY;
DOB_(i) = DOB;
IF LAST.ID THEN OUTPUT; i+1;
run;
... View more