@...SAY
 Muestra datos en una fila y columna especificada de la pantalla o la impresora.
------------------------------------------------------------------------------
 Sintaxis

     @ <nFila>, <nColumna>
        SAY <exp> [PICTURE <cPatróndeFormatoSay>]
        [COLOR <cCadenaColor>]

 Argumentos

     <nFila> y <nColumna> son las coordenadas de fila y columna
     donde se visualizarán los datos. Los valores de fila deben estar
     comprendidos entre cero y MAXROW() si DEVICE tiene el valor SCREEN, o
     32.766 si DEVICE tiene el valor PRINTER. Asimismo, los valores de
     columna pueden estar comprendidos entre cero y MAXCOL() en el primer
     caso, o 32.766, en el segundo.

     SAY <exp> muestra el resultado de una expresión de caracteres,
     fechas, valores lógicos o números en el dispositivo de salida actual
     (DEVICE).

     PICTURE <cPatróndeFormatoSay> determina el control de formato para
     la visualización de <exp>. CA-Clipper dispone de dos mecanismos,
     (funciones y plantillas) para el control de formato. Las funciones se
     aplican al mandato SAY completo, mientras que las plantillas formatean
     los caracteres posición a posición.

     COLOR <cCadenaColor> define el color de visualización de <exp>. Si
     no se especifica, <exp> se muestra en el color estándar definido por
     SETCOLOR(). <cCadenaColor> es una expresión de caracteres que contiene
     la selección de colores estándar. Si especifica una selección de
     colores literal, debe escribirla entre comillas.

     Los mandatos combinados @...SAY...GET requieren dos cláusulas COLOR:
     una para especificar los colores de SAY y otra para los colores de
     GET.

 Descripción

     @...SAY es un mandato de pantalla completa que envía el resultado de
     <exp> a la pantalla o a la impresora, en la posición definida por las
     coordenadas de fila y columna. Opcionalmente, puede formatear este
     resultado con una cláusula PICTURE. @...SAY crea pantallas de entrada
     de datos o informes que pueden enviarse a la pantalla o a una
     impresora.

     Cuando se ejecuta un mandato @...SAY, el resultado de <exp> se envía al
     dispositivo actualmente definido en SET DEVICE. El valor de DEVICE
     puede ser SCREEN o PRINTER. A diferencia de los mandatos de consola, la
     redirección a la impresora de la salida del mandato @...SAY no aparece
     en la pantalla, y el mandato SET CONSOLE no tiene efecto tampoco sobre
     estos mensajes en pantalla.

     Si DEVICE tiene el valor SCREEN (valor por defecto),el resultado del
     mandato @...SAY se muestra en la pantalla, situando el cursor una
     columna a la derecha del último carácter visualizado. ROW() y COL() se
     actualizan con esta posición. No se visualizará la zona definida por
     MAXROW() y MAXCOL() que queda fuera de la pantalla, y el cursor quedará
     asimismo fuera de la pantalla visible. El resultado del mandato @...SAY
     se muestra siempre en el color estándar. Si desea más información sobre
     los colores, consulte la referencia de SETCOLOR().

     Si DEVICE tiene el valor PRINTER, el resultado del mandato se envía a
     la impresora en la posición indicada por <nFila> y <nColumna>. Si el
     valor actual de MARGIN es mayor que cero, se añade este valor a
     <nColumna>. En primer lugar la cabeza de impresión avanza entonces una
     posición a la derecha del último carácter impreso y se actualizan las
     funciones PROW() y PCOL(). Los mandatos @...SAY dirigidos a una
     impresora tienen un comportamiento diferente de los que se dirigen a la
     pantalla si la salida se envía a una posición de fila y columna
     inferior a los valores actuales de PROW() y PCOL():

      Si <nFila> es menor que PROW(), se ejecuta un mandato EJECT
        (CHR(12)) automáticamente en la impresora seguido del número de
        caracteres de saltos de línea (CHR(10)) necesarios para situar la
        cabeza de impresión en la posición <nFila> de la página siguiente

      Si <nColumna>, incluyendo el valor de SET MARGIN, es menor que
        PCOL(), se envía a la impresora un carácter de retorno de carro
        (CHR(13)) y el número de espacios requerido para situar el
        resultado de <exp> en la posición <nColumna>

     Si desea cancelar este comportamiento y enviar códigos de control a la
     impresora, o por cualquier otra razón, utilice la función SETPRC() para
     dar nuevos valores a PROW() y PCOL(). Si desea más información,
      consulte la referencia de la función SETPRC().

     Si se ha establecido SET DEVICE TO PRINTER, para redirigir a un fichero
     la salida del mandato @...SAY es necesario utilizar un mandato SET
     PRINTER TO <xcFichero>.

     Para dar formato a la salida de un mandato @...SAY puede utilizarse una
     cláusula PICTURE con un parámetro <cPatróndeFormatoSay>. Esta cláusula
     realiza la misma acción que una función TRANSFORM().
     <cPatróndeFormatoSay> puede estar formado por una función y/o una
     plantilla. La función PICTURE controla globalmente el mandato @...SAY.
     La plantilla de PICTURE define la longitud de la salida de @...SAY y
     el formato de cada posición de la salida.

     ■ Cadena de función: Una cadena de función de la cláusula PICTURE
        especifica las reglas de formato que se aplican a todo el valor
        visualizado por SAY, y no a posiciones particulares de dicho valor.
        La cadena de función comienza con el carácter @ seguido de uno o
        más caracteres adicionales, cada uno de los cuales tiene un
        significado particular (vea la tabla siguiente). La cadena de
        función no puede contener espacios y puede especificarse sola o
        acompañada de una cadena de plantilla. Si se indican ambas, la
        cadena de función debe preceder a la cadena de plantilla y estar
        separada de ella por un espacio.

        Funciones de Formato para SAY y TRANSFORM()
        ---------------------------------------------------------------------
        Función      Acción
        ---------------------------------------------------------------------
        B            Muestra números justificados a la izquierda
        C            Muestra CR después de los números positivos
        D            Muestra fechas en el formato SET DATE
        E            Muestra fechas y números en formato europeo
        R            Inserta caracteres que aparecen en la plantilla
                     durante la visualización
        X            Muestra DB después de los números negativos
        Z            Muestra los ceros como espacios en blanco
        (            Encierra los números negativos entre paréntesis
        !            Convierte en mayúsculas los caracteres alfabéticos
        ---------------------------------------------------------------------

     ■ Cadena de plantilla: La cadena de plantilla de PICTURE
        especifica reglas de formato que se aplican carácter a carácter. La
        cadena de plantilla está formada por una serie de caracteres,
        algunos de los cuales tienen significados especiales (ver tabla
        siguiente). Cada posición de la cadena de plantilla corresponde a
        una posición del valor SAY visualizado. Los caracteres de la cadena
        de plantilla que no tienen significados asignados, se copian
        textualmente en el valor visualizado. Si utiliza la función @R,
        entre los caracteres visualizados se insertan caracteres de la
        plantilla sin significado especial. En caso contrario, se
        sobreescriben los caracteres correspondientes del valor visualizado.
        Puede especificar una cadena de plantilla sola o acompañada de una
        cadena de función. Si se utilizan ambas, la cadena de función debe
        preceder a la cadena de plantilla e ir separada de ella por un
        espacio en blanco.

        Símbolos de Plantilla para SAY y 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 "Y" o "N"
        !               Convierte en mayúsculas los caracteres alfabéticos
        $               Muestra un signo de dólar en las posiciones de
                        los espacios iniciales de un valor numérico
        *               Muestra un asterisco en las posiciones de los
                        espacios iniciales de un valor numérico
        .               Especifica una posición de punto decimal
        ,               Especifica una posición de coma
        ---------------------------------------------------------------------

 Ejemplos

      Este ejemplo utiliza un mandato @...SAY con una cláusula
        PICTURE para mostrar un resultado formateado.

        nIngresoNeto = 7125.50
        nPerdidaNeta = -125.50
        cTelefono = "2134567890"
        cNombre = "Julia Peralta"
        //
        @ 1, 1 SAY nIngresoNeto PICTURE "@E 9,999.99"
        // Resultado: 7.125,50

        @ 2, 1 SAY nPerdidaNeta PICTURE "@)"
        // Resultado: (125,50)

        @ 3, 1 SAY cTelefono PICTURE "@R (999)999-9999"
        // Resultado: (213)456-7890

        @ 4, 1 SAY cNombre PICTURE "@!"
        // Resultado: JULIA PERALTA

      Este ejemplo es un pequeño programa de impresión de etiquetas
        que utiliza un mandato SET DEVICE para dirigir la salida a la
        impresora y la función SETPRC() para suprimir los EJECT
        automáticos:

        USE Vendedor INDEX Vendedor NEW
        SET DEVICE TO PRINTER
        DO WHILE !EOF()                      // Imprimir todos los registros
           @ 2, 5 SAY RTRIM(Nombre) + ", " + Apellido
            3, 5 SAY Calle
           @ 4, 5 SAY RTRIM(Ciudad) + ", " + Provincia + "  " + ;
                    CodigoPostal
           @ 6, 0 SAY SPACE(1)               // Ir al final de la etiqueta
           SETPRC(0, 0)                      // Suprimir salto página
           SKIP                              // Siguiente registro
        ENDDO
        SET DEVICE TO SCREEN
        CLOSE Vendedor

 Ficheros   La biblioteca asociada es CLIPPER.LIB.

 To download this example - click here.

See Also: ?|?? @...GET CLEAR COL() PCOL() PROW() QOUT()