SAS treats simple numeric values as logical when you use logical operators like OR , AND and such between them. The "rule" if is the number is not 0 (zero) or missing then it is "true".
So your statement
if menstat_type ne 1 or 2 or 3 then delete;
Was treated as (replacing the numbers with the SAS logical treatment)
If menstate_type ne 1 or (true) or (true) then delete.
So if the menstate_type was not 1 then SAS thinks you want to delete the record. Either use the IN operator to make sure the variable is compared to the list or you have to explicitly do each comparison. However "not equal" to multiple values become AND instead of OR. Look up De Morgan's Law for logic.
if menstat_type ne 1 AND menstat_type ne 2 AND menstat_type ne 3 then delete;
The logic involved is routine, tedious and an obnoxious exercise until you do a lot of these. (Or take a course about Logic).