See the statement I've marked that is causing the 0 rows. I think you mean't just ELSE not ELSE IF:
data fram_merge;
merge fram1_temp fram2_temp;
by subjid;
age = (vdate-bdate)/365.25;
diff_tchol = totchol2 - totchol;
ch_tchol = sign(diff_tchol);
if sysbp > 120 and sysbp2 > 120 then both_sbp = 1;
if sysbp =< 120 or sysbp2 =< 120 then both_sbp = 0;
if sysbp = . or sysbp2 = . then both_sbp = .;
if diabp > 90 and diabp2 >90 then both_dpb = 1;
if diabp <= 90 or diabp2 <=90 then bothdbp = 0;
if diabp = . or diabp2 =. then both_dbp = .;
if bothdbp = 1 and both_sbp = 1 then both_elev = 1;
else if both_elev = 0; * This statement is filtering all rows, remov word IF ;
If bothdbp = . and both_sbp = . then both_elev = .;
run;