data want (keep=usubjid startdtm stopdtm);
set have1;
retain temp_end temp_start;
if intermediatestoptime ne . and restarttime ne . then do;
startdtm= catx('T', put(date, date11.), put(starttime, time8.));
stopdtm= catx('T', put(date, date11.), put(intermediatestoptime, time8.));
output;
startdtm= catx('T', put(date, date11.), put(restarttime, time8.));
stopdtm= catx('T', put(date, date11.), put(finalstoptime, time8.));
output;
end;
if intermediatestoptime eq . and restarttime eq . then do;
startdtm= catx('T', put(date, date11.), put(starttime, time8.));
stopdtm= catx('T', put(date, date11.), put(finalstoptime, time8.));
output;
end;
if intermediatestoptime eq . and restarttime ne . then do;
temp_end=restarttime;
startdtm= catx('T', put(date, date11.), put(starttime, time8.));
stopdtm= catx('T', put(date, date11.), put(temp_end, time8.));
output;
startdtm= catx('T', put(date, date11.), put(starttime, time8.));
stopdtm= catx('T', put(date, date11.), put(finalstoptime, time8.));
output;
end;
if intermediatestoptime ne . and restarttime eq . then do;
temp_start=intermediatestoptime;
startdtm= catx('T', put(date, date11.), put(starttime, time8.));
stopdtm= catx('T', put(date, date11.), put(intermediatestoptime, time8.));
output;
startdtm= catx('T', put(date, date11.), put(temp_start, time8.));
stopdtm= catx('T', put(date, date11.), put(finalstoptime, time8.));
output;
end;
run;
proc print data=want;
run;
... View more