TIME()
 Devuelve la hora del sistema
------------------------------------------------------------------------------
 Sintaxis

     TIME() --> cCadenaHora

 Devuelve

     TIME() devuelve la hora del sistema como una cadena de carácteres en el
     formato hh:mm:ss. hh es la hora en formato de 24 horas, mm son los
     minutos y ss son los segundos

 Descripción

     TIME() es una función horaria que muestra la hora del sistema en la
     pantalla o la imprime en un informe. TIME() está relacionada con
     SECONDS(), que devuelve un valor entero que representa el número de
     segundos desde la media noche. Para cálculos horarios, suele utilizarse
     SECONDS() en vez de TIME()

 Ejemplos

     .  Estos ejemplos muestran el resultado de utilizar TIME() con
        SUBSTR() para extraer los dígitos de hora, minutos y segundos:

        ? TIME()                       // Resultado: 10:37:17
        ? SUBSTR(TIME(), 1, 2)         // Resultado: 10
        ? SUBSTR(TIME(), 4, 2)         // Resultado: 37
        ? SUBSTR(TIME(), 7, 2)         // Resultado: 17

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.


TONE()
 Hace sonar un tono en el altavoz, con la frecuencia y duraci.n especificadas
------------------------------------------------------------------------------
 Sintaxis

     TONE(<nFrecuencia>, <nDuraci.n>) --> NIL

 Argumentos

     <nFrecuencia> es un valor numérico que indica la frecuencia del tono
     que va a sonar.

     <nDuraci.n> es un número positivo que indica la duraci.n del tono
     medida en incrementos de 1/18 de segundo. Por ejemplo, una <nDuraci.n>
     de 18 representa un segundo.

     En ambos argumentos, los valores decimales se truncan, sin redondear,
     para dar la parte entera.

 Devuelve

     TONE() siempre devuelve NIL.

 Descripción

     TONE() es una función de sonido que sirve para indicar al usuario los
     diferentes estados de un programa. Pueden ser estados de error,
     condiciónes l.mite o el final de un proceso muy lento. Por ejemplo, un
     estado de error podr.a generaráun cierto tono antes de alertar al
     usuario con un mensaje o un panel de diálogo interactivo. Una condición
     l.mite podr.a indicar que el usuario est. intentando desplazar el cursor
     m.s all. de la posición superior o inferior de una columna de un objeto
     TBrowse.

     Un proceso por lotes podr.a indicar el momento de terminaci.n con un
     sonido, para alertar al usuario en caso de que .ste se haya alejado de
     la pantalla.

     TONE() trabaja generando tonos con una frecuencia y duraci.n
     especificadas. La duraci.n se mide en incrementos de 1/18 de segundo. La
     frecuencia se mide en hertzios (ciclos por segundo). Las frecuencias por
     debajo de 20 Hz son inaudibles. La tabla siguiente muestra las
     frecuencias de las notas musicales estándar.

     Nota: TONE() sólo opera en ordenadores personales totalmente
     compatibles .

     Tabla de Notas Musicales
     ------------------------------------------------------------------------
     Nota      Frecuencia          Nota       Frecuencia
     ------------------------------------------------------------------------
     C         130,80              C medio    261,70
     C#        138,60              C#         277,20
     D         146,80              D          293,70
     D#        155,60              D#         311,10
     E         164,80              E          329,60
     F         174,60              F          349,20
     F#        185,00              F#         370,00
     G         196,00              G          392,00
     G#        207,70              G#         415,30
     A         220,00              A          440,00
     A#        233,10              A#         466,20
     B         246,90              B          493,90
     C         523,30
     ------------------------------------------------------------------------

 Ejemplos

     .  Este ejemplo es una función que indica con un tono cuando ha
        terminado un proceso por lotes:

     FUNCTION BipTerminacion

           TONE(300, 1)
           TONE(100, 1)
           TONE(300, 1)
           TONE(100, 1)
           RETURN NIL

     .  Este ejemplo es una secuencia de tonos que indican que se han
        pulsado teclas no víaacute;lidas o que se han alcanzado condiciónes l.mite:

        FUNCTION BipError
           TONE(100, 3)
           RETURN NIL

 Ficheros:  La biblioteca asociada es EXTEND.LIB,
            el módulo fuente es SOURCE\SAMPLE\EXAMPLEA.ASM.


TRANSFORM()
 Convierte cualquier valor en una cadena de carácteres formateada
------------------------------------------------------------------------------
 Sintaxis

     TRANSFORM(<exp>, <cPatrónFormatoSay>) --> cCadenaFormato

 Argumentos

     <exp> es el valor que se va a formatear. Puede ser una expresión de
     cualquier tipo de datos víaacute;lido en CA-Clipper excepto matrices, bloques
     de código y NIL.

     <cPatrónFormatoSay> es una cadena de carácteres que describe el
     formato del valor devuelto.

 Devuelve

     TRANSFORM() convierte <exp> en una cadena de carácteres formateada seg.n
     lo definido en<cPatrónFormatoSay>.

 Descripción

     TRANSFORM() es una función de conversión que formatea valores de
     carácteres, fechas, lógicos y numéricos de acuerdo a una cadena de
     formato especificada compuesta por una combinación de funciónes de
     formato y cadenas de plantilla.

     TRANSFORM() formatea los datos para su salida por pantalla o por
     impresora de la misma manera que la cláusula PICTURE del mandato
     @...SAY.

     .  Cadena de función: Cadena que especifica las reglas de
        formato aplicadas al valor devuelto por TRANSFORM() en su conjunto,
        en vez de a las posiciónes de carácter individuales en <exp>. Est.
        formada por el carácter @ seguido de uno o m.s carácteres
        adicionales, cada uno de los cuales tiene un significado determinado
        (consulte la tabla siguiente). Si se indica una cadena de función, el
        carácter @ debe ser el primero a la izquierda de la cadena de
        formato, y la cadena de función no debe contener espacios.

        Puede especificarse una cadena de función sola o acompañada de una
        cadena de plantilla. Si se utilizan ambas, la cadena de función debe
        preceder a la cadena de plantilla y las dos deben estar separadas por
        un espacio.

        funciónes TRANSFORM() 
        ---------------------------------------------------------------------
        función    Acción
        ---------------------------------------------------------------------
        B          Muestra números justificados a la izquierda
        C          Muestra RC después de los números positivos
        D          Muestra las fechas en el formato especificado por SET DATE
        E          Muestra la fecha en formato británico
        R          Inserta carácteres que no aparecen en la plantilla
        X          Muestra DB después de los números negativos
        Z          Muestra los ceros como espacios en blanco
        (          Sitúa los números negativos entre paréntesis
        !          Convierte en mayúsculasólos carácteres alfabéticos
        ---------------------------------------------------------------------

     .  Cadena de plantilla: La cadena de plantilla especifica las
        reglas de formato carácter a carácter. La cadena de plantilla est.
        formada por una serie de carácteres, algunos de los cuales tienen
        significados especiales (consulte la tabla siguiente). Cada posición
        de la cadena de plantilla corresponde a una posición en el valor del
        argumento <exp>. Esta plantilla se utiliza con TRANSFORM(), por lo
        que puede servir para insertar carácteres tales como comas, signos de
        d.lar y paréntesis.

        Los carácteres de la cadena de plantilla que no tengan significados
        asignados se copian literalmente en el valor devuelto. Si se utiliza
        la función de imagen @R, estos carácteres se insertan entre los
        carácteres del valor devuelto; en caso contrario sustituyen a los
        carácteres correspondientes de dicho valor. Puede especificarse una
        cadena de plantilla sola o acompañada de una cadena de función. Si se
        utilizan ambas, la cadena de función debe ir antes que la cadena de
        plantilla y ambas cadenas deben estar separadas por un espacio.

        Plantillas TRANSFORM() 
        ---------------------------------------------------------------------
        Plantilla      Acción
        ---------------------------------------------------------------------
        A,N,X,9,#      Muestra dígitos de cualquier tipo de datos
        L              Muestra los valores lógicos como "T" o "F"
        Y              Muestra los valores lógicos como "S" o "N"
        !              Convierte en mayúscula un carácter alfabético
        $              Muestra un signo de d.lar en cada espacio inicial en
                       blanco de un valor numérico
        *              Muestra un asterisco en cada espacio inicial en blanco
                       de un valor numérico
        .              Especifica una posición de punto decimal
        ,              Especifica una posición de coma
        ---------------------------------------------------------------------

 Ejemplos

     .  Este ejemplo asigna un formato monetario a un número
        utilizando una plantilla:

        ? TRANSFORM(123456, "$999,999")        // Resultado: $123,456

     .  Este ejemplo formatea una cadena de carácteres útilizando una
        función:

        ? TRANSFORM("en mayúsculas", "@!")     // Resultado: EN MAYUSCULAS

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.

TYPE()
 Determina el tipo de una expresión
------------------------------------------------------------------------------
 Sintaxis

     TYPE(<cExp>) --> cTipo

 Argumentos

     <cExp> es la expresión de carácteres cuyo tipo se va a determinar.
     <cExp> puede ser un campo, con o sin alias, una variable pública o
     privada o una expresión de cualquier tipo.

 Devuelve

     TYPE() devuelve uno de los siguientes carácteres:

     Valores Devueltos por TYPE()
     ------------------------------------------------------------------------
     Devuelve     Significado
     ------------------------------------------------------------------------
     A            Matriz
     B            Bloque de C.digo
     C            Car.cter
     D            Fecha
     L            L.gico
     M            Memo
     N            numérico
     O            Objeto
     U            NIL, local o estática
     UE           Error de sintaxis
     UI           Error indeterminado
     ------------------------------------------------------------------------

 Descripción

     TYPE() es una función del sistema que devuelve el tipo de la expresión
     especificada. Puede comprobar la validez de la expresión mientras esta
     utilice funciónes CLIPPER.LIB y no haga referencia a variablesólocales o
     estáticas, funciónes definidas por el usuario o funciónes predefinidas
     contenidas en EXTEND.LIB.

     TYPE() es similar a VALTYPE() , pero utiliza el operador de macro (&)
     para determinar el tipo del argumento. Esto impide utilizar TYPE() para
     determinar el tipo de variablesólocales o estáticas. VALTYPE(), por
     contra, permite evaluar una expresión y determina el tipo de datos del
     valor devuelto. Permite determinar el tipo de funciónes definidas por el
     usuario y de variablesólocales y estáticas.

 Notas

     .  Referencias a matrices: Las referencias a matrices
        públicas y privadas devuelven "A". Las referencias a elementos de
        matrices devuelven el tipo del elemento.

     .  IF(): Para devolver el tipo de datos de una expresión
        IF(), TYPE() eval.a la condición y luego devuelve el tipo de la vía
        especificada. Si la expresión IF() o la vía evaluada no son víaacute;lidos,
        TYPE() devuelve "UE".

     .  Comprobaci.n de parámetros: TYPE() sólo puede comprobar la
        validez de los parámetros recibidos con la sentencia PARAMETERS Al
        verificar un parámetro declarado como parte de una declaración
        FUNCTION o PROCEDURE, devuelve siempre "U.", porque los parámetros
        locales no tienen un s.mbolo en la tabla de s.mbolos. Para determinar
        si se ha saltado un argumento o dejado al final de la lista de
        argumentos, compare el parámetro con NIL o utilice la función
        VALTYPE().

     .  funciónes definidas por el usuario y contenidas en
        EXTEND.LIB Si en una expresión se hace una referencia a una función
        que no se encuentra en CLIPPER.LIB (una función definida por el
        usuario o EXTEND.LIB ), TYPE() devuelve "UI." Si la función definida
        por el usuario no ha sido enlazada al programa actual, TYPE()
        devuelve "U.".

 Ejemplos

     .  Estos ejemplos muestran diversos resultados de la utilización
        de TYPE():

        ? TYPE('SUBSTR("Hola, .qu. tal?", 4, 5)')    // Resultado: C
        ? TYPE("UDF()")                              // Resultado: UI
        ? TYPE('IF(.T., "verdadero", 12)')           // Resultado: C

     .  Este ejemplo muestra dos m.todos de comprobar la existencia y
        tipo de los parámetros declarados:

        FUNCTION ParamPrueba
           PARAMETERS cParam1, nParam2
           IF cParam1 = NIL
              ? "No se ha pasado el primer parámetro"
              cParam1 := "Valor por defecto"
           ENDIF
           //
           IF TYPE(nParam2) == "U"
              ? "No se ha pasado el segundo parámetro"
           ENDIF
           .
           . <sentencias>
           .
           RETURN NIL

 Ficheros: La biblioteca asociada es CLIPPER.LIB.


UPDATED()
 Determina si ha cambiado un objeto GET durante un mandato READ
------------------------------------------------------------------------------
 Sintaxis

     UPDATED() --> lCambio

 Devuelve

     UPDATED() devuelve verdadero (.T.) si se han a.adido o modificado datos
     en un GET; en caso contrario devuelve falso (.F.).

 Descripción

     UPDATED() determina si se han introducido satisfactoriamente los
     carácteres en el objeto GET desde el teclado utilizando el READ m.s
     reciente. Cada vez que se ejecuta un READ, UPDATED() toma el valor falso
     (.F.). Cada vez que se accede a un objeto GET desde el teclado,
     UPDATED() toma el valor verdadero (.T.) después de que el usuario sale
     del objeto GET. Si el usuario pulsa Esc antes de salir del primer objeto
     GET editado, UPDATED() sigue siendo falso (.F.). Cuando UPDATED() toma
     el valor verdadero (.T.), mantiene este valor, hasta que se ejecuta el
     siguiente READ.

     En un procedimiento SET KEY o VALID puede cambiar la variable del GET
     actual utilizando el mandato KEYBOARD o asign.ndole un nuevo valor con
     cualquiera de los operadores de asignación. Cambiar el valor de la
     variable con KEYBOARD tiene el mismo efecto que si el usuario hubiera
     introducido el cambio directamente desde el teclado, y UPDATED()
     devuelve el valor correspondiente. No obstante, como UPDATED() refleja
     sólo los cambios realizados desde el teclado, una asignación de la
     variable del GET no afecta a UPDATED().

 Ejemplos

     .  Este ejemplo asigna valores de campos de Clientes.dbf a
        variables y las edita. Si el usuario cambia cualquiera de estos
        valores, las variables de campo para el registro actual se actualizan
        con los nuevos valores:

        USE Cliente NEW
        CLEAR
        MEMVAR->Cliente = Cliente->Cliente
        MEMVAR->Direccion = Cliente->Direccion
        @ 1, 1 SAY "Nombre:" GET MEMVAR->Cliente
        @ 2, 1 SAY "Direccion:" GET MEMVAR->Direccion
        READ
        //
        IF UPDATED()
           Cliente->Cliente := MEMVAR->Cliente
           Cliente->Direccion := MEMVAR->Direccion
        ENDIF

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.


UPPER()
 Convierte todas las minúsculas en mayúsculas
------------------------------------------------------------------------------
 Sintaxis

     UPPER(<cCadena>) --> cCadenaMay.s

 Argumentos

     <cCadena> es la cadena de carácteres que se va a convertir.

 Devuelve

     UPPER() devuelve una copia de <cCadena> con todos los carácteres
     alfabéticos transformados en mayúsculas. Los restántes carácteres
     permanecen inalterados como en la cadena original.

 Descripción

     UPPER() es una función de carácteres que convierte cadenas en minúsculas
     y mixtas en cadenas en mayúsculas. Está relacionada con LOWER() que
     convierte cadenas en mayúsculas y mixtas en cadenas en minúsculas.
     UPPER() está relacionada también con las funciónes ISUPPER() y ISLOWER()
     que determinan si una cadena comienza con una letra minúscula o
     mayúscula.

     UPPER() se utiliza normalmente para formatear cadenas de carácteres con
     fines de visualización. También puede utilizarse para homogeneizar
     cadenas en comparaciones que no diferencian mayúsculas y minúsculas o
     para ordenación con INDEX.

 Ejemplos

     .  Este ejemplo muestra el resultado de UPPER():

        ? UPPER("una cadena")            // Resultado: UNA CADENA
        ? UPPER("123 carac = <>")        // Resultado: 123 CARAC = <>

     .  Este ejemplo utiliza UPPER() como parte de una condición
        independiente de mayúsculas y minúsculas:

        USE Cliente INDEX NombreCliente NEW
        LIST NombreCliente FOR "KATE" $ UPPER(Cliente)

     .  UPPER() es útil también para crear expresiónes clave de
        ííndices, independientes de mayúsculas y minúsculas:

        USE Cliente NEW
        INDEX ON UPPER(último) TO últimoCliente

     .  A continúa.ión, puede utilizar esta expresión para buscar
        Clientes:

        MEMVAR->último = SPACE(15)
        @ 10, 10 GET MEMVAR->último
        READ
        SEEK UPPER(MEMVAR->último)

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.

USED()
 Determina si se est. utilizando un fichero de base de datos
------------------------------------------------------------------------------
 Sintaxis

     USED() --> lFichAbierto

 Devuelve

     USED() devuelve verdadero (.T.) si existe alg.n fichero de base de datos
     abierto; en caso contrario devuelve falso (.F.)


 Descripción

     USED() es una función de base de datos que determina si existe alg.n
     fichero de base de datos abierto o en un área de trabajo determinada.
     Por defecto, USED() act.a en el área de trabajo seleccionada
     actualmente. Si desea que act.e en un área de trabajo no seleccionada,
     debe especificarse como parte de una expresión de alias.

 Ejemplos

     .  Este ejemplo determina si se est. utilizando un fichero de
        base de datos en el área de trabajo actual:

        USE Cliente NEW
        ? USED()               // Resultado: .T.
        CLOSE
        ? USED()               // Resultado: .F.

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.


VAL()
 Convierte un valor de carácteres en un valor numérico
------------------------------------------------------------------------------
 Sintaxis

     VAL(<cnúmero>) --> nNúmero

 Argumentos

     <cnúmero> es la expresión de carácteres que se va a convertir.

 Devuelve

     VAL() devuelve <cnúmero> convertido en un valor numérico, incluyendo
     dígitos decimales.

 Descripción

     VAL() es una función de conversión que convierte una cadena de
     carácteres que contiene dígitos numéricos en un valor numérico. Al
     ejecutar VAL(), eval.a <cnúmero> hasta una segunda coma decimal, el
     primer carácter no numérico o el final de la expresión. Los espacios en
     blanco iniciales se ignoran. Si se ha establecido SET FIXED ON, VAL()
     devuelve el número de lugares decimales especificado por SET DECIMALS,
     redondeando <cnúmero> si se especifica con m.s dígitos que el valor
     DECIMALS actual. Igual que las otras funciónes de redondeo, los dígitos
     comprendidos entre cero y cuatro se redondean hacia abajo y los dígitos
     entre cinco y nueve se redondean hacia arriba. Si se ha establecido SET
     FIXED OFF, VAL() devuelve el número de lugares decimales especificado
     entre <cnúmero>.

     VAL() es la opuesta de STR() y TRANSFORM() que convierten valores
     numéricos en cadenas de carácteres.

 Ejemplos

     .  Estos ejemplos muestran la utilización de VAL() con SET FIXED
        ON y SET DECIMALS TO 2:

        SET DECIMALS TO 2
        SET FIXED ON
        //
        ? VAL("12,1234")           // Resultado:   12,12
        ? VAL("12,1256")           // Resultado:   12,13
        ? VAL("12A12")             // Resultado:   12
        ? VAL("A1212")             // Resultado:    0
        ? VAL(SPACE(0))            // Resultado:    0
        ? VAL(SPACE(1))            // Resultado:    0
        ? VAL(" 12,12")            // Resultado:   12,12
        ? VAL("12 ,12")            // Resultado:   12,00

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.

VALTYPE()
 Determina el tipo de datos devuelto por una expresión
------------------------------------------------------------------------------
 Sintaxis

     VALTYPE(<exp>) --> cTipo

 Argumentos

     <exp> es una expresión de cualquier tipo.

 Devuelve

     VALTYPE() devuelve un carácter sencillo que representa el tipo de datos
     devuelto por <Exp>. VALTYPE() devuelve uno de los siguientes carácteres:

     Valores Devueltos por VALTYPE()
     ------------------------------------------------------------------------
     Devuelve     Significado
     ------------------------------------------------------------------------
     A            Matriz
     B            Bloque de código
     C            Car.cter
     D            Fecha
     L            L.gico
     M            Memo
     N            numérico
     O            Objeto
     U            NIL
     ------------------------------------------------------------------------

 Descripción

     VALTYPE() es una función del sistema que toma un argumento, lo eval.a y
     devuelve una cadena de carácteres que describe el tipo de datos del
     valor devuelto. Es similar a TYPE() pero difiere en que eval.a realmente
     el argumento especificado y determina el tipo del valor devuelto. Por
     esta raz.n, permite determinar el tipo de las variablesólocales y
     estáticas, funciónes definidas por el usuario y funciónes de la
     biblioteca EXTEND.LIB. TYPE(), por el contrario, utiliza el operador de
     macro (&) para evaluar el tipo del argumento. Observe que si el
     argumento no existe se producirá un error ("error no definido"), a
     diferencia de TYPE que devuelve "U".

 Ejemplos

     .  Estos ejemplos muestran los valores de retorno para varios
        tipos de datos:

        ? VALTYPE(1)                 // Resultado: N
        ? VALTYPE("GOOB")            // Resultado: C
        ? VALTYPE(NIL)               // Resultado: U
        ? VALTYPE(matriz)            // Resultado: A

        ? VALTYPE(bloque)            // Resultado: B

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.


VERSION()
 Devuelve la versi.n de CA-Clipper
------------------------------------------------------------------------------
 Sintaxis

     VERSION() --> cVersi.n

 Devuelve

     VERSION() devuelve el número de versi.n de la biblioteca EXTEND.LIB,
     como un valor de carácteres.

 Descripción

     VERSION() es una función de entorno que devuelve el número de versi.n de
     la biblioteca EXTEND.LIB de CA-Clipper.

 Ficheros:  La biblioteca asociada es EXTEND.LIB.

WORD()*
 Convierte los parámetros numéricos del mandato CALL de doble precisión a
 enteros sencillos
------------------------------------------------------------------------------
 Sintaxis


     WORD(<nNúmero>) --> NIL

 Argumentos

     <nNúmero> es el valor numérico que se va a convertir en entero,
     especificado en el rango de m.s/menos 32.767, inclusive.

 Devuelve

     Utilizado como un argumento del mandato CALL WORD() devuelve un número
     entero. En cualquier otro contexto, devuelve NIL.

 Descripción

     WORD() es una función de conversión que convierte los parámetros
     numéricos del mandato CALL de doble precisión a enteros. WORD() es una
     función de compatibilidad, por lo que su utilización no es recomendable.
     Tanto el mandato CALL como la función WORD() se anulan por los programas
     del Sistema Extendido. Si desea más información, consulte el capítulo
     Utilizaci.n del Sistema Extendido en el Manual de Consulta T.cnica.

 Ejemplos

     .  Este ejemplo utiliza WORD() como argumento del mandato CALL:

        CALL Cproc WITH WORD(30000), "Un texto"

 Ficheros:  La biblioteca asociada es CLIPPER.LIB.

YEAR()
 Convierte un valor de fecha en un a.o en formato numérico
------------------------------------------------------------------------------
 Sintaxis

     YEAR(<fFecha>) --> nA.o

 Argumentos

     <fFecha> es el valor de fecha que se va a convertir.

 Devuelve

     YEAR() devuelve el a.o contenido en el valor de fecha especificado,
     insertando las cifras de siglo para dar un valor numérico de cuarto
     dígitos. El valor que devuelve no depende del formato actual de
     SET DATE o SET CENTURY. Si se especifica una fecha nula, (CTOD(""))
     devuelve cero.

 Descripción

     YEAR() es una función de conversión que convierte un valor de fecha en
     un a.o en formato numérico. Se utiliza para cálculos en informes
     peri.dicos o para mostrar fechas con formato.

     YEAR() forma parte de un grupo de funciónes que devuelven los
     componentes de un valor de fecha en formato numérico. Este grupo incluye
     DAY() y MONTH() que devuelven el d.a y el mes, respectivamente, como
     valores numéricos.

 Ejemplos

     .  Estos ejemplos muestran la utilización de YEAR() utilizando la
        fecha del sistema:

        ? DATE()                     // Resultado: 09/20/90
        ? YEAR(DATE())               // Resultado: 1990
        ? YEAR(DATE()) + 11          // Resultado: 2001

     .  Este ejemplo crea una función definida por el usuario que
        utiliza YEAR() para dar formato a un valor de fecha como mes, d.a,
        a.o:

        ? Mdy(DATE())                // Resultado: 20 de Septiembre de 1990

        FUNCTION Mdy( fFecha )
           RETURN (LTRIM(STR(DAY(fFecha))) + "de" + cMonth(fFecha) +" "+;
                    STR(YEAR(fFecha))

 Ficheros: La biblioteca asociada es CLIPPER.LIB.