Clipper
Clipper
Clipper
Es el perfecto complemeto para los gestores de bases de datos puesto que proporciona velocidad, potencia y versatilidad a las aplicaciones que gestoras bases de datos. Solo los listos(as) o listillos(as) dicen que no tiene utilidad. Es el lenguaje ideal para la comenzar a programar ya que su facil manejo y su gran variedad de erramientas no familiarizan con el mundo de la programacin.
@fil,colum,fil,colum BOX 8piezas Pinta cajas con las piezas dadas. SET COLOR TO num_letra/num_fondo @fil.colum PROMPT texto MENU TO variable_num Colocando un astersco (*) detras del numero o letra hacemos que parpadee. Con el signo mas (+) conseguimos el efecto de brillo. Especifica el color del texto y fondo Crea un men de opciones.
Para la realizacin del primer programa debemos escribir el cdigo fuente (con cualquier editor de texto) y guardarlo con un nombre (8 letras mximo) y la extensin prg. A la hora de compilar deberemos escribir CL nombre, sin poner la extensin. EJEMPLO: C:\CLIPPER5\BIN>edit nombre_programa.prg C:\CLIPPER5\BIN>cl nombre_programa EJEMPLO: SET TALK OFF SET ECHO OFF CLEAR @ 1,1 TO 24,79 DOUBLE @ 2,30 SAY "PRIMER PROGRAMA" @ 3,2 TO 3,78 @ 10,10,20,50 BOX "*" INKEY(2) @ 12,22 SAY "TEXTO" INKEY(0)
OPERADORES
Clipper define 4 tipos de operadores. Operadores aritmticos, relacionales, lgicos y el operador de asisnacin. Todos estos operadores necesitan minimo 2 operandos anque pueden unir ms. ASIGNACION (=): Con utilizar el igual (=) se realiza la asignacin. En la parte de la izquierda siempre pondremos una variable y a su derecha se pone una expresin valida, es decir, un valor, variable, funcin o expresin aritmtica o de cadenas.
ARITMTICOS: Son utilizados para realizar operaciones aritmticas sencillas, anque unindolos se puede realizar cualquier operacin matemticas. En la siguiente tabla se muestrn todos estos operadores.
DESCRIPCIN
LOGICOS Y RELACIONALES: Los operadores relacionales nos sirven para realizar comparaciones con variables. Los lgicos los utilizamos para poder unir varias condiciones. Ambos operadores solo pueden ser utilizados en las sentencias de control, fueran de ellas son intiles. OPERADOR = < > <= >= <> DESCRIPCIN Igual Menor Mayor Menor o Igual Mayor o Igual Distinto OPERADO R .AND. .OR. .NO. DESCRIPCIN Operador Y Operador O Operador NO
El nombre de las variables debe cumplir una serie de normas. La primera y ms importante es que el nombre debe ser unico para cada uno de ellas, otra es que el nombre no debe superar 12 letras, no pueden contener espacios ni signos gramaticales. La sintaxis para declarar variables es poner su nombre y asignarle un valor inicial que le indica el tipo que va a guardar SINTAXIS nombre=space(tamao) nombre=0 nombre=CTOD( nombre=space(1) Alfanumricos. Numricos. ) Fechas. Lgicos. Estos llevarn mascara logica. TIPO DE DATO
La funcin que se utiliza para pedir los datos por teclado es GET y la funcin READ, que es para asociar el valor a la variable. Con tener una sentencia READ es suficiente para todas las variables, aunque se puede asociar a cada GET un READ. La funcin adems de leer los datos realiza una pausa en el programa. La funcin GET se le puede asignar una serie de mscaras para controlar el formato, el rango, validaciones... Todas estas funciones son opcionales y no necesitamos poner todas.
GET var PICTURE mascara(s) RANGE ini,fin VALID var$(valores)
READ MASCARA 9 # A ! . ; @A @!A Y @B @Snum DESCRIPCIN En esa posicin un digito. Digitos, signo, espacios. Letras solamente. Letras Mayusculas. Posicion decimal. Separador de los miles. Solo letras en toda la extensin. Letras en mayuscula en toda la extensin Valores lgicos como Y o N Justifica los nmeros a la izquierda. Scroll de las letras que indica el valor numrico.
La mscara RANGE en caso de ser para fechas sofre una modificacin en su sintaxis, esta debe ser como sigue. El resto de parmetros no tienen incidencias sobre su formato de entrada y salida. RANGE CTOD(fecha_inicio), CTOD(fecha_fin)
EJEMPLO:
SET TALK OFF SET ECHO OFF NUMERO=0 CADENA=SPACE(10) LOGICO=SPACE(1) FECHA=CTOD(" - CLEAR @ 5,5 SAY "CADENA: @ 6,5 SAY "NUMERO: @ 7,5 SAY "LOGICO: @ 8,5 SAY "FECHA: READ CLEAR @ 5,5 SAY CADENA @ 6,5 SAY NUMERO @ 7,5 SAY LOGICO @ 8,5 SAY FECHA INKEY(0)
") " " " " GET GET GET GET CADENA PICTURE @!A NUMERO PICTURE 999.99 LOGICO PICTURE "Y" FECHA
SENTENCIAS DE CONTROL
Es el modo que tiene un lenguaje de programacin de provocar que el flujo de la aplicacin avence y se ramifique en funcin de los datos que tengan las variables que se usen en el programa. Existe 2 tipos de sentencias de control, de seleccin e iteracin. IF . . ELSE . . ENDIF La ejecucin atraviesa un conjunto de estados bolean que determinan la ejecucin de distintos fragmentos de cdigo. La clausula else es opcional, las condiciones pueden ser ms de una, existe la posibilidad de anidarlos, es decir, poner uno dentro de otro. IF(expresion(es)_boleana(s)) . . sentencias . . ENDIF IF(expresion(es)_boleana(s)) sentencias . . ELSE sentencias . . ENDIF
DO CASE . .CASE . .ENDCASE Realiza distintas operaciones en base al valor de una nica variable o expresin. Es una sentencia muy similar a if-else, pero esta es mucho ms cmoda y fcil de usar cuando la ramificacin es ms amplia de 3 caminos. DO CASE CASE variable=valor1 Sentecia . . CASE variable=valor1 Sentecia . . CASE variable=valor1 Sentecia . . CASE variable=valor1 Sentecia . . [OTHERWISE] Sentencia . . ENDCASE El valor de la expresin se compara con cada uno de los literales de la sentencia case si coincide alguno se ejecuta el cdigo que le sigue, si ninguno coincide se realiza la sentencia otherwise (opcional), si no hay sentencia otherwise no se ejecuta nada. DO WHILE . .ENDDO Ejecuta repetidamente el mismo bloque de cdigo hasta que se cumpla una condicin de terminacin. Hay cuatro partes en cualquier bucle. Inicializacin, cuerpo, iteracin y condicin.
inicializacion DO WHILE cond1 operador cond2 operador condN sentencia iteracion . . ENDDO
Realiza las mismas operaciones que en los casos anteriores pero la sintaxis es una forma compacta. Se utiliza para la inicializacin de tablas. La clusula step es opcional.
La sentencia exit se puede utilizar en ambos bucles, fuerza la salida del bucle donde se encuentra, sin tener en cuenta las sentencias que quedan por ejecutar dentro del bucle. Esta sentencia no puede ser utilizada fuera de los bucles. EJEMPLO 1: Se pide una edad por teclado y hay que determinar si es un NIO, un JOVEN o un ADULTO. Sabiendo que los nios son hasta 10 aos, el joven de 11 a 64 y el adulto a partir de 65 aos. SET TALK OFF SET ECHO OFF EDAD=0 CLEAR @5,5 SAY "Tu edad: " GET EDAD READ IF EDAD<=10 @10,5 SAY "NIO" ELSE IF EDAD>=65 @10,5 SAY "ADULTO" ELSE @10,5 SAY "JOVEN" ENDIF ENDIF INKEY(0)
EJEMPLO 2: Introduciendo un nmero por teclado deberemos indicar mediante una cadena de texto el valor que se puso como numero. El rango de valores debe estar comprendido entre 1 y 5. SET TALK OFF SET ECHO OFF NUMERO=0 CLEAR @5,5 SAY "Introduce valor: " GET NUMERO RANGE 1,5 READ DO CASE CASE NUMERO=1 @10,5 say "es CASE NUMERO=2 @10,5 say "es CASE NUMERO=3 @10,5 say "es CASE NUMERO=4 @10,5 say "es CASE NUMERO=5 @10,5 say "es ENDCASE INKEY(0)
EJEMPLO 3: Mostrar todos los numeros comprendidos entre el 1 y el cien. Cada uno de los numeros debe mostrarse fila. Realizando ademas una pausa cada vez que se llene la pantalla de numeros. SET TALK OFF SET ECHO OFF CONTADOR=0 FILA=0 CLEAR FOR CONTADOR=1 TO 100 FILA=FILA+1 @FILA,5 SAY CONTADOR IF FILA=23 @24,5 SAY "Pulse teccla para seguir" INKEY(0) FILA=0 CLEAR ENDIF NEXT CONTADOR INKEY(0)
EJEMPLO 4: Realizar la suma de los valores que se vallan escribiendo por teclado mientras que el valor sea distinto de cero. SET TALK OFF SET ECHO OFF VALOR=1 TOTAL=0 CLEAR DO WHILE VALOR<>0 VALOR=0 @5,5 SAY "Valor a sumar: " GET VALOR READ TOTAL=TOTAL+VALOR @7,5 SAY TOTAL ENDDO INKEY(0) EJEMPLO 5: Obligar al usuario a introducir un valor negativo. Si el nmero no es negativo se debe volver a pedir. SET TALK OFF SET ECHO OFF DATO=0 CLEAR DO WHILE DATO<=0 DATO=0 @5,5 SAY "Dato: " GET DATO READ ENDDO @6,5 SAY DATO INKEY(0)
TABLAS
Es una coleccin de variables del mismo tipo que se referencian por un nombre comn (el de la tabla). Con las tablas se tiene que trabajar con un solo elemento. NO podemos utilizarla a bloque. La manera de usar un elemento mediante el ndice de la tabla. Como cualquier variable tendremos que declararla, inicializarla y utilizarla. La declaracin de una tabla es como sigue: DECLARE nombre_tabla[n elementos]
Para inicializar la tabla o utilizar los elementos de su interior tendremos que ir uno a uno. Este proceso puede ser utomatizado siempre que se pueda con un bucle de tipo FOR, si no es posible tendremos que ir uno a uno segn interese. Para asignar valores a las tablas no podemos utilizar GET directamente, tendremos que utilizar una variable intermedia para asignar su valor.Su sintaxis pueden ser: nombre_tabla[indice]=valor FOR indice=1 TO N nombre_tabla[indice]=valor NEXT indice FOR indice=1 TO N @fila,col say Dato: get variable read nombre_tabla[indice]=variable NEXT indice EJEMPLO 1: SET TALK OFF SET ECHO OFF DECLARE TABLA[5] INDICE=0 CLEAR TABLA[1]=1 &&INICIALIZAMOS UN ELEMENTO
FOR INDICE=2 TO 5 &&INICIALIZAMOS TODO EL ARRAY TABLA[INDICE]=INDICE NEXT INDICE FOR INDICE=1 TO 5 &&AHORA LO MOSTRAMOS COMPLETO @INDICE,5 SAY TABLA[INDICE] NEXT INDICE INKEY(0)
EJEMPLO 2: SET TALK OFF SET ECHO OFF DECLARE TABLA[5] INDICE=0 DATO=0 CLEAR FOR INDICE=1 TO 5 @1,1 SAY "VALOR:" GET DATO READ TABLA[INDICE]=DATO DATO=0 NEXT INDICE CLEAR FOR INDICE=1 TO 5 @INDICE,5 SAY TABLA[INDICE] NEXT INDICE INKEY(0)
OPERACIONES CON TABLAS La biblioteca estandart de Clipper tiene un variado conjunto de funciones para realizar operaciones con las tablas. Todas estas funciones estan ya implementadas y solo tenemos que realizar la llamada con los parmetros que corresponda.
DESCRIPCIN Borra elemento. Inserta y borra el ltimo. Busca elemento. Ordena la tabla.
ASORT(nomb_tabla,[inicio,fin])
EJEMPLO:
SET TALK OFF SET ECHO OFF DECLARE VALOR[5] INDICE=0 DATO=0 CLEAR FOR INDICE=1 TO 5 @5,5 SAY "VALORES: " GET DATO READ VALOR[INDICE]=DATO DATO=0 NEXT INDICE ASORT(VALOR) CLEAR FOR INDICE=1 TO 5 @INDICE,5 SAY VALOR[INDICE] NEXT INDICE INKEY(0)
Llamada a funcin.
Desarrollo de funcin.
DESCRIPCIN
DO nomb_procedimiento with[par1,par2,parN] Llamada al procedimiento. PROCEDURE nomb_procedimiento [parameters par1,par2,parN] . . . RETURN EJEMPLO: SET TALK OFF SET ECHO OFF OPCION=0 TOTAL=0 NUM1=0 NUM2=0 DO PINTA_CUADRO @11,30 PROMPT " SUMAR " @12,30 PROMPT " RESTA " @14,30 PROMPT " SALIR " MENU TO OPCION DO PINTA_CUADRO @11,30 SAY "NUMERO: " GET NUM1 @12,30 SAY "NUMERO: " GET NUM2 READ DO CASE CASE OPCION=1 SUMA(NUM1,NUM2) CASE OPCION=2
Desarrollo procedimiento.
(sigue)
RESTA(NUM1,NUM2) ENDCASE DO PINTA_CUADRO @12,30 SAY TOTAL INKEY(0) PROCEDURE PINTA_CUADRO CLEAR @1,1 TO 24,79 DOUBLE @3,2 TO 3,78 @2,30 SAY "C A L C U L A D O R A" RETURN FUNCTION SUMA(N1,N2) TOTAL=N1+N2 RETURN TOTAL FUNCTION RESTA(N1,N2) TOTAL=N1-N2 RETURN TOTAL
FUNCIONES MATEMTICAS
Las funciones matemticas las utilizaremos para realizar algunas operaciones matemticas complejas sin necesidad de implementar funciones demasiado largas y dificiles. Lo unico que debemos cumplir es su sintaxis sin ninguna variacin.
SINTAXIS ABS(num) ASC(carcter) LOG(num) MAX(num1,num2) MIN(num1,num2) MOD(num1,num2) ROUND(num,decimales) SQRT(num) STR(num)
DESCRIPCIN Devuelve el valor absoluto de un nmero. Devuelve el nmero ASCII del carcter. Devuelve el logaritmo de num. Num mayor a cero. Devuelve el nmero mayor de los dos. Devuelve el nmero menor de los dos. Devuelve el resto de una divisin.dividendo,divisor. Devuelve el nmero con los decimales indicados. Devuelve la raz cuadrada. Num debe ser positivo. Devuelve el nmero como una cadena.
EJEMPLO: SET TALK OFF SET ECHO OFF NUM1=0 NUM2=0 LETRA=SPACE(1) TOTAL=0 CLEAR
@ 2,5 SAY "Numero 1: " GET NUM1 PICTURE "999" RANGE 1,999
@ 3,5 SAY "Numero 2: " GET NUM2 PICTURE "#99" @ 4,5 SAY "Letra: " GET LETRA PICTURE "A" READ CLEAR @ 2,5 SAY "Logaritmo Numero 1 "+STR(LOG(NUM1)) @ 3,5 SAY "Absoluto Numero 2 "+STR(ABS(NUM2)) @ 4,5 SAY "ASCII de letra "+STR(ASC(LETRA)) TOTAL=SQRT(ABS(NUM2)) @ 5,5 SAY "Raiz Numero 2(positivo) "+STR(TOTAL) @ 6,5 SAY "Maximo "+STR(MAX(NUM1,NUM2)) @ 7,5 SAY "Minimo "+STR(MIN(NUM1,NUM2)) @ 8,5 SAY "Redondeo de la raiz +STR(ROUND(TOTAL,0))
FUNCIONES DE CADENA
Este tipo de funciones van asociadas al trabajo con cadenas como al de caracteres, son utilizadas para realizar comprobacin o para el formateo de salida. Ocurre exactamente lo mismo que con las matemticas, debemos tener en cuenta lo que retornan y respetar la sintaxis.
SINTAXIS ALLTRIM(cadena) AT(caracter,cadena) CHR(num) ISALPHA(caracter) ISLOWER(caracter) ISUPPER(caracter) LEFT(cadena,num) RIGHT(cadena,num) LEN(cadena) LOWER(cadena) UPPER(cadena) LTRIM(cadena) RTRIM(cadena) REPLICATE(caracter,num)
STRZERO(num,long,cadena,decimal)
DESCRIPCIN Elimina espacios por la izqda y derecha. Indica posicin del carcter en la cadena. Da el caracter ASCII del numero. True si es letra, False si es nmero. True si es minscula. True si es mayscula. Extrae n caracteres por la izq de cadena. Extrae n caracteres por la drch de cadena. Devuelve la longitud de la cadena. Convierte la cadena a minscula. Convierte la cadena e mayscula. Elimina espacios por la izquierda. Elimina espacios por la derecha. Duplica el caracter num veces. Pasa a cadena y rellena con 0 los espacios Extrae n caracteres de la cadena. Transforma cadenas numericas a numeros
SUBSTR(cadena,inicio,tamao) VAL(cadena)
EJEMPLO: SET TALK OFF SET ECHO OFF CADENA1=SPACE(20) CADENA2=SPACE(10) LETRA=SPACE(1)
TOTAL=0 CLEAR @ 5,5 SAY "Cadena: " GET CADENA1 @ 6,5 SAY "Cadena de Numeros " GET CADENA2 @ 7,5 SAY "Letra: " GET LETRA PICTURE "X" READ CLEAR @ @ @ @ @ @ 5,5 SAY "Longitud: " +STR(LEN(CADENA1)) 6,5 SAY "4 letras por izquierda: " +LEFT(CADENA1,4) 7,5 SAY "4 letras de la derecha:" +RIGHT(CADENA1,4) 8,5 SAY "4 letras cualquiera:" +SUBSTR(CADENA1,4,4) 9,5 SAY "Cambio a mayusculas: " +UPPER(CADENA1) 10,5 SAY "Cambio a minusculas: " +LOWER(CADENA1)
TOTAL=10+VAL(CADENA2) @ 11,5 SAY "El total es "+LTRIM(STR(TOTAL)) @ 12,5 SAY "La letra de total es "+CHR(TOTAL) IF ISALPHA(LETRA)=.T. @ 13,5 SAY "Letra es una letra" ELSE @ 13,5 SAY "Letra es un nuemero" ENDIF @ 14,5 SAY "Letra en Cadena :"+STR(AT(LETRA,CADENA1)) @ 15,5 SAY "Fuera 4 letras:"+STUFF(CADENA1,1,4," ") @ 16,5 SAY "Total: "+STRZERO(TOTAL,5,CADENA1,0) INKEY(0)
SINTAXIS DATE() TIME() AMPM(hora) CDOW(fecha) CMONTH(fecha) DAY(fecha) DAYS(num segundos) DTOC(fecha) MONTH(fecha) SECS(hora) YEAR(fecha)
DESCRIPCIN Devuelve la fecha del sistema. Devuelve la hora del sistema. Pone tras la hora AM o PM. Devuelve el da de la semana. Devuelve el nombre del mes. Devuelve el nmero de da del mes. Devuelve los segundos transformados en dias. Pasa de fecha a cadena. Devuelve el nmero de mes. Devuelve los segundos de una hora. Devuelve el ao de una fecha.
EJEMPLO: SET SET SET SET TALK OFF ECHO OFF DATE ITALIAN CENTURY ON ")
FECHA=CTOD(" CLEAR
@ 5,5 SAY DATE() @ 6,5 SAY "Hora: "+AMPM(TIME()) @ 7,5 SAY +CDOW(DATE()) @ 7,15 SAY +DAY(DATE()) @ 7,20 SAY " de " +CMONTH(DATE()) @ 7,35 SAY " de " +STR(YEAR(DATE())) INKEY(0) FUNCIONES DE TECLADO Son utilizadas para simular la pulsacin de alguna tecla o controlar la teclas que se pulsan en tiempo de ejecucin. Otra utilidad es asociar la pulsacin de una tecla a un procedimiento.
DESCRIPCIN Guarda el num tecla pulsada. No se ve ni hay echo. Guarda el valor numrico de la tecla pulsada.
EJEMPLO: SET TALK OFF SET ECHO OFF DECLARE C[5] INDICE=0 CANCELA=0 CLEAR @ 1,1 SAY "CLAVE: " FOR INDICE=1 TO 5 C[INDICE]=INKEY(0) IF LASTKEY()=27 CANCELA=1 EXIT ENDIF @1,INDICE+7 SAY "*" NEXT INDICE IF CANCELA=0 FOR INDICE=1 TO 5 @ 2,INDICE+7 SAY CHR(C[INDICE]) NEXT INDICE INKEY(0) ENDIF
Los valores ms interesantes de teclado son los de aquellas letras que realizan alguna operacin en especial, como por ejemplo borrar letra, intro, etc... En la siguiente tabla se muestran las ms importantes. VALOR TECLA Escape.
27
28 -9 8 13 32 19 4 5 24 22
F1. F10. Borrado (retroceso). Intro. Espacio. Cursor Izquierdo. Cursor Derecho. Cursor Arriba. Cursor Abajo Insert.
SINTAXIS
DESCRIPCIN
COPY FILE fichero1 to fichero2 Copia un fichero en otro. RENAME fichero1 to fichero2 ERASE fichero TYPE fichero RUN orden MS-DOS SET DEFAULT TO unidad: EJEMPLO: SET TALK OFF SET ECHO OFF CLEAR TYPE venta.prg INKEY(0) Cambia el nombre de fichero Borra el fichero Muestra el contenido de un fichero. Ejecuta una orden de MS-DOS Cambia a la unidad especificada.
ERASE pan.obj RENAME pan.prg TO pan1.prg RUN DIR *.prg INKEY(0) COPY FILE pan.exe TO pan1.exe
VENTANAS Clipper ofrece la posibilidad de trabajar con la pantalla o parte de ella a travs de funciones destinadas a salvar la informacin que se muestra en ellas. Las operaciones o pasos a realizar son siempre iguales. Primero debemos guardar la pantalla y seguidamente deberemos restaurarla.
DESCRIPCIN Guarda todo, incluidos los get. Recupera lo guardado por save. Guarda parte de la pantalla. Guarda parte de la pantalla. Recupera la pantalla guardada. Borra parte de la pantalla.
EJEMPLO: SET TALK OFF SET ECHO OFF CLEAR PANTALLA=0 PANTALLA1=0
PANTALLA2=0 VALOR1=0 VALOR2=0 VALOR3=0 @1,1 TO 24,79 DOUBLE @10,30 SAY "VALOR 1: " GET VALOR1 @11,30 SAY "VALOR 2: " GET VALOR2 @12,30 SAY "VALOR 3: " GET VALOR3 READ SAVE SCREEN TO PANTALLA STORE SAVESCREEN(1,1,11,79) TO PANTALLA1 PANTALLA2=SAVESCREEN(12,1,24,79) CLEAR @12,30 SAY "Pulsa tecla" INKEY(0) CLEAR RESTORE SCREEN FROM PANTALLA INKEY(0) CLEAR RESTSCREEN (1,1,11,79,PANTALLA1) INKEY(0) CLEAR RESTSCREEN (12,1,24,79,PANTALLA2) INKEY(0)
FUNCIONES DE IMPRESION
Todas estas funciones trabajar para configurar la impresin de resultados de una aplicacin. No depende de la impresora ni de la mquina, es decir, que no debe importarnos que la impresora sea laser o matricial. SINTAXIS DESCRIPCIN
SET CONSOLE OFF | ON SET DEVICE TO PRINTER SET PRINTER TO fichero ISPRINTER() EJET SETPRC(fila,columna) PROW() PCOL()
EJEMPLO:
Desactiva / Activa la salida por pantalla. Desvia la salida a impresora. Envia la impresin a un fichero. Comprueba que la impresora esta lista. Fuerza el salto de pgina. Desplaza el cabezal a una fila y columna. Devuelve la fila donde esta el cabezal. Devuelve la columna donde esta el cabezal
SET TALK OFF SET ECHO OFF IMPE=SPACE(1) CLEAR READ IF IMPRE="S" DO WHILE .T. IF ISPRINTER() SET CONSOLE OFF SET DEVICE TO PRINT SETPRC(10,5) TYPE MSDO.PRG EJECT SET DEVICE TO SCREEN SET CONSOLE ON ELSE @ 24,58 SAY "Impresora NO preparada" INKEY(0) ENDIF EXIT ENDDO
ENDIF
@ 5,5 SAY "Imprimir fichero (S/N): " @ 5,40 SAY GET IMPRE VALID IMPRE $("SsNn")
A la hora de la impresin se puede configurar el tipo de letra con el que se va a imprimir el texto. La funcin es CHR que la hemos visto ya. Lo nico que debemos asignarle un valor numrico y una constante que sirve para especificar el tipo de letra. SAY CHR(num)+ constante CONSTANT E
VALOR
DESCRIPCON
15 27 27 27 27 27 27
--G 4 E M W1 P
BASES DE DATOS
En una base de datos se encuentra un conjunto de informacin organizada, de forma que sta pueda ser recuperada rpidamente. Clipper proporciona la velocidad facilidad que los gestores no pueden alcanzar. No hace falta tener conocimientos profundos del gestor de base de datos puesto que a travs de Clipper se realizan todas las operaciones, el gestor solo ser utilizado para crear el esqueleto de la base de datos. El primer paso para trabajar con bases de datos es activar las bases con las que vamos a trabajar y los indices si son necesarios. Logicamente el esqueleto lo debemos tener creado, podemos utilizar la aplicacin DBU. CREAR INDICES PARA CLIPER: USE nombre_tabla
INDEX ON campo_clave [+ campo_clave2] TO nombre_indice
ACTIVAR BASE DE DATOS: SELECT num USE nombre_base USE nombre_base INDEX ind1,ind2,indN
SET ORDER TO num Las aplicaciones que trabajen con bases de datos no todo el cdigo debe estar junto, es posible por tener por un lado la creacin de los indices, por otro la activacin de las bases de datos y en otro distinto las operaciones que realizamos.Una vez activa la base y los indices lo nico que nos queda es trabajar con las funciones para realizar las operaciones con la base de datos. Estas funciones siguen cumpliendo la filosofia de las anteriormemte descritas. FUNCIONES RELACIONADAS
SINTAXIS
DESCRIPCIN
True si esta la base activa. True si ha llegado al principio de la base. True si ha llegado al final de la base de datos. Indica el nmero de registro donde estamos. Cuenta los registros de la base en pantalla. Muestra el nmero del ltimo registro. Devuelve el nmero de campos que tiene la base. Vuelve a indexar la base de datos. Indica el nmero del ndice activo.
INDEXKEY(num) Devuelve nombre de indice con ese valor. 0 el activo. EMPTY(var) UPDATE() Ve si tiene informacin. num con 0 da True cadena con espacios True logica con F da True
OPERACIONES CON REGISTROS SINTAXIS GO TOP GO num GO BUTTOM DELETE RECORD(num) RECALL ALL|num|FOR campo=val DESCRIPCIN Nos lleva al primer registro de la tabla. Nos lleva al registro indicado. Nos lleva al ltimo registro. Marca para ser borrado. Desmarca los marcados para borrar.
Borra los registros marcados. Elimina todos los registros de la base. Aade un registro en blanco y pasa la informacin de la variable. Utilizar los campos de la base como variables una vez posicionado en el registro.
FUNCIONES DE BUSQUEDA SINTAXIS LOCATE FOR campo=valor FOUND() CONTINUE LOCATE FOR CAMPO=VALOR DO WHILE FOUND() muestra dato CONTINUE ENDDO SEEK num SKIP Busca valor numerico. Found=true encontrado Salta al siguiente registro para seguir buscando. DESCRIPCIN Comienza la busqueda de cadenas de texto. True si la encuentra. Continua la busqueda iniciada por LOCATE
OPERACIONES CON BASES DE DATOS COPY TO: Copia la base de datos activa en el fichero que se indica. Util para realizar copias de seguridad en tiempo de ejecucin. Tenemos tambin la posibilidad de indicar cuales son los campos que deseamos incluir. SINTAXIS COPY TO fichero COPY TO fichero FIELDS campo1,campo2,campoN
COPY STRUCTURE: Copia unicamente la estructura de la base de datos activa en un fichero. Existe la posibilidad de indicar cuales son los campos a copiar. SINTAXIS COPY STRUCTURE TO fichero COPY STRUCTURE TO fichero FIELDS campo1,campoN
UPDATE: Actualiza un campo de una base de datos mediante un campo comn a dos bases de datos. El campo comn debe ser clave para poder realizar el proceso. SINTAXIS UPDATE ON campo_comun FROM alias ; REPLACE campo_destino WITH campo+base2->campo
JOIN WITH: Crea una tercera base de datos mediante la unin de 2. Las bases unidad no pueden tener repetidos los nombres de los campos. La extensin de la nueva base ser DBF. El alias se utiliza para indicar los campos de la base de datos que no esta activa en ese momento. SINTAXIS
JOIN WITH alias TO fichero.DBF FOR ; campo_clave=alias1->campo1 FIELDS campo1,campoN ;
FIELD: Comprueba si el fichero especificado existe. Si el fichero no existe retorna un valor False. El nombre y la ruta donde este el fichero deben ponerse entre comillas. SINTAXIS IF .NOT. FILE(unidad:\ruta\fichero)
LIST: Realiza un listado con los campos especificados. Opcionalmente se puede indicar un criterio para el listado. SINTAXIS