data b(keep=id date mark _obs)
c(keep=id _obs _markobs date rename=(date=_dt));
set a;
_obs=_N_; output b;
if mark=1 then do;
_markobs=_n_;
do i=-5 to 5;
_obs=_n_+i;
output c;
end;
end;
run;
data d;
merge b(in=inb) c(in=inc);
by id _obs;
if inb;
if inc then do;
inter1=_obs-_markobs;
inter2=date-_dt;
...
data b(keep=id date mark _obs)
c(keep=id _obs _markobs date rename=(date=_dt));
set a;
_obs=_N_; output b;
if mark=1 then do;
_markobs=_n_;
do i=-5 to 5;
_obs=_n_+i;
output c;
end;
end;
run;
data d;
merge b(in=inb) c(in=inc);
by id _obs;
if inb;
if inc then do;
inter1=_obs-_markobs;
inter2=date-_dt;
end;
drop _:;
run;