FUNCTION FSTRDAT(cl_chr,cl_lim,cl_ind,cl_replace)
*0****************
* AUTOR...........: Lubin Azahuanche
* FECHA...........: 20/Julio/1,994
* NEMONICO........: Sacar String segun delimitador y numero de elemento
* SINTAXIS........: ??? = FSTRDAT(ExpC,Limitador [,Nr.Elemento [,Chr.Replace]])
* ........: ExpC Valor Character por analizar
* ........: Limitador Valor Character que separa Valores
* ........: Nr. Elemento Valor Numerico correspondiente al elemtento a sacar
* ........: String por Reemplazar en el N§ de Elemento indicado
* ........:
* ........: Modo Contador : retorna cuantos elementos existen con el delimitador dado en el String
* ........: Num = FSTRDAT(ExpC,Limitador)
* ........: Ejemplo :
* ........: FSTRDAT("123.AXC..BD.567",".") = 6
* ........: FSTRDAT(" ",".") = 0
* ........: FSTRDAT("123 ",".") = 1
* ........: Modo Extractor : Extrae el Elmento que se ubique en en el numero de de Elemento
* ........: Chr = FSTRDAT(ExpC,Limitador,Nr.Elemento)
* ........: Ejemplo :
* ........: FSTRDAT("123.AXC..BD.567",".",2) = "AXC"
* ........: FSTRDAT("123.AXC..BD.567",".",3) = ""
* ........: Modo Replace
* ........: Chr = FSTRDAT(ExpC,Limitador,Nr.Elemento,Chr.Replace)
* ........: Ejemplo :
* ........: FSTRDAT("123.AXC..BD.567",".",3,"abc") = "123.AXC.abc.BD.567"
* ........: FSTRDAT("123.AXC..BD.567",".",2,"abcd") = "123.abcd..BD.567"
* ........: FSTRDAT("123.AXC..BD.567",".",2,"") = "123...BD.567"
* ALCANCE.........: Uso general para extraer,cambiar parametros multiples en string
* RETORNA.........: CHR o NUM segun parametros
*********************************************************************************************************
LOCAL cl_nr,cl_dchr
DO CASE
CASE PCOUNT() < 2
?"Error Parameters LFSTRDAT() "
QUIT
CASE PCOUNT() = 2
cl_nr = 0
IF .NOT. EMPTY(cl_chr)
cl_lim = ALLTRIM(cl_lim)
cl_chr = cl_lim + ALLTRIM(cl_chr)
DO WHILE AT(cl_lim ,cl_chr) >0
cl_chr = SUBSTR(cl_chr,AT(cl_lim ,cl_chr)+1)
cl_nr = cl_nr + 1
ENDDO
ENDIF
RETURN cl_nr
CASE PCOUNT() = 3
cl_nr = 0
cl_dchr = ""
IF .NOT. EMPTY(cl_chr)
cl_lim = ALLTRIM(cl_lim)
cl_chr = cl_lim + ALLTRIM(cl_chr)
DO WHILE AT(cl_lim ,cl_chr) >0 .AND. cl_nr <> cl_ind
cl_chr = SUBSTR(cl_chr,AT(cl_lim ,cl_chr)+1)
cl_nr = cl_nr + 1
ENDDO
cl_dchr =ALLTRIM(SUBSTR(cl_chr,1,AT(cl_lim,cl_chr+cl_lim)-1))
ENDIF
RETURN cl_dchr
ENDCASE
* CASO PCOUNT() = 4
cl_nr = 0
cl_dchr = ""
IF .NOT. EMPTY(cl_chr)
cl_lim = ALLTRIM(cl_lim)
cl_chr = cl_lim + ALLTRIM(cl_chr)
DO WHILE AT(cl_lim ,cl_chr) >0
IF cl_nr <> cl_ind
cl_dchr =cl_dchr+ALLTRIM(SUBSTR(cl_chr,1,AT(cl_lim,cl_chr+cl_lim)-1))+cl_lim
ELSE
cl_dchr = cl_dchr + ALLTRIM(cl_replace) +cl_lim
ENDIF
cl_chr = SUBSTR(cl_chr,AT(cl_lim ,cl_chr)+1)
cl_nr = cl_nr + 1
ENDDO
cl_dchr = SUBSTR(cl_dchr,2)+cl_chr
ENDIF
RETURN cl_dchr