This code is very suspect as to what you might be attempting.
newrecurr=.;
if newrecurr ge 14 and newrecurr le 60;
The first line sets a missing value to a variable. Then you attempt to only keep records where the value is between 14 and 60.
The approach looks like you should sort your data by lastname, firstname, dob_mo, dob_day, dob_yr, and diagnosisdate.
Then you can use Retain and or first and last processing to see if a person has more than one diagnosis.
I suspect you may be missing a detail or two such as which variable has the actual disease diagnosis (which should go before diagnosisdate in the sort order).
Here is an example of retaining a value from previous records and using it later for a comparison
proc sort data=sashelp.class out=work.class;
by sex age;
run;
data work.example;
set work.class;
by sex age;
retain firstageweight firstageheight;
if first.age then do;
firstageweight=weight;
firstageheight=height;
end;
diffageweight = weight - firstageweight;
diffageheight = height - firstageheight;
run;
Also is your diagnosisdate an actual SAS date valued numeric or something else? Date comparisons work much better with data values.
You also might want to consider generating and actual DOB date value with :
Dobdate = mdy(dob_mo, dob_day, dob_yr);
format dobdate date9.;
... View more