As soon as personal names are involved, sooner or later things will get interesting. Without a proper delimiter between first-name and last-name this problem can't be solved, because the number of words forming first-name and last-name is rarely two (one word for each), starting the interesting part: from the second to the next-to-last word you have to decide, whether the word belongs to first-name or last-name. This is pure guesswork and will not lead to usable results.
The following step extracts the names and stores in in one variable:
data want;
set have;
length FullName $ 40 rxName 8;
retain rxName;
drop rxName;
if _n_ = 1 then do;
rxName = prxparse('/requestor:_(.+)_reason/i');
end;
if prxmatch(rxName, note) then do;
FullName = prxposn(rxName, 1, note);
FullName = translate(FullName, ' ', '_');
end;
run;