
BIN2I()
Convierte un entero con signo de 16 bits en un valor numérico
------------------------------------------------------------------------------
Sintaxis
BIN2I(<cEntConSigno>) --> nNúmero
Argumentos
<cEntConSigno> es una cadena de carácteres en formato de entero con
signo de 16 bits (el byte menos significativo primero). La función sólo
utiliza los dos primeros carácteres; todos los dem.s se ignoran.
Devuelve
BIN2I() devuelve un valor numérico entero.
Descripción
BIN2I() es una función de ficheros de bajo nivel que se utiliza con
FREAD() para convertir una cadena de carácteres de dos bytes, en formato
de entero con signo, en datos numéricos de CA-Clipper. Es muy .til al
leer ficheros de otros productos, porque permite leer los datos
numéricos en su formato nativo.
Ejemplos
. Este ejemplo abre un fichero de base de datos utilizando
funciónes de fichero de bajo nivel y lee la fecha de la .ltima
actualizaci.n (bytes 1-3). El resultado es el mismo que con
LUPDATE():
#include "Fileio.ch"
//
nManejador := FOPEN("Ventas.dbf", FO_READ)
//
// Apuntar al byte 1 del fichero
FSEEK(nManejador, 1, FS_SET)
//
// Leer la fecha de la .ltima actualizaci.n
nAno := BIN2I(FREADSTR(nManejador, 1) + CHR(0))
nMes := BIN2I(FREADSTR(nManejador, 1) + CHR(0))
nDia := BIN2I(FREADSTR(nManejador, 1) + CHR(0))
//
? LTRIM(STR(nMes)), LTRIM(STR(nDia)), LTRIM(STR(nAno))
FCLOSE(nManejador)
Ficheros: La biblioteca asociada es EXTEND.LIB,
el fichero fuente es SOURCE\SAMPLE\EXAMPLEA.ASM
BIN2L()
Convierte un entero con signo de 32 bits en un valor numérico
------------------------------------------------------------------------------
Sintaxis
BIN2L(<cEntConSigno>) --> nNúmero
Argumentos
<cEntConSigno> es una cadena de carácteres en formato de entero con
signo de 32 bits (el byte menos significativo primero). La función sólo
utiliza los cuatro primeros carácteres; todos los dem.s se ignoran.
Devuelve
BIN2L() devuelve un valor numérico entero.
Descripción
BIN2L() es una función de ficheros de bajo nivel que se utiliza con
FREAD() para convertir una cadena de carácteres de cuatro bytes, en
formato de entero con signo, en datos numéricos de CA-Clipper. Es muy
.til al leer ficheros de otros productos, porque permite leer los datos
numéricos en su formato nativo.
Ejemplos
. Este ejemplo abre un fichero de base de datos utilizando
funciónes de fichero de bajo nivel y lee el número de registros
(bytes 4-7). El resultado es el mismo que con LASTREC():
#include "Fileio.ch"
//
nManejador := FOPEN("Ventas.dbf", FO_READ)
// Nota: Ventas.dbf contiene 84 registros
//
// Apuntar al byte 4
FSEEK(nManejador, 4, FS_SET)
//
// Leer el número de registros
cRegistros := SPACE(4)
FREAD(nManejador, @cRegistros, 4)
//
? LTRIM(STR(BIN2L(cRegistros))) // Resultado: 84
FCLOSE(nManejador)
Ficheros: La biblioteca asociada es EXTEND.LIB,
el fichero fuente es SOURCE\SAMPLE\EXAMPLEA.ASM
BIN2W()
Convierte un entero sin signo de 16 bits en un valor numérico
------------------------------------------------------------------------------
Sintaxis
BIN2W(<cEntSinSigno>) --> nNúmero
Argumentos
<cEntSinSigno> es una cadena de carácteres en formato de entero sin
signo de 16 bits (el byte menos significativo primero). La función sólo
utiliza los dos primeros carácteres; todos los dem.s se ignoran.
Devuelve
BIN2W() devuelve un valor numérico entero.
Descripción
BIN2W() es una función de ficheros de bajo nivel que se utiliza con
FREAD() para convertir una cadena de carácteres de dos bytes, en formato
de entero sin signo, en datos numéricos de CA-Clipper. Es muy .til al
leer un fichero binario, porque permite leer los datos en su formato
nativo.
Ejemplos
. Este ejemplo abre un fichero de base de datos utilizando
funciónes de fichero de bajo nivel y lee el número de bytes por
registro (bytes 10-11). El resultado es el mismo que con RECSIZE():
#include "Fileio.ch"
//
nManejador := FOPEN("Ventas.dbf", FO_READ)
// Nota: La longitud de un registro de Ventas.dbf es 124
//
// Apuntar al byte 10, el byte de tama.o del primer registro
FSEEK(nManejador, 10, FS_SET)
//
// Leer el tama.o de registro
cTamReg := SPACE(2)
FREAD(nManejador, @cTamReg, 2)
//
? LTRIM(STR(BIN2W(cTamReg))) // Resultado: 124
FCLOSE(nManejador)
Ficheros: La biblioteca asociada es EXTEND.LIB,
el fichero fuente es SOURCE\SAMPLE\EXAMPLEA.ASM
BOF()
Determina si se ha encontrado o no el inicio del fichero
------------------------------------------------------------------------------
Sintaxis
BOF() --> lL.mite
Devuelve
BOF() devuelve verdadero (.T.) si se ha intentado saltar antes del
primer registro l.gico de un fichero; en caso contrario, devuelve falso
(.F.). Si no hay un fichero de base de datos abierto en el .rea de
trabajo actual, BOF() devuelve falso (.F.). Si el fichero de base de
datos actual no contiene registros, BOF() devuelve verdadero (.T.).
Descripción
BOF() es una función de base de datos que sirve para comprobar una
condición de l.mite cuando el usuario desplaza el puntero de registro
por el fichero utilizando el mandato SKIP. Un ejemplo sencillo de
utilización ser.a una lista de registros en orden descendente que
tuviera un fichero de índice en orden ascendente. Un ejemplo m.s
complejo ser.a una rutina que desplazara p.ginas, en el fichero actual,
hacia delante o hacia atr.s seg.n la tecla que el usuario hubiera
pulsado. Al desplazarse hacia atr.s, es necesario utilizar BOF() para
comprobar la condición de principio de fichero antes de utilizar el
mandato SKIP para desplazar el puntero de registro y redibujar la
pantalla.
Una vez que BOF() toma el valor verdadero (.T.), mantiene este valor
hasta que se realice otro intento de desplazar el puntero de registro.
Por defecto, BOF() opera en el área de trabajo seleccionada. Para
utilizarla en un área de trabajo no seleccionada, es necesario
especificarla con una expresión de alias (consulte el ejemplo
siguiente).
El mandato SKIP es el .nico mandato de movimiento de registros que puede
hacer que BOF() tome el valor verdadero (.T.).
Ejemplos
. Este ejemplo utiliza la función BOF() intentando desplazar el
cursor antes del primer registro:
USE Ventas NEW
? RECNO(), BOF() // Resultado: 1 .F.
SKIP -1
? RECNO(), BOF() // Resultado: 1 .T.
. El ejemplo siguiente utiliza expresiónes de alias para
comprobar el valor de BOF() en .reas de trabajo no seleccionadas:
USE Ventas NEW
USE Cliente NEW
USE Facturas NEW
? Ventas->(BOF()), Cliente->(BOF())
Ficheros: La biblioteca asociada es CLIPPER.LIB.
BREAK()
Interrumpe la ejecución de una estructura BEGIN SEQUENCE...END
------------------------------------------------------------------------------
Sintaxis
BREAK(<exp>) --> NIL
Argumentos
<exp> es el valor pasado a la cláusula RECOVER, si se utiliza.
Recuerde que <exp> no es opciónal. Puede especificarse NIL si no se
especifica un valor de interrupci.n.
Devuelve
BREAK() siempre devuelve NIL.
Descripción
La función BREAK() es id.ntica en su funciónamiento a la sentencia
BREAK. Esta función debe ejecutarse dentro de una estructura SEQUENCE.
Ejemplos
. Este ejemplo ilustra una salida de SEQUENCE desde un bloque de
código:
bGuardar := ERRORBLOCK( {|x| BREAK(x)} )
BEGIN SEQUENCE
.
.
.
RECOVER USING objError
.
.
.
END
ERRORBLOCK(bGuardar)
Ficheros: La biblioteca asociada es CLIPPER.LIB.
BROWSE()*
Visualiza registros en una ventana
------------------------------------------------------------------------------
Sintaxis
BROWSE([<nSup>], [<nIzq>],
[<nInf>], [<nDer>]) --> lExito
Argumentos
<nSup>, <nIzq>, <nInf> y <nDer> definen las coordenadas
de las esquinas superior izquierda e inferior derecha de la ventana. Si
no se especifican, las coordenadas de ventana por defecto son 1, 0 y
MAXROW(), MAXCOL().
Devuelve
BROWSE() devuelve falso (.F.) si no se est. utilizando ningún fichero de
base de datos; en caso contrario devuelve verdadero (.T.).
Descripción
BROWSE() es una función de interfaz de usuario que invoca, en el .rea de
trabajo actual, un programa de uso general de visualización y edici.n de
registros en formato de tabla. Si desea una lista de las teclas de
desplazamiento utilizadas con BROWSE(), consulte la función DBEDIT().
Notas
. L.nea de estado: BROWSE() muestra una línea de estado en
la esquina superior derecha de la ventana, que puede indicar lo
siguiente:
Mensajes de la L.nea de Estado de BROWSE()
---------------------------------------------------------------------
Mensaje Significado
---------------------------------------------------------------------
<new> Modo de adici.n
<bof> Inicio de fichero
<delete> Se borra el registro actual
Registro Visualiza el número de registro
---------------------------------------------------------------------
BROWSE() posee estos tres modos:
- visualización: Este es el modo por defecto de BROWSE(). Al
pulsar cualquier tecla de desplazamiento de DBEDIT(), la zona
resaltada se desplaza a una nueva fila o columna.
- Edici.n de campos: Al pulsar Intro en cualquier campo se
inicia el modo de edici.n mediante el sistema de GET. Al pulsar
Intro de nuevo, finaliza el modo de edici.n y se guardan los
cambios realizados. La tecla Esc finaliza la edici.n sin guardar
los cambios. Como en el modo de edici.n de campos se utiliza el
sistema de GET, todas las teclas de desplazamiento y de edici.n
son las teclas que se usan en el READ.
- Adici.n: Si se va al final del fichero con Ctrl-AvP.g y se
pulsa Abajo, se inicia el modo de adici.n. Aparece el mensaje
"<new>" en la línea de estado y se inserta un nuevo registro en
blanco. Al pulsar Arriba finaliza el modo de adici.n y se guarda
el nuevo registro si se han introducido datos. Si no se han
introducido datos, no se guarda dicho registro.
. Este es un ejemplo de visualización de un fichero:
USE Fichero1 NEW
BROWSE()
Ficheros: La biblioteca asociada es EXTEND.LIB,
el fichero fuente es SOURCE\SAMPLE\BROWSE.PRG
CDOW()
Convierte un valor de fecha en un día de la semana en formato de cadena de
carácteres
------------------------------------------------------------------------------
Sintaxis
CDOW(<dExp>) --> cNombreD.a
Argumentos
<dExp> es el valor de fecha que se va a convertir.
Devuelve
CDOW() devuelve el nombre del día de la semana en forma de cadena de
carácteres. La primera letra está en mayúscula y el resto de la cadena
en minúsculas. Si el valor de fecha es nulo, CDOW() devuelve una cadena
nula ("").
Descripción
CDOW() es una función de conversión que se utiliza para dar formato a la
visualización de fechas en informes, etiquetas y pantallas.
Ejemplos
. Los ejemplos siguientes ilustran CDOW():
? DATE() // Resultado: 09/01/90
? CDOW(DATE()) // Resultado: Viernes
? CDOW(DATE() + 7) // Resultado: Viernes
? CDOW(CTOD("06/12/90")) // Resultado: Martes
Ficheros: La biblioteca asociada es CLIPPER.LIB.
CHR()
Convierte un código ASCII en un valor de tipo carácter
------------------------------------------------------------------------------
Sintaxis
CHR(<nC.digo>) --> cCar
Argumentos
<nC.digo> es un código ASCII comprendido entre 0 y 255.
Devuelve
CHR() devuelve el carácter correspondiente al código ASCII especificado
por <nC.digo>.
Descripción
CHR() es una función de conversión que convierte un código ASCII en un
carácter. Es la función inversa de ASC(). CHR() se utiliza en una serie
de tareas frecuentes, que incluyen:
. Env.o de códigos de control y carácteres gr.ficos a la
pantalla o a la impresora
. Emisi.n de se.ales ac.sticas
. Conversi.n en carácteres de los valores de retorno de INKEY()
. Llenado de la memoria intermedia del teclado
Notas
. Car.cter nulo: El carácter nulo, CHR(0), posee una
longitud de uno y se trata como cualquier otro carácter. Esto le
permite envíarlo a cualquier dispositivo o fichero, incluyendo un
fichero de base de datos.
Ejemplos
. Estos ejemplos muestran la utilización de CHR() con distintos
argumentos:
? CHR(72) // Resultado: H
? CHR(ASC("A") + 32) // Resultado: a
? CHR(7) // Resultado: suena la se.al
// ac.stica
. Las siguientes líneas de código muestran la diferencia entre
una cadena nula y el carácter nulo:
? LEN("") // Resultado: 0
? LEN(CHR(0)) // Resultado: 1
Ficheros: La biblioteca asociada es CLIPPER.LIB.
CMONTH()
Convierte un valor de fecha en un nombre de mes en formato de cadena de
carácteres
------------------------------------------------------------------------------
Sintaxis
CMONTH(<fFecha>) --> cMes
Argumentos
<fFecha> es el valor de fecha que se desea convertir.
Devuelve
CMONTH() recibe un valor de fecha y devuelve el nombre del mes, en forma
de cadena de carácteres. La primera letra está en mayúscula y el resto
en minúsculas. Si el valor de fecha es nulo, CMONTH() devuelve una
cadena nula ("").
Descripción
CMONTH() es una función de conversión que permite crear cadenas de fecha
formateadas para informes, etiquetas o pantallas.
Ejemplos
. Los ejemplos siguientes muestran la forma de utilización de
CMONTH():
? CMONTH(DATE()) // Resultado: Septiembre
? CMONTH(DATE() + 45) // Resultado: Octubre
? STR(DAY(DATE())) +;
SUBSTR(CMONTH(DATE()),1,3) // Resultado: 1 Sep
Ficheros: La biblioteca asociada es CLIPPER.LIB.
COL()
Devuelve la posición de columna del cursor en pantalla
------------------------------------------------------------------------------
Sintaxis
COL() --> nCol
Devuelve
COL() devuelve un valor numérico entero. El rango permitido para el
valor de retorno es de cero a MAXCOL().
Descripción
COL() es una función de pantalla que devuelve la posición de columna
actual del cursor. El valor de COL() cambia siempre que var.a la
posición del cursor en la pantalla. Tanto los mandatos de consola como
los de pantalla completa pueden cambiar la posición del cursor. COL()
toma autom.ticamente el valor cero al ejecutar un mandato CLEAR, CLEAR
SCREEN o CLS.
COL() se utiliza para colocar el cursor en una columna, respecto a la
columna actual. Generalmente se utiliza en combinación con ROW() y todas
las variaciones del mandato @. En particular, utilice COL() y ROW() para
crear procedimientos o funciónes independientes de la posición en
pantalla que pasen la posición superior izquierda de fila y columna como
parámetros.
Si se ha establecido SET DEVICE TO PRINTER, la salida de los mandatos
@...SAY se dirige a la impresora y se actualizan PROW() y PCOL() en vez
de ROW() y COL(). Utilice estas funciónes si desea controlar la posición
del cabezal de impresión.
Ejemplos
. El ejemplo siguiente muestra en pantalla el nombre de un
Cliente comenzando en la columna 10. El estado de cuenta del cliente
aparece, por medio de COL(), a la derecha del último carácter del
nombre del cliente:
USE Ventas NEW
CLS
@ 1, 10 SAY "Nombre Cliente: " + TRIM(Cliente)
@ ROW(), COL() + 1 SAY "Estado Cuenta: " + Estado
Ficheros: La biblioteca asociada es CLIPPER.LIB.
COLORSELECT()
Activa un atributo de la lista de atributos de color
------------------------------------------------------------------------------
Sintaxis
COLORSELECT(<níndiceColor>) --> NIL
Devuelve
Siempre devuelve NIL.
Argumentos
<níndiceColor> es un número que corresponde a la posición de orden
en la lista de atributos de color, establecida con SETCOLOR().
Descripción
COLORSELECT() activa el par de colores especificado en la lista actual
de atributos de color (establecida con SETCOLOR()). Las constantes
declaradas de <níndiceColor> se definen en COLOR.CH:
Constantes de COLOR.CH
------------------------------------------------------------------------
Constante Valor
------------------------------------------------------------------------
CLR_STANDARD 0
CLR_ENHANCED 1
CLR_BORDER 2
CLR_BACKGROUND 3
CLR_UNSELECTED 4
------------------------------------------------------------------------
COLORSELECT() no altera el valor actual de SET Color.
La siguiente tabla describe el ámbito de los valores de color de
CA-Clipper seleccionables con SETCOLOR():
configuración de Color
------------------------------------------------------------------------
Valor ámbito
------------------------------------------------------------------------
Est.ndar Todosólos mandatos y funciónes mostrados en la pantalla
Resaltado Gets y zonas resaltadas de selecci.n
Borde Borde de pantalla (no utilizable en monitores EGA y VGA)
Fondo No utilizable
No resaltado Gets no seleccionados y opciónes de men. no accesibles
------------------------------------------------------------------------
Ejemplos
. Este ejemplo muestra la utilización de COLORSELECT() con las
constantes declaradas de COLOR.CH:
USE Ventas NEW
? SETCOLOR() // muestra "W/B,N/B,W/N,W/N,W/N"
// en blanco sobre azul
COLORSELECT(CLR_ENHANCED ) // se selecciona el par de
// colores de resaltado
? "Soy negro y azul" // mostrado en negro
// sobre azul
COLORSELECT(CLR_STANDARD) // restaura el color estándar
Ficheros: La biblioteca asociada es CLIPPER.LIB,
el fichero de cabecera es Color.ch.
CTOD()
Convierte una cadena de fecha en un valor de tipo fecha
------------------------------------------------------------------------------
Sintaxis
CTOD(<cFecha>) --> fFecha
Argumentos
<cFecha> es una cadena de carácteres que consiste en números que
representan el mes, d.a y a.o, separados por un carácter no numérico.
Las cifras del mes, d.a y a.o deben especificarse de acuerdo con el
formato SET DATE. Si no se especifican cifras para el siglo, .ste se
determina por las reglas de SET EPOCH.
Devuelve
CTOD() devuelve un valor de fecha. Si <cFecha> no es una fecha víaacute;lida,
CTOD() devuelve una fecha vac.a.
Descripción
CTOD() es una función de conversión de carácteres que convierte una
cadena de carácteres en una fecha. Para inicializar una fecha vac.a para
la introducci.n de la fecha, especifique <cFecha> como cadena nula (""),
SPACE(8) o " / / ".
CTOD() se utiliza siempre que necesite un valor de fecha en forma
literal. A continúa.ión se dan algunos ejemplos:
. Inicializar una variable en un valor de fecha
. Especificar una cadena de fecha en forma literal como
argumento de una cláusula RANGE de @...GET
. Especificar una cadena de fecha en forma literal para realizar
cálculos aritm.ticos con la fecha
. Comparar el resultado de una expresión de fecha con una cadena
de fecha en forma literal
. Sustituir un campo de fecha por una cadena de fecha en forma
literal
CTOD() es la función inversa de DTOC(), la cual convierte un valor de
fecha en una cadena de carácteres con el formato especificado por SET
DATE y SET CENTURY. DTOS() convierte asimismo un valor de fecha en una
cadena de carácteres con el formato aaaammdd.
Ejemplos
. Este ejemplo utiliza CTOD() para inicializar dos variables de
fecha, utilizando una como GET y la otra para la víaacute;lidaci.n RANGE:
SET CENTURY ON
dInicio := CTOD("01-26-1876")
dActual := CTOD("")
@ 10, 10 SAY "Introduzca la fecha:" GET dActual ;
RANGE dInicio, DATE()
READ
. El ejemplo siguiente utiliza CTOD() para crear un valor de
fecha dentro de una condición FOR:
USE Inventario NEW
REPLACE ALL Inventario->Precio WITH ;
Inventario->Precio * 1.1 FOR ;
Inventario->FechaInv < CTOD("10/10/90")
Ficheros: La biblioteca asociada es CLIPPER.LIB.
CURDIR()
Devuelve el directorio DOS actual
------------------------------------------------------------------------------
Sintaxis
CURDIR([<cEspecUnidad>]) --> cDirectorio
Argumentos
<cEspecUnidad> especifica la letra de la unidad de disco que se
requiere. Si no se especifica, la unidad por defecto es la unidad DOS
actual.
Devuelve
CURDIR() devuelve el directorio DOS actual de la unidad especificada por
<cEspecUnidad>, como cadena de carácteres sin carácteres de barra
invertida (\) iniciales o finales.
Si se produce un error o si el directorio actual de la unidad
especificada es el directorio ra.z, CURDIR() devuelve una cadena nula
("").
Descripción
CURDIR() es una función de entorno que le proporciona el nombre del
directorio DOS actual, ignorando los valores de SET DEFAULT y SET PATH.
Ejemplos
. Los ejemplos siguientes muestran la forma de utilización de
los distintos resultados de CURDIR():
? CURDIR("E:") // Resultado: cadena nula:directorio ra.z
? CURDIR("C") // Resultado: CLIPPER5\SOURCE
? CURDIR("C:") // Resultado: CLIPPER5\SOURCE
? CURDIR() // Resultado: cadena nula:directorio ra.z
? CURDIR("A") // Resultado: cadena nula:la unidad no est.
// preparada
. Este ejemplo cambia el directorio DOS actual por un nuevo
valor, si no coincide con un directorio especificado:
IF CURDIR("C:") != "CLIPPER5\SOURCE"
RUN CD \CLIPPER5\SOURCE
ENDIF
Ficheros La biblioteca asociada es EXTEND.LIB,
el fichero fuente es SOURCE\SAMPLE\EXAMPLEA.ASM