En un sistema donde tengo el apellido Paterno Materno Nombre
lo asi:
paterno=SPACE(15)
materno=SPACE(15)
nombres=SPACE(25)
luego invoco la funcion
sep_pat_mat_nomb(Nombre)
FUNCTION sep_pat_mat_nomb(nombre)
LOCAL ln, j, r, extr
SET EXACT ON
extr=''
m.nombres=''
m.nombr1=''
ln=LEN(nombre)
j = 1 && CON ESTO CUENTO LOS ESPACIOS ENTRE NOMBRES Y APELLIDOS
FOR r = 1 TO ln
DO CASE
CASE j = 1
IF SUBSTR(nombre,r,1) != " "
extr=extr+SUBSTR(nombre,r,1)
ELSE
IF !del_o_de(extr)
paterno=extr+" "
extr=''
j=2
ELSE
extr=extr+" "
ENDIF
ENDIF
CASE j = 2
IF SUBSTR(nombre,r,1) != " "
extr=extr+SUBSTR(nombre,r,1)
ELSE
IF !del_o_de(extr)
materno=extr+" "
extr=''
j=3
ELSE
extr=extr+" "
ENDIF
ENDIF
CASE j = 3
* m.nombres=m.nombres+substr(nombre,r,1)
IF SUBSTR(nombre,r,1) != " "
extr=extr+SUBSTR(nombre,r,1)
ELSE
IF !del_o_de(extr)
m.nombres=extr+" "
extr=''
j=4
ELSE
extr=extr+" "
ENDIF
ENDIF
CASE j = 4
m.nombr1=m.nombr1+SUBSTR(nombre,r,1)
ENDCASE
NEXT
IF m.nombres != ''
m.nombres=LTRIM(m.nombres)
ELSE
IF m.nombr1 != ''
m.nombres=m.nombr1
ENDIF
ENDIF
RETURN
lA SIGUIENTE FUNCION EVALUA LOS CONJUNTOS DE DOS O TRES LETRAS DE LOS NOMBRES Y APELLIDOS COMPUESTOS
FUNCTION del_o_de(palab)
ret=.F.
DO CASE
CASE UPPER(ALLTRIM(palab)) == "DE"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "LA"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "DEL"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "SAN"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "MC"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "MAC"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "LOS"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "LAS"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "DI"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "O'"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "AL"
ret=.T.
CASE UPPER(ALLTRIM(palab)) == "LO"
ret=.T.
CASE UPPER(palab) == "DE LA"
ret=.T.
ENDCASE
RETURN(ret)