El Foxpro en modo programación, es la forma como se puede almacenar un conjunto de órdenes en un archivo llamado programa, el cual posteriormente será ejecutado.
Propósito : Permite crear y editar un
programa en Foxpro (con extensión .PRG), o también cualquier
archivo de texto.
Sintaxis :
MODIFY COMMAND [D:][CAMINO]NOMBRE[.EXT]
Si la unidad y el camino no son especificados, se asumirá la unidad y camino por defecto.cuando se usa Modify Command, Foxpro busca el archivo indicado; si el archivo no existe entonces se crea uno, de lo contrario éste será editado. Cada vez que un archivo es grabado la versión previa es grabado en un archivo de seguridad con extensión .BAK. Al crear un programa, para grabarlo presionaremos las teclas [Ctrl]+[W]. Si desea salir sin grabar presionaremos la tecla [Esc].
Propósito :
Permite ejecutar un programa anteriormente creado.
Sintaxis :
DO [D:][CAMINO]NOMBRE[.EXT]
Propósito
: Permite visualizar el contenido de un archivo
programa.
Sintaxis:
TYPE[D:][CAMINO]NOMBRE[.EXT]
Preámbulo
Contiene informacion tal como: el nombre del programa, que hace,
quién lo escribió, la fecha y una breve historia sobre su edición.
Ejemplo:
*--------------------------------------------------------------------------------------*
*PROGRAMA : STOCK.PRG
*DESCRIPCION: CONTROL DE STOCK
*AUTOR : LUIS LOZADA PORTAL
*FECHA : 05 DE NOVIEMBRE DE 1998
*--------------------------------------------------------------------------------------*
Area de Seteos
Define los comandos SET que el programa necesita para trabajar
eficientemente. En esta parte se puede especificar la relaciones
entre las bases de datos, activar los archivos indexados así
como inicialización de las variables de memoria, etc.
Ejemplo:
SET STATUS off
SET HEADING off
USE personal ORDER codi
NUM=0
Cuerpo de Programa
Contiene los comandos que hacen trabajar al programa.
Ejemplo:
LOCATE FOR apel="VARGAS" DISPLAY nomb,apel,sbas
Sección de Cierre
Aquí se cierran las bases de datos y se restablecen los valores
de los comandos SET.
Ejemplo:
USE SET STATUS on
SET HEADING on
RETURN
ORDENES DE ENTORNO
Para modificar el entorno de Foxpro y ajustarlo a nuestras
necesidades, debemos usar las órdenes Sets denominadas también
Seteos.La opción por defecto está en mayúscula.
Sintaxis Propósito | |
SET STATUS on/OFF | Activa la línea de estado. |
SET HEADING on/off | Muestra el nombre de los campos cuando se usa las órdenes LIST o DISPLAY. |
SET TALK on/off | Muestra los mensajes interactivos que retornan órdenes como Replace, Index, Copy, Calculate, Locate, etc. |
SET BELL on/off | Emite un sonido cuando el cursor alcanza el final de un campo. |
SET SCOREBOARD on/off | Muestra el estado de las teclas CapsLock, Ins y Numlock en la fila cero cuando se desactiva la línea de estado. |
Definición : Son espacios de memoria que permiten almacenar datos temporalmente fuera de la estructura de la Base de Datos. Estos espacios de memoria poseen un nombre que los identifica y quedan definidos según el dato que almacenan.
CREACION DE VARIABLES
Ejemplos:
CLASE="FOXPRO" | Variable cuyo nombre es CLASE de tipo carácter y cuyo contenido es "FOXPRO". |
NUM=0 | Variable cuyo nombre es NUM de tipo numérica y cuyo contenido es 0. |
FEC={10/19/78} | Variable cuyo nombre es FEC de tipo fecha y almacena la fecha 19 de Octubre de 1978. |
VAR=.T. | Variable cuyo nombre es VAR de tipo lógico con un estado de verdad .T.. |
Propósito :
Lista las variables de memoria.
Sintaxis :
DISPLAY MEMORY [TO PRINTER]
LIST MEMORY[TO PRINTER]
Se debe evitar que el nombre de una variable sea igual al nombre de un campo o de un comando resrevado por FOXPRO.
Propósito :
Permite asignar un dato a un conjunto de variables.
Sintaxis:
STORE [DATO] TO [LISTA DE VARIABLES]
Ejemplo:
Si desea inicializar con 0 a las variables N1, N2 y N3, procederíamos
de la siguiente manera:
N1=0
N2=0
N3=0
Mejor hubiera sido inicializar simultáneamente el 0 a éstas variables, así:
STORE 0 TO N1, N2, N3
Propósito :
Permite detener la ejecución de un programa y espera el
ingreso de información proveniente del teclado.
Sintaxis :
WAIT [expresión] [WINDOW][TIMEOUT(expN)]
Donde:
expresión :
Es un mensaje ilustrativo para el usuario. Si se omite,
FOXPRO enviará el mensaje por defecto, que es:
"Press any key to continue..."
WINDOW :
Se utiliza para enviar el mensaje dentro de una ventana
de mensajes, en la esquina superior derecha.
TIMEOUT expn :
Es el tiempo en segundos que estará la orden WAIT sin
que se reciba información.
WAIT "Presione ENTER para seguir..."
el programa mostrará exactamente dicho mensaje al
momento de ejecutar dicha orden, así:
Presione ENTER para seguir...
Propósito :
Permite editar una variable o un campo en una posición
de la pantalla, permitiendo su modificación. Para activar los
GETS definidos previamente se debe hacer uso del comando READ.
Sintaxis :
@F,C[SAY "mensaje"][GET(variable|campo)][PICTURE(formato)]
Donde:
F :
Es el número de fila en le rango 0 - 24.
C :
Es el número de columna en le rango 0 - 79.
mensaje
: Es un mensaje que ayuda al
usuario a ingresar el dato desde el teclado.
variable|campo :
Variable o campo a editar.
Picture
: Permite
establecer un formato de entrada o de salida para los datos, además
de restringir el
tipo de dato que puede ser ingresado a un campo o variable de
memoria.
Formato :
Especifica un formato mediante el cual se deben ingresar los
datos. El formato puede
consistir de una función o una máscara y debe estar delimitada
por comillas.
Propósito :
Permite activar uno o más @...SAY...GET.
Sintaxis :
READ
Es la manera como se
pueden ingresar o presentar los datos en pantalla usando la orden
@...SAY...GET.
Si se utiliza PICTURE (Máscara) se llama Máscara.
Si se utiliza PICTURE (Función) se llama Función.
Máscara |
Descripción |
A N ! 9 |
|
Función |
Descripción |
A ! E Z M |
Sólo carácteres de tipo
alfabético. Convertir a mayúsculas todos los carácters alfabéticos. Formato de fecha Europeo (dd/mm/aa). Sustituye con espacios un campo con valor igual a 0 (cero) Permite la creación de una lista de opciones múltiples, las mismas que se deben separar por comas. |
Una función se usa anteponiéndole el símbolo @
Clausula COLOR en @...SAY
Sintaxis:
@F,C SAY "Expresión" COLOR
Donde:
Expresión: Puede ser una combinación de campos, variables de memoria, operadores, funciones, mensajes, etc. Si se necesita mostrar en pantalla mas de una expresión, se deberá convertir todas las expresiones a carácter y luego conctenarlas. De número a carácter usando STR( ) o de fecha a carácter usando DTOC( ) o DTOS( ). COLOR (color): Se usa para reportar los datos de una expresión con un color diferente al estándar.
COLOR |
PROPOSITO |
I U X W N W/N B BG G GR GR+ R RB * + |
Video Inverso Subrayado Vacío (usado para el ingreso de claves) Blanco Negro Video Normal Azul Cyan Verde Café Amarillo Rojo Magenta Alta intensidad |
Los Símbolos+ o * se deben utilizar después de especificar el color para la expresión, así: Color W/N+
Ejemplo:
1. @5,10 FILL TO 15,40 COLOR R
Una estructura condicional es aquella que al evaluar una condición realiza una determinada acción.
Propósito:
Un valor verdaero, si la búsqueda con SEEK tuvo éxito, en caso
contrario reporta falso.
Sintaxis:
Found ( )
Ejemplo:
Hacer un Programa que permita eliminar registros de la base de
datos "Alumnos"
USE Alumnos Order codi Cod=spac(6) @5,10 SAY "Ingrese Codigo:" GET cod PICT "@!AAAA99" read SEEK cod IF FOUND( ) *Tuvo éxito la búsqueda* Delete Pack ELSE @10,10 SAY "Codigo No Registrado" ENDIF WAIT USE ...
Propósito:
Retorna verdadero si la búsqueda. con SEEK fue exitosa, caso
contrario reportará falso.
Sintaxis:
SEEK ( )
Ejemplo:
Hacer un Programa que permita ingresar registros de la base de
datos "Alumnos"
USE Alumnos Order codi Cod=spac(6) @5,10 SAY "Ingrese Codigo:" GET cod PICT "@!AAAA99" read IF SEEK (cod) *Tuvo éxito la búsqueda* @10,10 SAY "codigo ya Existente" ELSE : Pedir todos los datos : APPEND BLANK REPLACE : ENDIF
USE ALUMNOS ORDER CODI OP="S" DO WHILE OP="S" CLEAR COD=SPAC(6) @5,10 SAY "INGRESE CODIGO:" GET COD READ IF SEEK (COD) DISPLAY ELSE @10,10 SAY "CODIGO NO REGISTRADO" ENDIF OPI=" " @20,20 SAY "DESEA CONTINUAR [S/N]:" GET OPI PICT "@M S,N" READ IF OPI="S" LOOP ELSE EXIT ENDIF ENDDO
DO CASE es una estructura condicional múltiple y excluyente, en donde sólo una de las condiciones se podrá ejecutar.
En caso de no cumplirse ninguna condición y se ha usado OTHERWISE se ejecutarán todas las órdenes comprendidas entre OTHERWISE y ENDCASE, caso contrario se ejecutará la orden que sigue a ENDCASE.
Ejemplo:
1. Para detener la ejcución de un programa se debe agregar la siguiente línea:
:
:
=inkey(0)
&& se asigna
al vacío
:
para continuar con el
programa presionar cualquier tecla.
TECLA |
CODIGO | TECLA | CODIGO |
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 INSERT HOME |
28 -1 -2 -3 -4 -5 -6 -7 -8 -9 133 134 22 1 |
DEL END PgDn PgUp ESC ENTER BACKSP TAB Barra Espac TAB |
7 6 3 18 4 19 24 5 27 13 129 9 32 15 |