Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clipper Básico
Clipper Básico
OBJETIVO TERMINAL:
Al finalizar el curso el alumno estar en condiciones de elaborar programas en
Clipper que le permitan manejar archivos de datos en aplicaciones varias.
DURACIN: 16 HORAS.
CONTENIDO
- Libreras Pre-encadenadas
- Compilacin por Mdulos
- Encadenamiento con Archivos ( .LNK )
- Creacin de Archivos Overlay ( .OVL )
- Encadenamiento de Libreras Externas.
- Funcin MouseMenu()
- Funcin ChoiceMenu()
- La Clase Get()
- La Clase Tbrowse()
- La Funcin Memoedit().
- Creacin de un Editor de Texto.
- Introduccin
- Funciones y Comandos
- Limitaciones y Recomendaciones
- Creacin de Funciones para la Apertura de Archivos.
- Creacin de Funciones para el Bloqueo de Archivos y Registros.
CONCEPTOS BSICOS
1.- Dato
Del Latn data que significa hecho, entidades independientes sin evaluar. Los
datos pueden ser numricos o no numricos. Un conjunto de datos se convierten en
informacin cuando son evaluados y procesados. Para que este conjunto de datos se
procese eficientemente debe estar organizado lgicamente en archivos.
1.- Archivo
Un conjunto de registros del mismo tipo recibe el nombre de Archivo. Un
registro, a su vez es un conjunto de campos con relacin entre s, y un campo es la
unidad ms pequea a la que se puede referir un dato. La figura siguiente nos muestra
de una forma grfica lo que sera un archivo, un registro y un campo.
REGISTRO 1
CAMPO 1
DEL
CAMPO 2
DEL
REGISTRO 1
REGISTRO 1
CAMPO 1
DEL
CAMPO 2
DEL
REGISTRO 3
REGISTRO 3
REGISTRO 2
REGISTRO 3
ARCHIVO
Los datos que tienen relacin entre s se almacenan u ordenan como se dijo en
los campos de un registro, estos campos pueden ser manipulados de forma tal que el
usuario que los necesita pueda utilizarlos, guardndolos, cambindolos o borrndolos
segn sea el caso; si esto se hace con los campos es valedero decir que lo mismo se
puede hacer con los registros y por ende se hace con los archivos. Es oportuno acotar
aqu que la data debe protegerse y que por lo tanto cualquier aplicacin que se
desarrolle para manejar archivos, debe llenar como primer requisito la conservacin y
proteccin de los datos.
- Compilador Profesional.
- Un conjunto de rdenes y Funciones que permiten un mejor y ms fcil manejo de la
programacin.
- Permite programacin por capas, no existiendo por lo tanto lmite para la dimensin de
un programa.
- Permite la definicin de funciones por parte del usuario.
- Puede conectarse con rutinas externas de otros lenguajes.
PROGRAMACIN EN CLIPPER
NUMRICAS:
LGICAS
store 0 to cdigo
cdigo = 0
ciclo = .t.
TO
TIPO FECHA
Clipper dispone de la funcin CTOD() para crear e inicializar variables del tipo
fecha.
Cuando se desea inicializar mas de una variable del mismo tipo se puede
emplear cualquiera de la siguientes formas:
TIPO ARRAY
Clipper maneja los arreglos como un conjunto de datos o variables con el mismo
nombre y su declaracin es como sigue:
DECLARE VAR []
Operadores
Numricos:
---------------> Suma
---------------> Substraccin
Cadena
*
---------------> Producto
Comparacin de subcadenas.
/
----------->
---------------> Divisin
** o ^
%
---------------> Concatenacin
---------------> Exponenciacin
---------------> Modulo
Relacionales
Lgicos
>
.and.
---------------> Y
lgico
<
.or.
---------------> O
lgico
=
---------------> Igual que
lgico
.not.
---------------> NO
>=
!= o <>
---------------> Diferente
:=
=+
-=
*=
/=
- Una variable declarada como PUBLIC es visible para cualquier programa del
sistema. Son denominadas tambin GLOBALES.
- Una variable declarada como LOCAL solo existe mientras se est ejecutando
el programa en el que fue declarada. El valor se pierde al retornar al programa principal.
- Cuando una variable se declara PRIVATE, sta es visible desde todos los
programas que llame el programa en el cual fue declarada. Si una variable no es
declarada especficamente automticamente se considera de tipo PRIVATE.
if <condicin>
instruccin o instrucciones
endif
if <condicin>
instruccin o instrucciones
else
instruccin o instrucciones
endif
La condicin para efectuar la toma de decisiones debe ser una condicin lgica o
relacional, ejemplo:
if conta = 3
v=4
if conta = 3
v=4
endif
else
v = v+1
endif
if conta = .t.
v=4
v=4
endif
else
v = v+1
endif
DO CASE
CASE <variable> = <valor1>
instruccin o instrucciones
CASE <variable> = <valor2>
instruccin o instrucciones
CASE <variable> = <valorn>
instruccin o instrucciones
ENDCASE
DO WHILE <condicin>
instruccin o instrucciones
ENDDO
EDICIN DE UN PROGRAMA
Clipper trae un editor de programas llamado PE, sin embargo permite que las
aplicaciones puedan ser escritas en procesadores de texto como WordStar o el Edit del
Sistema operativo.
Clipper tiene como nica exigencia que cada orden debe estar en una lnea
diferente ya que no posee un separador de rdenes, por lo tanto al momento de
transcribir el programa debemos pulsar enter despus de cada instruccin para separarla
de la siguiente.
* Usado para una sola lnea de comentario y puede ir en cualquier parte del programa.
/* .... */ Usado cuando el comentario ocupa ms de una lnea
&& o // se emplea cuando el comentario se coloca en la misma lnea que un comando.
La orden ? es interpretada por Clipper como que debe escribir lo que est entre
comillas(si lo hay) y/o el valor de la variable, saltando a la lnea siguiente una vez
ejecutada la orden. La orden ??, se ejecuta de igual forma pero no salta a la otra lnea
sino que permanece en la misma lnea en la que acaba de escribir.
La orden @ Get funciona de forma similar solo que en lugar de escribir un valor
o mensaje, se coloca en la posicin indicada para leer un dato.
@ fila,columna GET variable
La orden PICTURE tiene como funcin dar forma al dato que se va a visualizar,
ello se logra colocando despus de orden y entre comilla cualquiera de los siguientes
modificadores:
9o#
AoN
!
Maysculas.
ejemplo:
@ 2,4 say Nombre del Usuario get Nombre picture !x
@ 2,4 say Nombre del Usuario Nombre picture !x
Transforma
los
caracteres
mostrndolos
en
Si no tiene a Clipper instalado de esa forma debe indicarle las vas de acceso,
bien sea a travs de un archivo bach o editando nuevamente el autoexec.bat y el
config.sys con las instrucciones siguientes:
PATH C:\CLIPPER5\BIN;C:\NG;%PATH%
SET INCLUDE=D:\CLIPPER5\INCLUDE
SET LIB=D:\CLIPPER5\LIB
SET OBJ=D:\CLIPPER5\OBJ
SET PLL=D:\CLIPPER5\PLL
Una vez que Clipper ha creado el archivo objeto entra a funcionar Rtlink.exe
que enlaza los archivos objetos creados por Clipper con las rutinas de librera,
construyendo finalmente con la unin de ellos un archivo ejecutable.
- Realice ahora los ejercicios del numeral 1 del anexo titulado EJERCICIOS.
- Concluido los ejercicios elabore los programas del numeral 2
MANEJO DE ARCHIVOS
CREACION DE UN ARCHIVO:
DBU arch.dbf
Si se especifica el nombre de un archivo, se mostrar una pantalla de
visualizacin BROWSE.
APERTURA DE UN ARCHIVO:
Para abrir el archivo, el comando USE se utiliza seguido del nombre del archivo
:
USE nom_arch.
Para cerrar el archivo, use el comando USE sin especificar ningn argumento.
USE
Para cerrar todas las bases de datos abiertas, use el comando:
CLOSE ALL
CLOSE DATABASES
AREAS DE TRABAJO:
EJEMPLO:
SELECT 1
USE cliente
SELECT 2
USE factura
FUNCION SELECT( ):
Retorna el nmero del rea donde el archivo dado como argumento se encuentra
abierto.
Su sintaxis es:
SELECT ( alias )
ADICION DE REGISTROS:
Despus de la inclusin del registro en blanco, los campos vacos deben llenarse
mediante el comando REPLACE, el cul sustituye el contenido de los campos
especificados por los resultados o el valor de las expresiones.
Su sintaxis es:
REPLACE campo WITH expresin [ FOR condicin ] [ WHILE
condicin ]
Con el comando APPEND FROM copia registros del archivo especificado hacia
el archivo en uso.
Su sintaxis es:
APPEND FROM nomb_arch [ FOR WHILE condicin ]
FUNCION DELETE( ) :
Retorna el valor lgico .T. si el registro actual est marcado para la eliminacin
o .F. en caso contrario.
Su sintaxis es:
DELETE( )
COMANDO SET DELETE:
Recupera los registros que haban sido marcados para eliminacin por el
comando DELETE. Este comando debe utilizarse con el comando SET DELETE OFF.
Se utiliza el comando PACK para eliminar fsicamente los registros que fueron
marcados con el comando DELETE. Despus que se ejecuta ste comando, no ser
posible recuperar los registros eliminados.
Su sintaxis es:
PACK
COMANDO LOCATE:
COMANDO CONTINUE:
Su sintaxis es:
CONTINUE
El comando que genera un ndice es el INDEX ON. Para crear cualquier archivo
ndice, debe estar abierto el archivo .DBF.
Su sintaxis es:
INDEX ON clave TO nomb_arch
Abre el ndice que est relacionado con el archivo en uso. Pueden abrirse hasta
15 ndices simultneamente.
Su sintaxis es:
SET INDEX TO ndices
Si se utiliza este comando sin especificar ningn ndice, todos los ndices
abiertos en el rea actual quedan cerrados.
Los comandos que ejecutan sta bsqueda son FIND y SEEK. Estos comandos
funcionan si existe un ndice abierto.
El comando SEEK busca por el primer registro del archivo indexado que est
en uso o que posea la clave suministrada.
Al usar el comando SEEK con una clave alfanumrica, sta puede ser colocada o
no entre comillas. El comando SEEK evala una expresin y busca su resultado, lo que
permite la composicin de claves basadas en ms de un campo.
Su sintaxis es:
SEEK clave
EJERCICIOS
1.- A continuacin encontrar un grupo de programas, edite con PE, salve, compile y
pruebe cada uno de ellos segn lo expuesto anteriormente.
read
@ 05,02 say "hola "+ nombre
@ 06,02 say "tienes "
@ 06,10 say edad
@ 06,20 say " aos"
return
d.-*programa cuarto
#define recuadro chr(213)+chr(205)+chr(184)+chr(179)+;
chr(190)+chr(205)+chr(212)+chr(179)+chr(32)
/* usamos define para declarar la variable recuadro la cual va acompaada de 9 valores,
correspondientes al caracter ascii que da forma a la caja que se usara */
clea
store 0 to edad
store spac(25) to nombre
/* vamos a utilizar ahora las sentencias de decisin */
@ 01,01 to 24,79 double // dibuja un marco en la pantalla
@ 03,03,07,77 box recuadro
@ 04,18 say "instituto universitario de tecnologa"
@ 05,25 say "curso de clipper bsico"
@ 06,29 say "Fundainformatica"
@ 10,08 say "entre su nombre " get nombre pict "@!"
/* la funcin VALID permite validar la entrada, se usa acompaando al get */
@ 11,08 say "entre su edad " get edad pict "##" valid(edad>0)
read
@ 13,08 say "hola " + nombre
if (edad<11)
@ 14,08 say "eres un nio "
endif
if edad>11
if edad<17
@ 14,08 say "eres un adolescente "
else
if edad<= 30
@ 14,08 say "eres un joven"
endif
if edad<= 50
@ 14,08 say "eres adulto"
else
@ 14,08 say "estas cruzando la esquina"
endif
endif
endif
wait"" $$ hace una pausa hasta que se pulse una tecla
return
@ 11,58 say "entre su edad " get edad pict "##" valid(edad>0)
read
@ 13,08 say "hola " + nombre
if (edad<11)
@ 14,08 say "eres un nio "
endif
if edad>11
if edad<17
@ 14,08 say "eres un adolescente "
else
if edad<= 30
@ 14,08 say "eres un joven"
endif
if edad<= 50
@ 14,08 say "eres adulto"
else
@ 14,08 say "estas cruzando la esquina"
endif
endif
endif
conta=conta+1
enddo
wait""
clea
return
f.-*programa sexto
#define recuadro chr(213)+chr(205)+chr(184)+chr(179)+;
chr(190)+chr(205)+chr(212)+chr(179)+chr(32)
clea
store 0 to edad
store spac(25) to nombre
@ 01,01 to 24,79 double
@ 03,03,07,77 box recuadro
@ 04,18 say "instituto universitario de tecnologa"
@ 05,25 say "curso de clipper bsico"
@ 06,29 say "Fundainformatica"
do while .t.
store 0 to edad
nombre=spac(25)
@ 14,08 say "
"
@ 10,06 say "entre su nombre [/ para salir]" get nombre pict "@k"
read
if nombre $"/"
EXIT
endif
@ 11,50 say "entre su edad " get edad pict "##" valid(edad>0)
@ 13,08 say "hola " + nombre
if (edad<11)
@ 14,08 say "eres un nio "
endif
if edad>11
if edad<17
@ 14,08 say "eres un adolescente "
else
if edad<= 30
@ 14,08 say "eres un joven"
endif
if edad<= 50
@ 14,08 say "eres adulto"
else
@ 14,08 say "estas cruzando la esquina"
endif
endif
endif
enddo
wait""
clea
return
a.- Pida dos nmeros los sume y guarde su contenido en una variable temporal,
posteriormente muestre el valor de la suma. Debe usar en este ejercicio las sentencias
CLEA, GET, SAY y PICTURE, as como los comentarios para documentar el
programa.
b.- Elabore un programa que pida dos nmeros enteros y que a travs de un
men se escoja una de las cuatro operaciones bsicas o salir del programa. Para ello use
los recursos vistos hasta ahora, el men debe ser como el del ejemplo:
1.- SUMAR
2.- RESTAR
3.- MULTIPLICAR
4.- DIVIDIR
5.- SALIR
ESCOJA UNA OPCIN
MACROS
Una macro puede especificarse de dos formas: utilizando una variable o usando
una expresin que genere (devuelva) una cadena. Por lo tanto los dos principales
objetivos de una macro son: la sustitucin de un texto y la compilacin de una
expresin durante la ejecucin del programa.
Una macro se identifica con el operdor & delante del nombre de la variable que
debe ser abierta. Un caso tpico de su uso es con las rdenes use y find como se muestra
a continuacin:
* programa c09.prg
clea
use cliente
* programa c09.prg
clea
archi=spac(12)
@ 2,2 say Nombre del archivo a ser usado.... get archi
read
if .not. file(&archi)
@ 23,10 say archivo no existe
else
use &archi
endif
Sin embargo las versiones 5.0 en adelante permiten usar expresiones extendidas,
en lugar del operador &, una expresin extendida se caracteriza por estar el nombre de
la variable entre parntesis.
* programa c09.prg
clea
archi=spac(12)
@ 2,2 say Nombre del archivo a ser usado.... get archi
read
use (archi)
BLOQUE DE CODIGO
Se entiende como tal a un tipo de dato que contiene una expresin compilada
que puede ser compilada oportunamente.
Un bloque de cdigo puede estar formado por una o ms expresiones que son
evaluadas (cuando haya mas de una) de izquierda a derecha. Las expresiones deben
estar separadas por comas, de forma tal que el bloque de cdigo devuelve el resultado
de la ltima expresin.
De igual forma que una variable caracter es creada al asignarle una cadena de
caracteres, o una variable de tipo fecha es creada con CTOD(), para crear una variable
de tipo bloque de cdigo basta con asignarle a sta una expresin entre llaves como si se
tratara de una matriz, con la diferencia que en este caso inmediatamente despues de la
primera llave se debe colocar dos barras verticales, para diferenciarla de la matriz.
Ejemplos
a=Albani
b=ctod(01/01/96)
c:={\\ x>y}
Entre otras cosas un bloque de cdigo tiene como finalidad Crear rutinas
genricas, Crear opciones Alternativas en programacin, Reducir el tamao del cdigo
fuente utilizado. Es por ello que se puede afirmar que los bloques de cdigo son ms
importantes que las Funciones Definidas por el Usuario.
Un bloque de cdigo por s solo no tiene ninguna aplicacin; por lo tanto debe
ser evaluado, para ello Clipper provee de la funciones EVAL(), AEVAL(), DBEVAL().
* programa expre.prg
clea
exp=x > z
x=15; z= 10;
? &exp
** devolver .t.
*programa expre.prg
clea
x=15; z= 10;
b:={\\ x > z}
? eval(b) ** devolver .t.
Del ejemplo anterior se deduce que una macro y un bloque de cdigo son
parecidos, sin embargo la diferencia estriba en su compilacin; mientras que una macro
se compila cada vez que el programa la necesita, el bloque de cdigo lo hace una sola
vez; dems est decir que los errores de una Macro se detectan por lo tanto en tiempo de
corridad (run-time) mientras que en el bloque de cdigo se hace en tiempo de
compilacin. Los ejemplos que siguen dan muestra de lo dicho:
* programa c10.prg
* usando una Macro
exp = a >< b
? &esp
*programa c11.prg
ac:=funinc()
nada=&ac
aca:={\\modfun()}
EVAL (aca)
function modfun
@ 23,10 say se activo la funcion de modificar
inkey(3)
return nil
*programa c12.prg
ac:=funinc()
nada=&ac
aca:={\\modfun()}
EVAL (aca)
function funinc
@ 23,10 say se activo la funcion de incluir
inkey(3)
return nil
* programa c10par.prg
clea
x1:={\i,g\ i > g}
f:=20; a:=10
? EVAL(x1,f,a)
** devuelve .t.
k:= 5; m:=6
? EVAL(x1,k,m)
** devuelve .f.
Los parmetros son pasados por valor, si se desea pasar un prmetro por
referencia debe ir precedido de @. El siguiente ejemplo muestra el uso de los bloques
de cdigo. Los blques de cdigo son muy tiles a la hora de procesar matrices o
registros de una base de datos.
* PROGRAMA c11.prg
do while .t.
clea
for i = to len(menu)
@ 2,i+15 prompt menu(i,1) message menu(i,2)
next
menu to op
if op = 0
op = 3
endif
eval (menu[op,3]))
enddo
function funinc
@ 23,10 say Usted entro en la rutina de aadir
inkey(3)
return nil
function funmod
@ 23,10 say Usted entro en la rutina de modificacin
inkey(3)
return nil
function fin
@ 23,10 say Usted finaliz la aplicacin
inkey(3)
quit
return nil
Variables Son los atributos o datos que forman un objeto. Cada objeto tiene supropio
conjunto
Modelo de variables modelo, con sus valores iniciales. Las varaibles modelo que
tienen su
contenido accesible se llaman VME (Variables Modelo Exportables).
<objeto>:<VME>
Clase GET
Esta clase proporciona objetos para la edicin interactiva de campos de archivos
de datos y variables de memoria. Estos objetos proporcionan recursos para el formateo y
comprobacin de los datos(mediante los bloques de cdigo).
Un Objeto GET se asocia, en la mayora de los casos, a una variable (llamada
variable GET) que tiene su contenido modificado mediante la valoracin de un bloque
de cdigo.
El sistema GET puede dividirse en varios niveles o capas como sigue:
read
getreader
getapplykey()
getdoskey()
getprevalidate()
getpostvalidate()
El siguiente ejemplo nos muestra como trabaja el nivel Read, el cual ha sido
trabajado anteriormente pero sin las opciones color y When
* programa readcol.prg
clea
COD=spac(3);NOMBRE=spac(30); valor3:= valor2:=valor1:=0
@ 10,10 say Codigo.... get COD pict 999 color r/w,w/r
@ 12,10 say Nombre.. get NOMBRE pict @! color ,w/r
@ 14,10 say Valor1.... get valor1
@ 16,10 say Valor2.... get valor2 color w/b
@ 18,10 say Valor3.... get valor3 color w/w
read
* programa readwhen.prg
clea
COD=spac(3);NOMBRE=spac(30); valor3:= valor2:=valor1:=0
@ 10,10 say Codigo.... get COD pict 999 color r/w,w/r
when mensget (solo se pueden introducir nmeros (000 salir))
@ 12,10 say Nombre.. get NOMBRE pict @! color ,w/r
when mensget (teclee el nombre del empleado)
@ 14,10 say Valor1.... get valor1 when mensget ()
@ 16,10 say Valor2.... get valor2 color w/b
when mensget valor1>1000 .and. mensget (descuentos sobre el valor 1))
@ 18,10 say Valor3.... get valor3 color w/w
read
function mensget(texto)
@ 23,10 say spac(60)
@ 23,10 texto
return .t.
Esta opcin es muy til ya que nos permite la edicin del campo si el resultado
de la comprobacin previa, que realiza when, es verdadera, o saltar la edicin del
mismo si es falsa. Adems esta opcin permite el envo de un mensaje a la pantalla cada
vez que el campo es editado; activando when invocando una funcin que visualiza el
mensaje, o combinandola con otra expresin que evale la edicin del campo.
NIVEL READMODAL()
Un objeto GET puede ser creado de dos formas: con la orden @..GET o con la
funcin de creacin de la clase GET, que es GETNEW().
Cuando se ejecuta una aplicacin Clipper, se crea automticamente una matrz
PUBLICA llamada GETLIST, sin ningn contenido. Cada vez que una rden get es
ejecutada, se aade un elemento a la matrz.
Ejemplo explicativo:
* programa gets.prg
clea
Nombre=SanJuan
salario=0
@ 1,5 say Introduzca su Nombre.... get Nombre
@ 2,5 say Introduzca el salario.......get salario
read
El procesador traduce ester cdigo en:
Otra forma de crear objetos GET es mediante GETNEW() cuya sintaxis es:
GETNEW([<lin>,<col>],[<codeblock>],[<variable.]
[<picture>],[<atrib_color>])
Antes de aparecer las versiones 5.xx de Clipper, era una verdadera azaa anidar
varios gets con diferentes read, de forma tal que se pudieran procesar un grupo primero,
luego un segundo grupo y posteriormente regresar al primero,puesto que el segundo
read liberara al primer grupo de gets.
* programa ejemplo.prg
clea
set key -1 to calculo
cod=spac(3)
Nom=spac(20)
desc:=valor:=0
@ 1,1 say codigo....... get cod
@ 2,1 say nombre..... get nom
@ 3,1 say valor......... get valor pict @E 999,999.99;
valid if(valor=0 calculo(@valor),.t.)
@ 4,1 say descuento..get desc pict 99
read
function calculo(varia)
local GETLIST:={}, v1:= v2:= v3:= v4:= v5:=0
pantcalc:=saveScreeen(1,50,7,61)
@ 1,50 to 7,61
@ 2,51 get v1 pict @E 999,999.99
@ 2,51 get v2 pict @E 999,999.99
@ 2,51 get v3 pict @E 999,999.99
@ 2,51 get v4 pict @E 999,999.99
@ 2,51 get v5 pict @E 999,999.99
read
varia=v1+v2+v3+v4+v5
keyboard varia
LA CLASE TBROWSE
Para trabajar con el Tbrowse se utilizan dos funciones, una para datos de tableas
y otra para datos diversos: la funcin TBROWSEDB() y la funcin TBROWSENEW().
TBROWSEDB(<LinSup>,<ColSup>,<LinInf>,<ColInf>)
TBROWSENEW(<LinSup>,<ColSup>,<LinInf>,<ColInf>)
autolite
cargo
Es una variable definida por el usuario, que puede ser recuperada
posteriormente.
colcount
Contiene un nmero que indica la cantidad de columnas TBROWSE.
Cada columna Tbrowse
debe tener un objeto TBCOLUMN asociado a ella.
colorespc
cadena de
caracteres.
colpos
colsep
Contiene una cadena de caracteres que define el separador de columnas,
para aquellas
8 . - CLIPPER EN LA RED
Se puede decir que el nico requerimiento de Clipper para trabajar en una Red
de rea Local (LAN), es que sta debe respaldar la llamada de Clipper a la funcin del
DOS ya que Clipper usa Exclusivamente llamadas al DOS para todas sus operaciones
relacionadas con la Red.
CARACTERISTICAS
SET PRINTER TO
Comando que permite redirigir la impresin hacia la impresora compartida de la
red.
FLOCK()
Intenta el bloqueo del archivo en uso, si tiene xito devuelve el valor lgico
verdadero (.T.), de lo contrario devuelve falso (.F.). Cuando tiene xito se deshace
cualquier bloqueo anterior.
RLOCK()
Bloquea un registro del archivo en uso, si el intento tiene xito regresa .T. , si no
el valor regresado es .F. . Cuando el bloqueo tiene xito se deshace cualquier bloqueo
anterior.
UNLOCK
NETERR()
COMANDO
Use
NETERR()
.T.
.T.
Append Blank
.T.
CAUSA
Uso exclusivo de otro
usuario
Archivo abierto por
otro usuario
Archivo bloqueado
por otro usuario o ha
ordenado un Append
Blank
simultneamente.
NETNAME()
Recuerde que Ud. abrir los archivos en modalidad compartida, luego el fracaso
en la apertura ( use <nomarch> ) es una posibilidad real, por lo tanto es recomendable
el uso de NETERR() para detectar que la apertura de un archivo fu exitosa; a causa de
esto no se deben abrir al mismo tiempo los archivos ndices al mismo tiempo, si no que
una vez comprobada la apertura exitosa del archivo se debe colocar la orden SET
INDEX, la cual los abre en la misma modalidad en que se abri el archivo.
* programa demo
As:
APPEND FROM, COPY FILE LABEL FORM .. TO FILE, REPORT FORM ... TO
FILE, RESTORE, TYPE ... TO FILE, UP DATE Y MEMOREAD(), usan los archivos en modo
de uso compartido ( SHARED ).
ptiempo = ptiempo - 1
enddo
return (.F.)
ANEXOS
se encuentra, si no devuelve 0.
Sintaxis: ASCAN(arreglo,expresin,comienzo,cantidad)
SETCOLOR() : Permite cambiar el color del video. Entrega adems los valores actuales
de
los colores antes de cambiarlos.
Sintaxis: SETCOLOR(valores)
INKEY() : Espera cierto tiempo, en segundos, a que el usuario pulse una tecla. Si no se
le d
el argumento INKEY devuelve el control inmediatamente.
Sintaxis: INKEY(valor)
ISLOWER() : Devuelve .T. si el primer caracter de una cadena es una letra minscula.
Sintaxis:ISLOWER(cadena)
ISUPPER() : Devuelve .T. si el primer caracter de una cadena es una letra mayscula.
Sintaxis:ISUPPER(cadena)
STUFF() : Es una funcin muy verstil usada con propsitos tales como: Eliminar
caracteres de una cadena, Reemplazar caracteres de una cadena o Insertar caracteres en
la cadena.
Sintaxis: STUFF(cadena,posicininicial,longitud,cadenanueva)
http://books.google.it/books?id=vrtI4i8kA4EC&pg=PA145&lpg=PA145&dq=area+de+trabaj
o+clipper&source=bl&ots=TIvigyzTIS&sig=vmQ9UrF_kBF92NGJhlE6K4EpL8Y&hl=es&sa
=X&ei=tJUbUe7gFceR4ATr8oGwCg&redir_esc=y#v=onepage&q=area%20de%20trabajo
%20clipper&f=false