Your data are sorted by ID. You want new variable END_DATE1 to take the value of END_DATE only for ID's than have no instance of missing END_DATE, correct?
If so, then
data want;
merge have (where=(end_date=.) in=inblank)
have;
by id;
format end_date1 date9. ;
if inblank=0 then end_date1=end_date;
run;
The temporary dummy variable INBLANK will be zero only for those ID's with no rows with missing END_DATE.
... View more