Try this:
<%
Dim sFullname, sFirstName, sMiddleName, sLastName
sFullName = "John J Finklehymer"
sFirstName = left(sFullName, instr(sFullName, " "

)
sLastName = mid(sFullName, InStrRev(sFullName, " "

)
sMiddleName = mid(sFullName, len(sFirstName)+1, len(sFullName)-len(sFirstname)-len(sLastname))
response.write "<br>First name =" & sFirstName
response.write "<br>Last name =" & sLastName
response.write "<br>Middle name/initial =" & sMiddleName
%>
Then all you have to worry about is
John J Finklehymer III and Finklehymer Jr.
Alternatively:
<%
Dim sFullname, sFirstName, sMiddleName, sLastName, a
a = split(sFullName)
select case Ubound(a)
case 0
response.write "<br>First name =" & a(0)
'response.write "<br>Last name =" & a(0) 'you choose
case 1
response.write "<br>First name =" & a(0)
response.write "<br>Last name =" & a(1)
case 2
response.write "<br>First name =" & a(0)
response.write "<br>Middle name/initial =" & a(1)
response.write "<br>Last name =" & a(2)
case 3
response.write "<br>First name =" & a(0)
response.write "<br>Middle name/initial =" & a(1)
response.write "<br>Last name =" & a(2)
response.write "<br>Other=" & a(3)
end select
%>