proc sort data = sdtm.dm(keep = USUBJID RFSTDTC) out = dm;
by USUBJID RFSTDTC;
run;
proc sort data = cm;
by USUBJID;
run;
data cm;
merge dm(in=a) cm(in=b);
by USUBJID;
if b;
if length(RFSTDTC) >= 10 then _RFSTDTC = input(substr(RFSTDTC,1,10),yymmdd10.);
if length(CMSTDTC) >= 10 then _CMSTDTC = input(substr(CMSTDTC,1,10),yymmdd10.);
if length(CMENDTC) >= 10 then _CMENDTC = input(substr(CMENDTC,1,10),yymmdd10.));
if nmiss(_RFSTDTC,_CMSTDTC) = 0 then CMSTDY = _CMSTDTC - _RFSTDTC + (_RFSTDTC <= _CMSTDTC); *** BR 05;
if nmiss(_RFSTDTC,_CMENDTC) = 0 then CMENDY = _CMENDTC - _RFSTDTC + (_RFSTDTC <= _CMENDTC); *** BR 06;
run;