In the future please show what you've tried.
data wide;
set have;
array _start(*) drugA_start: drugB_start:;
array _end(*) drugA_end: drugB_end:;
do i=1 to dim(_start);
start_date=_start(i);
end_date=_end(i);
Drug=scan(vname(_start(i)), 1, '_');
output;
*conditionally output for non misisng but you need to check your data quality;
*if nmiss(start_date, end_date) = 0 then output;
end;
keep ID drug start_date end_date;
format start_date end_date date9.;
run;
... View more