Sunteți pe pagina 1din 29

INTRODUCCIN El compilador de Clipper es uno de los ms potentes compiladores en la actualidad.

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.

PRIMERAS SENTENCIAS EN CLIPPER


Antes de pasar a realizar el primer programa en Clipper vamos a conocer una serie de sentencias necesarias para cualquier programa. Asi podremos conocer tambien el proceso de codificacin y compilacin necesario en la realizacin de nuestras futuras aplicaciones. SENTENCIA CLEAR @fil,colum SAY TEXT | variable INKEY(num) @fil,colum TO fil,colum [DOUBLE] DESCRIPCIN Borra la pantalla. Muestra texto o variables en pantalla. Realiza una pausa o parada (0). Pinta cajas y lineas simples o dobles.

@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.

VALOR 0|N 1|B 2|G 3|BG 4|R 5|RB 6|GR 7|W

COLOR Negro Azul Verde Cian Rojo Magenta Marrn Blanco

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.

SINTAXIS variable=valor variable=variable1 variable=funcin() variable=expresin

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.

OPERADOR + * / % Suma. Resta.

DESCRIPCIN

Multiplica. Divide. Resto de una divisin

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

VARIABLES Y PETICION POR TECLADO


Unidad bsica de almacenamiento, la creacin es la combinacin de un identificador y un tipo. Todas las variables deben ser declaradas antes de ser utilizadas. El lugar donde se declaran las variables es al principio del programa o al comienzo de cada una de las funciones o procedimiento.

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

FOR . .STEP . .NEXT

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.

FOR inicializacion TO valor_final[STEP valor] sentencia . . NEXT variable_inicializada

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)

uno" dos" tres" cuatro" cinco"

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.

LLAMADA ADEL(nomb_tabla,indice) AINS(nomb_tabla,indice)


ASCAN(nomb_tabla,valor_a_buscar,[inicio,fin])

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)

SUBRUTINAS (funciones y procedimientos)


Las funciones y procedimientos son los bloques constructores en Clipper, es el lugar donde se produce toda la actividad del programa. Subdividen las tareas del programa consiguiendo as trabajar con diminutas piezas del programa y NO duplicar tareas repetitivas. La diferencia entre las funciones y los procedimientos es la posibilidad que tienen las funciones de retornar un valor mientras que los procedimientos no pueden retornar nada. Otra diferencia es la sintaxis de construccin. El mecanismo de trabajo en ambos casos es realizar la llamada a la funcin o al procedimiento y el programara saltar al desarrollo, cuando realice todas las operaciones de la subrutina volver al punto donde se hizo la llamada.

FUNCIONES SINTAXIS DESCRIPCIN

nomb_funcion([par1,par2,parN]) FUNCTION nomb_funcion [parameters par1,par2,parN] . . . RETURN [valor|.T.] PROCEDIMIENTOS SINTAXIS

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.

LENNUM(cadena_numerica) Da la longitud de una cadena numrica.

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

STUFF(cadena,ini,tam,caracteres) Remplaza n caracteres de la cadena.

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)

FUNCIONES DE FECHA Y HORA


Las funciones de fecha y hora nos sirven para representar la fecha y hora completa o descompuesta en nuestras aplicaciones. Todas estas funciones sirven unicamente para mostrar informacin, mediante ellas no podemos modificar ningn valor de la mquina.

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.

ELAPTIME(fecha1,fecha2) Devuelve la diferencia entre fechas.

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.

SINTAXIS var_caracter=INKEY(0) var_num=LASTKEY()

DESCRIPCIN Guarda el num tecla pulsada. No se ve ni hay echo. Guarda el valor numrico de la tecla pulsada.

SET KEY(num)TO procedimiento Asocia una tecla a un procedimiento.

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.

FUNCIONES DEL SISTEMA


Las funciones de sistema estan destinadas a operaciones de MS-DOS sin necesidad de avandonar nuestra aplicacin y sin perder el control de la ejecucin a favor del sistema operativo. Todas estas funciones se destinan al trabajo con ficheros, por ejemplo copiar, renombrar, etc...

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.

SINTAXIS SAVE SCREEN TO nombre RESTORE SCREEN FROM nombre


STORE SAVESCREEN(fil,col,fil,col) TO nomb

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.

nombre=SAVESCREEN(fila,col,fila,col) RESTSCREEN(fila,col,fila,col,nombre) @fil,colum CLEAR TO fil,colum

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

Comprimida. Doble. Cursiva. Negrita. Letra de Pica. Expandida. Normal.

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

USED() BOF() EOF() RECNO() RECOUNT() LASTREC() FCOUNT() REINDEX() INDEXORD()

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

Indica si un campo a sido editador tras un read

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.

PACK ZAP APPEND BLANK REPLACE nombre_campo WITH var MODIFICACIONES

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

LIST campo1,campoN [ TO fichero | PRINT ]


LIST camp1,campN FOR campo=val[TO fichero|PRINT]

S-ar putea să vă placă și