Está en la página 1de 85

Programacin

Avanzada
II
Programacin Avanzada II
ndice
1.-Qu es Base de Datos? 4
1.1Modelo de Datos (Diagrama Entidad-Relacin). 5
-Reglas de interrelacin de tablas. 6
1.2 ntroduccin al Progress 7
1.3 Archivos de Progress 8
1.4 Aplicacin del Progress (Software) 10
1.5 Creacin de una Base de Datos 10
-Creacin de Tablas 12
-Creacin de Campos 14
-Creacin de ndices 15
2.-Editor de Procedimientos 18
-Reglas de codificacin de sintaxis 18
2.1 Expresiones 19
2.2 Definiendo variables 20
2.3 Asignando valores a las variables 21
2.4 Desplegando variables 22
2.5 Funciones en progress 23
2.6 Bloques en Progress 25
2.7 SET 28
2.8 PROMPT-FOR 28
2.9 Funciones numricas y operadores 28
3.- Comandos a utilizar 32
3.1 Estatuto Find 32
3.2 Estatuto Available 33
3.3 Estatuto Queries 34
3.4 Estatuto GET 35
3.5 Estatuto Update 36
3.6 Estatuto Create 37
3.7 Estatuto Message 37
3. 3.8 Estatuto nsert 38
3.9 Estatuto Delete 38
3.10 Uso del Browse 39
3.11 Estatuto release 39
3.12 Frames 40
3.13 Estatuto 3.13 Estatuto Enable Enable 40
3.14 Manejo de errores 42
Ing. Mayra Deyanira Flores Guerrero. 2
Programacin Avanzada II
Programa de Clase
Conceptos bsicos.
Caracteres y signos de puntuacin.
Definicin bsica de variables.
Explicar aplicaciones en progress:
*Data Dictionary.
*Editor Procedure.
*Appuilder.
*!esult.
*!eport uilder.
Funcionalidad de las aplicaciones.
Desarrollo de programacin en el
editor de procedimientos.
Ing. Mayra Deyanira Flores Guerrero. "
Programacin Avanzada II
Desarrollo de programacin grafica
utilizando Appbuilder.
1 - Qu es una Base de Datos?
Es una coleccin de datos interrelacionados
almacenados en conjunto sin redundancias
perjudiciales o innecesarias, su finalidad es la de
servir a una aplicacin o ms de la mejor manera
posible.
bit byte campo registro
archivo bd
Ing. Mayra Deyanira Flores Guerrero. #
$
%
%
$
$
%
&o. tel nom &o.
Programacin Avanzada II
Objetivos Primarios de la Base
de Datos:
*Los datos podrn utilizarse de mltiples
maneras.
*Proteger la inversin intelectual.
*Bajo costo.
*Claridad.
*Facilidad de uso.
*Flexibilidad.
*Proteccin contra perdida o dao.
El objetivo primordial de una base de
datos es crear un ambiente en el que sea
posible almacenar y recuperar informacin
en forma eficiente y conveniente.
Modelo que se utiliza comnmente
para manipular una base de datos es el
llamado Sistema de Procesamiento de
Ing. Mayra Deyanira Flores Guerrero. '
Programacin Avanzada II
Archivos; que consta de un conjunto de
programas que permiten el acceso a la
base de datos, pero no optimizan los
mtodos utilizados, provocando entre otros
los siguientes problemas:
*Redundancia:
Esto se presenta cuando se repiten
innecesariamente datos en los archivos
que conforman la base de datos. Esta
redundancia aumenta los costos de
almacenamiento y acceso y adems puede
llevar a inconsistencia de los datos.
*Inconsistencia:
Ocurre cuando existe informacin
contradictoria o incongruente en la base de
datos.
*Problemas de seguridad:
Se presenta cuando no es posible
establecer claves de acceso y resguardo
Ing. Mayra Deyanira Flores Guerrero. (
Programacin Avanzada II
en forma uniforme para todo el sistema,
facilitando as el acceso a intrusos.
1.1 Modelo de datos
(Diagrama Entidad-Relai!n"
Se encarga de escribir los datos, sus
relaciones, sus limitaciones y su
semntica.
Componentes bsicos de un modelo de
datos:
*Entidad
*Atributos
*Relacin
1:1, 1:M, M:1, M:M
Ing. Mayra Deyanira Flores Guerrero. )
Programacin Avanzada II
Entidad
Es un objeto de la realidad modelada que
fcilmente puede ser identificada.
Ejemplo: Un cliente
Un empleado
Un estudiante
Atributo
Son los componentes que describen a una
entidad.
Ejemplo:
Nmero del cliente
Nombre del cliente
Domicilio del cliente
Relacin
Es la asociacin entre las entidades. La
relacin puede ser Simple o Compleja.
Simple: Es cuando existe una relacin de
uno a uno.
Ing. Mayra Deyanira Flores Guerrero. *
+liente
Programacin Avanzada II
Compleja: Es cuando existe una relacin
de 1:M, M:1, M;M.
***************REALIZAR
EJERCICI!*****************


Reglas de interrelacin de tablas:
Relacin 1:1
La llave primaria de una de las dos
tablas o entidad pasa a la siguiente tabla o
entidad.
Relacin 1:M, M:1
La llave primaria de la tabla que tiene la
relacin nmero 1 pasa como llave fornea
a la tabla de relacin de muchos.
Relacin M:M
Se formara una nueva tabla que
contenga las llaves primarias de ambas
tablas o entidades y estas formaran una
Ing. Mayra Deyanira Flores Guerrero. ,
Programacin Avanzada II
llave primaria en la nueva tabla,
separadamente sern llaves forneas.
1." Introduccin al Progress
Qu es Progress?
Un sistema administrador de base de datos
relacinales.
Introduccin a las A#licaciones de
Progress
Aplicaciones:
Data Dictionary
Procedure Editor
Data Administration
Application Compiler
Ing. Mayra Deyanira Flores Guerrero. $%
Programacin Avanzada II
Pro tools
AppBuilder
Report Builder
$ata $ictionar%
-Creacin y manipulacin de las
estructuras de la base de datos.
-Permite administrar la conexin a la base
de datos.
Procedure Editor
Es un creador de texto que permite:
-Crear el cdigo fuente.
-Checar la sintaxis.
-Compilar.
-Correr la aplicacin.
$ata Administration
Ing. Mayra Deyanira Flores Guerrero. $$
Programacin Avanzada II
&Facilita la administracin de la base de
datos.
-Provee reportes de esquema de base de
datos y servidores de datos.
-Administra la seguridad de la base de
datos definiendo niveles de acceso.
A##lication Com#iler
&Permite compilar uno o varios programas
asociados con una aplicacin en un simple
paso.
Pro tools
-Ejecuta un grupo de utileras para auxiliar
en el desarrollo y ejecucin de aplicaciones
en progress
A##'uilder
-Facilita la creacin de objetos de interfase
con el usuario.
-Genera y administra el cdigo involucrado
con la interfase desarrollada.
Ing. Mayra Deyanira Flores Guerrero. $2
Programacin Avanzada II
Re#ort 'uilder
-Es un reportador grafico para ambiente
Windows.
-Permite personalizar reportes basados en
el estilo Windows.
1.( ARC)I*! $E PR+RE!!
Puedes utiliar tres tipos de archivos:
1.- Archivos de Base de Datos.
2.- Archivos temporales de las bases
de datos.
Ing. Mayra Deyanira Flores Guerrero. $"
Programacin Avanzada II
3.- Archivos de programa.
Arc,i-os de 'ase de datos
$atabase .ile /.db0
Contiene las definiciones de las
tablas as como sus ndices adems
de los datos. Y es el principal archivo
de la base de datos, donde los datos
y sus definiciones son almacenados.
E-ent Log /.lg0
Contiene una historia de eventos
significante ocurridos a la base de
datos tales como horas de inicio de
servicio y termino de servicio.
'e.ore Image /.bi0
Ing. Mayra Deyanira Flores Guerrero. $#
Programacin Avanzada II
Contiene una copia de la base antes
de ser modificada por el usuario.
A.ter Image /.ai0
Contiene un respaldo hecho a la
base de datos. Permite la
reconstruccin de los datos.
Loc1 /.l10
Nos indica si esta bloqueada por
algn usuario.
Arc,i-os tem#orales de la
base de datos
Local be.ore image /.lbi0
Contiene el valor de algunas
variables y datos temporales.
2em#orar% /.dbi0
Ing. Mayra Deyanira Flores Guerrero. $'
Programacin Avanzada II
Contiene tablas creadas por la
seccin y que no son almacenadas
permanentemente en la base de datos.
!ort table /.srt0
Contiene tablas orientadas o
procedimientos compilados en la
seccin.
2ra# table /.tr#0
Contiene cambios hechos en el data
dictionary mientras estos no son
guardados.
Arc,i-os de Programa
Program /.#0
Contiene los procedimientos
creados por el editor.
Ing. Mayra Deyanira Flores Guerrero. $(
Programacin Avanzada II
3I 4iles /.50
Contiene los elementos de interfase
con el usuario creados en el
AppBuilder.
Include 4iles /.i0
Contiene programas que son
incluidos durante la compilacin.

1.4 Aplicacin del Progress
Pantalla Principal:
Todas las aplicaciones del Progress:
Ing. Mayra Deyanira Flores Guerrero. $)
Programacin Avanzada II
Para empezar a utilizar el Progress, se
tiene que realizar una Base de Datos:
1.6 Creacin de 'ase de $atos
1.- Creacin de una Base de Datos en
Progress:
Seleccionar desde el Desktop el
men File.
En el men File seleccionar la
opcin New.
Dentro de la opcin New se
selecciona la opcin Database.
Ing. Mayra Deyanira Flores Guerrero. $*
Programacin Avanzada II
La pantalla que aparecer es Create
Database :
Proporcione el nombre fsico de la
nueva base de datos e indique que se
crear a partir de EMPTY.
Dar OK.
Ing. Mayra Deyanira Flores Guerrero. $,
Programacin Avanzada II
Automticamente aparecer la
pantalla de conexin de base de
datos.
NOTA:
Para Conectarse a una base de
datos en Progress:
Seleccionar desde el men de File
y la opcin OPEN, despus
Database.
Se busca la base de datos
realizada por t.
Tambin para conectar la
Tecla F3.
Para $esconectarse de una
Base de Datos en Progress:
Ing. Mayra Deyanira Flores Guerrero. 2%
Programacin Avanzada II
En la Aplicacin de Data
Dictionary.
Se selecciona la opcin de
database
Despus elegir la opcin de
Disconnect.
Tambin para desconectar la
Tecla F8.
EL ME2AE!73EMA
* Es un conjunto de tablas
relacionadas, la cual nos indica la
descripcin de la estructura de una
base de datos.
* Contiene la definicin para describir
los componentes de una base de
datos, tales como tablas, campos,
ndices entre otros.
* Tambin contiene elementos y
mensajes de validacin.
* Es el corazn de la base de datos en
PROGRESS.
* Al momento de crear una base de
datos "EMPTY , se tiene toda la
Ing. Mayra Deyanira Flores Guerrero. 2$
Programacin Avanzada II
informacin bsica necesaria para
crear el esquema de una aplicacin.
$E4I8ICI98 $E 38A 'A!E $E
$A2!
Nombre de Tablas, Campos e
ndices:
Mximo de 32 caracteres de largo.
Debe de comenzar por un carcter
alfabtico (A-Z, o a-z).
Caracteres alfabticos (A-Z o
a-z).
Dgitos (0-9).
Caracteres especiales($,&,
%,-).
Es insensitivo al uso de
maysculas.
2A'LA!
Las tablas definen a las entidades
que componen el diseo de Base de
datos relacional.
Ing. Mayra Deyanira Flores Guerrero. 22
Programacin Avanzada II
*En el diccionario de datos es posible
definirle las siguientes caractersticas:
Table Name
Etiqueta
Descripcin
Nombre para "DUMP.
TRGGERS y Atributos de
traduccin.
Ing. Mayra Deyanira Flores Guerrero. 2"
Programacin Avanzada II
Validacin de borrado.
Hidden
Frozen
String Attrs.
Data server
Check CRC
overdrable
Propiedades de los archivos:
Hidden: Oculta un archivo para
evitar que sea desplegado en la lista
de archivos del diccionario de datos.
Frozen: Evita que las definiciones
de campos e ndices sean
modificadas. No incluyen los registros
de datos.
La opcin de String Attrs, se utiliza
para definir los atributos de las
etiquetas de un archivo que va a ser
traducido por el Traslation Manager.
Ing. Mayra Deyanira Flores Guerrero. 2#
Programacin Avanzada II
Validaciones: Establece una
expresin que si al ser evaluada,
resulta falsa, evita que el archivo sea
eliminado.
Triggers: Es un cdigo 4GL que se
ejecuta como resultado de un evento
de base de datos, como:
borrar y crear archivos.
Ejemplo: Trigger Procedure for Create
of articulo
******Dentro de los Triggers se
manejan las siguientes opciones:
*Check CRC: Proceso de validacin
que verifica la integridad de la base
de datos para poder ejecutar un
trigger.
*Overdrable: Permite que un trigger
sea o no modificado.
CAMP!
Ing. Mayra Deyanira Flores Guerrero. 2'
Programacin Avanzada II
Los campos son los atributos de las
tablas.
En el diccionario de datos es posible
definirles, entre otras, las siguientes caractersticas:
Crear campos:

Nombre
Tipo de dato
Formato de captura
Etiqueta
Etiqueta para desplegado
Valor inicial
Orden del campo
Descripcin
Ayuda
Mandatory
Case Sensitive
Extent
Propiedades de los campos:
Carcter:
Contiene datos alfanumricos.
nteger:
Ing. Mayra Deyanira Flores Guerrero. 2(
Programacin Avanzada II
- Acepta nmeros enteros positivos o negativos.
- Rango: -2,147,483,648 a 2,147,483,647.
Decimal:
Es un dato compuesto de dgitos, incluyendo 10 dgitos a la derecha
del punto decimal.
Logical:
Almacena valores YES/NO TRUE/FALSE.
Date:
Representa datos de fechas.
Recid :
Almacena valores de identificadores de registro.
Mandatory: ndica que el campo debe de ser capturado obligatoriamente
Case Sensitive: Es utilizado solamente para campos de tipo carcter. Si
es falso permite realizar comparaciones entre caracteres sin importar la
forma en que son escritas.

Ejemplo: Clave = clave = CLAVE
Extent: ndica que el campo es un arreglo de mltiples elementos.
Para reali:ar ;ndices:
<7u= es un ;ndice>
Es un dato elemental de un registro que se utiliza como criterio de
identificacin.
Razones para definir un ndice:
dentificacin nica
Ordenamiento de registros
Relacin con otras tablas
Rpido acceso a registros
2IP! $E ;8$ICE!
Primario:
Establece por default que el archivo ser ordenado por este campo a menos
que se especifique el ordenamiento por otro ndice.

Activo:
ndica si un ndice esta activo o no. En el caso de que se establezca un
ndice en un archivo muy largo es ms eficiente definirlo como inactivo y
solamente activarlo cuando sea necesario.
nico:
Ing. Mayra Deyanira Flores Guerrero. 2)
Programacin Avanzada II
ndica que el contenido del ndice debe de ser diferente.
Ej. R.F.C., Matricula, Curp, etc.
Word index:
Permite accesar bsquedas por palabras o por frases sobre el campo.

Abbreviated:
Permite que el registro sea accesado utilizando los primeros caracteres del
Campo. Se utiliza solamente en campos de tipo carcter.
!"u# es el Administrador de $ase de %atos&
Es una herramienta creada por PROGRESS que auxilia al usuario en la
administracin de la base de datos.
Principales funciones:
Dump y Load de datos.
Exportar e mportar datos.
Seguridad en base de datos.
PROCESO DUMP
Genera archivos que pueden contener definiciones, datos de los archivos de la
base de datos.
Principales opciones:
Data definition : genera un archivo(.df), contiene el esquema.
Table contents: genera un archivo (.d), contiene datos.
PROCESO LOAD
Ing. Mayra Deyanira Flores Guerrero. 2*
Programacin Avanzada II
Reconstruye una base de datos archivos Dump previamente generados.
Principales opciones:
Data definition: Reconstruye un archivo basado en el esquema
almacenado en el archivo (.df).
Table contents: Genera los datos de un archivo basado en los datos
almacenados en el archivo (.d).
Ing. Mayra Deyanira Flores Guerrero. 2,
Programacin Avanzada II
2.-Programacin por bloques
'bjetivo:
-Conocer el manejo del procedure
editor
-Conocer las caractersticas del manejo
de Progress
-Conocer los principales elementos
para el desarrollo de programas
-Conocer los principales bloques que
presenta progress.
Re(las de codi)icacin * Sintaxis:
Todos los comandos de progress
deben de terminar con un punto.
Un comando puede abarcar varias
lneas de texto. El return encontrado
Ing. Mayra Deyanira Flores Guerrero. "%
Programacin Avanzada II
al final de la lnea le ndica al
progress que el comando no ha
terminado.
Las abreviaciones a comandos se
pueden hacer a partir de 4 caracteres.
Ejemplo:
Display = Disp.
Define variable v_int as integer.
Define variable v_int as int.
Define var v_int as int.
Def var v_int as int.
Al establecer frmulas aritmticas
, los operandos deben ir
separados por espacios en blanco.
Para definir que un grupo de letras
forman un comentario es necesario
encerrarlas entre "/* y "*/.
+as partes t,picas que componen a
un procedimiento -o pro(ramas. en
PR'/RESS son las si(uientes:
Ing. Mayra Deyanira Flores Guerrero. "$
Programacin Avanzada II
%e)iniciones -variables.0
1reacin de inter)ase0
2abilitar la inter)ase al usuario0
$loque de interrupcin.
I82ER4A!E $E 3!3ARI
La pantalla es el mecanismo empleado
para comunicarse con el usuario.
El teclado es el mecanismo del usuario
empleado para comunicarse con la
aplicacin.
Entre ambos se compone la inter)ase
de usuario.
Elementos de Lengua?e
*Procedimientos.
*Expresiones.
Ing. Mayra Deyanira Flores Guerrero. "2
Programacin Avanzada II
*Bloques.
*Smbolos especiales.
*Estatutos.
*Objetos de interfase de usuario:
Atributos
Mtodos
*Funciones.
* Eventos.
*Operadores.
* Variables.
".1 E@PRE!I8E!
Qu es una expresin en Progress?
Es una combinacin de elementos del
4GL que da por resultado un valor
simple.
Componentes:
Ing. Mayra Deyanira Flores Guerrero. ""
Programacin Avanzada II
*Una expresin se compone de uno o
ms operandos, pero puede incluir
operadores y funciones.
Ejemplo:
Fecha Entrega = To Day +14.
Los operadores deben iniciar y terminar
con espacios en blanco. Pueden ser:
= gual.
> Mayor que.
< Menor que.
>= Mayor igual.
<= Menor igual.
<> Diferente.
+ Suma.
- Resta.
* Multiplicacin.
/ Divisin.
AND Operador lgico (y).
OR Operador lgico (o).
NOT Operador lgico (negacin)
Ing. Mayra Deyanira Flores Guerrero. "#
Programacin Avanzada II


Caracteres es#eciales % #untuacin.
. Punto: con este smbolo terminan
todas las declaraciones o sentencias,
en declaraciones FOR o REPEAT
pueden terminar los renglones con
coma "A.
A Coma: Se usa como separar
mltiples especificaciones en
declaraciones FOR, DO, REPEAT.
> Interrogacin: Se usa para indicar
valor desconocido o nulo, (Fechas,
Lgicos).
BC Comillas/dobles0: Sirve para
indicar una cadena de caracteres.
Ing. Mayra Deyanira Flores Guerrero. "'
Programacin Avanzada II
DE Comillas/sencillas0: gual que el
anterior.
/ 0 Precedencia o Par=ntesis: Es
usado para agrupar expresiones, al
igual que en funciones.
F G 'rac1ets: Cuadrados: ndica
referencia de arreglos.
H I Lla-es: indican Preprocesadotes.
J* *J Indican comentarios.
Adems operadores matemticos K &
* J L MN
"." $E4I8IE8$ *ARIA'LE!
"." $E4I8IE8$ *ARIA'LE!
Cuando definimos una variable
podemos especificar, ya sea una sola
variable, o un arreglo y describir:
Ing. Mayra Deyanira Flores Guerrero. "(
Programacin Avanzada II
Tipo de dato.
Valor inicial.
Etiqueta.
El color del fondo y frente.
Visualizacin(utilizar un cierto tipo
de objeto).
!intaOis:
DEFNE VARABLE var3name{
}
[[NOT]CASE-SENSTVE]
[DECMALS n][EXTENT n]
[NTAL value-s.]
[LABEL strin(-s.]
[BGCOLOR expression][FGCOLOR
expression]
[NO-UNDO]
Ing. Mayra Deyanira Flores Guerrero. ")
Programacin Avanzada II
EJEMPL
EJEMPL
DEFNE VARABLE var1 AS DECMAL
DECMALS 1.
DEFNE VARABLE var2 AS
CHARACTER FORMAT "X(5)
CASE-SENSTVE.
DEFNE VARABLE arr AS NTEGER
EXTENT 3.
DEFNE VARABLE var4 AS
CHARACTER FORMAT "Q 9
EXTEN
T 4 NTAL[1, 2, 3, 4].
DEFNE VARABLE var5 AS LOGCAL
FORMAT "n/Out
NTAL "n.
".( A!I+8A8$ *ALRE! A LA!
".( A!I+8A8$ *ALRE! A LA!
*ARIA'LE!
*ARIA'LE!
Para poder asignar un valor a las
variables:
Ing. Mayra Deyanira Flores Guerrero. "*
Programacin Avanzada II
1.- Especificar un valor inicial dentro del
estatuto
DEFNE VARABLE.
2.- Usando el estatuto A!!I+8 .
Usando A!!I+8 te permite asignar un
grupo de valores a varias variables
dentro de un estatuto. Usando ASSGN
te permite asignar los resultados a un
grupo pequeo de variables, y tambin
comparar varios usos del estatuto
ASSNG, uno por cada variable.
!intaOis:
ASSGN variable = value
[variable = value...]
EJEMPLO
EJEMPLO
Ing. Mayra Deyanira Flores Guerrero. ",
Programacin Avanzada II
ASSGN
var1 = 3.1
var2 = " Hola
arr[1] = 1
arr[2] = 2
arr[3] = 3.
".P $E!PLE+A8$ *ARIA'LE!
".P $E!PLE+A8$ *ARIA'LE!
El estatuto DSPLAY mueve datos
del buffer de registro al buffer de
pantalla. Usando el estatuto DSPLAY
puedes ver el valor de las variables en
pantalla.
!intaOis Parcial:
DSPLAY [ ]
Las siguiente tabla describe el rol de
los parmetros en el estatuto DSPLAY:
Ing. Mayra Deyanira Flores Guerrero. #%
Programacin Avanzada II
Ing. Mayra Deyanira Flores Guerrero.
ParQmetros
Es#eci.icaciones
expression Que puedes
desplegar. Puede
ser una variable o
constante, una
expresin o una fila
de la base de
datos.
format-phrase Como desplegar el
dato.
frame-phrase Caractersticas que
contienen las
estructuras de los
artculos
desplegados.
SPACE[(N)] Nmero de
espacios
desplegados.
Puede ser de 0 a
cualquier nmero
positivo. Si hay
ms espacio
apropiado en al
lnea PROGRESS
puede saltar a la
prxima lnea, y no
despliega los
dems espacios.
#$
Programacin Avanzada II
/*PROGRAMA NO.1*/
DEFNE VARABLE var1 AS DECMAL
DECMALS 1.
DEFNE VARABLE var2 AS CHAR
FORMAT "X(5)
+A-E.-E&-I/I0E.
DEFNE VARABLE arr AS NTEGER
EXTENT 3.
DEFNE VARABLE var5 AS LOGCAL
FORMAT "n/Out
NTAL
"n.
ASSGN
var1 = 3.1
var2 = " Hola
arr[1] = 1
arr[2] = 2
arr[3] = 3.
DSPLAY var1 FORMAT "99.99
var2 arr[1] arr[2] var5.


Ing. Mayra Deyanira Flores Guerrero. #2
Programacin Avanzada II
Para hacer uso de campos de base de
datos se debe considerar lo si(uiente:
- Para poder hacer referencia a campos
de base de datos, sta debe estar
conectada.
- Para evitar ambigedad, se debe
poner el nombre de la tabla
antecediendo al del campo:
nombre3tabla0nombre3campo
- Cuando se tienen conectadas varias
bases de datos, se debe usar como
prefijo el nombre de la base de datos:
nombre3bd0nombre3
tabla0nombre3campo
EJEMPLOS CAMPOS DE LA BASE
EJEMPLOS CAMPOS DE LA BASE

DE DATOS
DE DATOS
Cliente.num_cliente.
Tienda.Cliente.num_cliente.
EJEMPLOS DE CONSTANTES:
EJEMPLOS DE CONSTANTES:
Ing. Mayra Deyanira Flores Guerrero. #"
Programacin Avanzada II
variable = False.
P = 3.14.
Total = Precio * 1.15.
Ciudad = " Monterrey ".
Fecha = Today .
".6 438CI8E! E8 PR+RE!!:
".6 438CI8E! E8 PR+RE!!:
*Funciones aritmticas.
*
Funciones de manipulacin de strings.
*
Funciones para fechas.
*
Funciones para conversin.
438CI8E! ARI2ME2ICA!:
438CI8E! ARI2ME2ICA!:
4uncin
4uncin #eracin
Absolute ( ) Regresa el valor
Ing. Mayra Deyanira Flores Guerrero. ##
Programacin Avanzada II
absoluto de un
nmero.
Exp ( ) Permite
operaciones con
exponenciales.
Log ( ) Regresa el
logaritmo de un
nmero.
Maximum ( ) Regresa el nmero
de mayor valor.
Minimum ( ) Regresa el nmero
de menor valor.
Round ( ) Redondea los
decimales de un
nmero.
Truncate ( ) Elimina los
decimales de un
nmero.
4unciones de mani#ulacin de
strings.
4uncin
4uncin #eracin
String ( ) Convierte cualquier
Ing. Mayra Deyanira Flores Guerrero. #'
Programacin Avanzada II
tipo de dato a
character.
Begins ( ) Checa si un string
inicia con otro
string.
Matches ( ) Checa si un string
contiene a otro
string.
Lenght ( ) Regresa la longitud
de un carcter .
Substring ( ) Extrae un string de
otro string.
Caps ( ) Convierte el valor
de un string
a
maysculas
Lc ( ) Convierte el valor
de un string a
minsculas.
Fill ( ) Define un string
formado por la
incidencia de
caracteres.
Trim ( ) Elimina los
espacios en blanco
Ing. Mayra Deyanira Flores Guerrero. #(
Programacin Avanzada II
contenidos en un
string.
Left-trim ( ) Elimina los
espacios en blanco
a la izquierda de
un string.
Right-trim ( ) Elimina los
espacios en blanco
a la derecha de un
string.
4unciones #ara .ec,as

4uncin
4uncin #eracin
Today ( ) Regresa la fecha
actual del S. O.
Date ( ) Convierte un string
a tipo date.
Day ( ) Regresa el nmero
correspondiente al
Ing. Mayra Deyanira Flores Guerrero. #)
Programacin Avanzada II
da.
Month( ) Regresa el nmero
correspondiente al
mes.
Weekday ( ) Regresa el string
correspondiente al
da.
Year ( ) Regresa el nmero
correspondiente al
ao.
Time ( ) Regresa la hora del
sistema operativo.
4unciones #ara con-ersin
4uncin
4uncin #eracin
String ( ) Convierte cualquier
dato a string.
Date ( ) Convierte un string
a tipo date.
Ing. Mayra Deyanira Flores Guerrero. #*
Programacin Avanzada II
nt ( ) Convierte cualquier
dato a integer
Decimal ( ) Convierte cualquier
dato a decimal.

".R 'L73E! E8 PR+RE!!
".R 'L73E! E8 PR+RE!!
* Qu es un bloque ?.
Una serie de estatutos que
PROGRESS trata como una sola
unidad para definirles caractersticas.

-Generalmente un bloque comienza
con un estatuto de encabezado y
concluye con un estatuto END.
TPOS DE BLOQUES
TPOS DE BLOQUES
*Procedimientos:
- Procedimiento principal.
- Procedimiento interno.
Ing. Mayra Deyanira Flores Guerrero. #,
Programacin Avanzada II
- Procedimiento externo
(programas).
*4ri((ers0
5$loques de control:
- DO.
- REPEAT.
- FOR EACH.
REGLAS GENERALES PARA
REGLAS GENERALES PARA
BLOQUES.
BLOQUES.
- Siempre inician con un estatuto de
encabezado de bloque.
- Siempre terminan con un estatuto
END.

- Tienen servicios implcitamente
definidos llamados
propiedades de bloque.

- Algunos bloques pueden ser
nombrados.

Ing. Mayra Deyanira Flores Guerrero. '%
Programacin Avanzada II
- A varios bloques es posible definirles
servicios de forma
explcita.
'L73E! $E C82RL
- 'loSue de $.
Es usado generalmente para
agrupar estatutos y stos sean
tratados como una sola unidad.
*** Sintaxis parcial:
{ label : }
DO { FOR record }
{ variable = expression 1 TO
expression 2 { BY k } }
{ WHLE expression }:
/*PROGRAMA NO.2*/
/*Programa que ejemplifica el uso del
DO*/
Ing. Mayra Deyanira Flores Guerrero. '$
Programacin Avanzada II
DEFNE VARABLE i As NTEGER.
Mensaje:
DO i=1 TO 5 BY 1:
DSPLAY "Progress .
END.
'loSue de REPEA2.
Este bloque tiene implcito el
servicio de ciclo.
***Sintaxis parcial:

[ label:]
REPEAT [FOR record
[variable = expresion1 TO
expresion2 [BY k] ]
[WHLE expresion ]:
/*PROGRAMA NO.3*/
/*Programa que ejemplifica el uso del
REPEAT*/
Ing. Mayra Deyanira Flores Guerrero. '2
Programacin Avanzada II
DEFNE VARABLE i AS NTEGER .
REPEAT i = 1 TO 10 BY 1:
DSPLAY " Progress ".
END.
'loSue de 4R EAC)

Este bloque tiene implcito el
servicio de ciclo. Es tambin una
estructura
esencial para moverse a travs de
registros en la base de datos.
****Sintaxis.
[label:] FOR [ EACH|FRST|
LAST]record-phrase
[variable = expression1 TO
expression2 [ BY k]]
[WHLE expression ][WHERE
expression]:
Ing. Mayra Deyanira Flores Guerrero. '"
Programacin Avanzada II
/*PROGRAMA NO. Pendiente*/
FOR EACH ALUMNO:
DSPLAY NOM_AL.
END.
E!2A232 CA!E
E!2A232 CA!E
******Sintaxis:

CASE expression:
WHEN value1 [.. OR WHEN
valuen....] THEN { }
WHEN...
OTHERWSE { }
END [ CASE]
/*PROGRAMA NO.4*/
Ing. Mayra Deyanira Flores Guerrero. '#
Programacin Avanzada II
/* Programa que ejemplifica el uso del
CASE */
DEFNE VARABLE os AS CHAR.
ASSGN os = OPSYS.
CASE os:
WHEN "UNX THEN
UNX is.
WHEN "MSDOS OR WHEN
"OS2 THEN
OS-COMMAND dir.
WHEN "VMS THEN
VMS directory.
WHEN "BTOS THEN
BTOS
"[sys]<sys>files.run files.
OTHERWSE
DSPLAY OPSYS "Es
un sistema Operativo no soportado.
END CASE.
'L73E REPEA2
'L73E REPEA2
Ing. Mayra Deyanira Flores Guerrero. ''
Programacin Avanzada II
Este formato tiene implcito el
servicio de ciclo.
***Formato:
[label:]
REPEAT [var = expression1 TO
expression2 [BY n]]:
statement....
END.
/*PROGRAMA NO.5*/
/*Programa que ejemplifica el uso del
REPEAT*/
DEFNE VARABLE i AS
NTEGER.
DEFNE VARABLE count AS
NTEGER FORMAT "99 NTAL 0.
DEFNE VARABLE nombre AS
CHARACTER FORMAT "X(20)
LABEL "lista de
nombres.
Ing. Mayra Deyanira Flores Guerrero. '(
Programacin Avanzada II
SET nombre.
REPEAT i = 1 TO NUM-
ENTRES(nombre) BY 1:
DSPLAY ENTRY(i, nombre)
FORMAT "X(25).
ASSGN count = count + 1.
END.
MESSAGE "Hay " count "nombres
en la lista.
".T 3!A8$ !E2
".T 3!A8$ !E2
Tu puedes utilizar el SET para
vaciar pronto algunos valores, y
entonces estos valores son asignados
a las variables.(Progress mueve el
registro del buffer).
El siguiente ejemplo permite la entrada
hasta el primer nombre.
/*PROGRAMA NO.6*/
Ing. Mayra Deyanira Flores Guerrero. ')
Programacin Avanzada II
/* Programa que ejemplifica el uso del
SET */
DEFNE VARABLE nombre AS
CHARACTER FORMAT "X(20)

LABEL "Escribe tu primer nombre.
DEFNE VARABLE saludo AS
CHARACTER FORMAT "X(27).
SET nombre.
ASSGN saludo = "Hola, + nombre + "
! " .
DSPLAY saludo.

".U 3!A8$ EL PRMP2&4R
".U 3!A8$ EL PRMP2&4R
PROMPT-FOR permite el uso de la
entrada de valores, pero no permite
mover el valor entre el buffer de
registro. Por eso t no puedes referirlo,
desde que un valor entra en el buffer
de pantalla tu lo puedes referir al uso
de la funcin NPUT.
/*PROGRAMA NO.7*/
Ing. Mayra Deyanira Flores Guerrero. '*
Programacin Avanzada II
/* Programa que ejemplifica el uso del
PROMPT-FOR */
DEFNE VARABLE nombre AS
CHARACTER FORMAT "X(20)

LABEL "Escribe tu primer nombre.
DEFNE VARABLE saludo AS
CHARACTER FORMAT "X(27).
PROMPT-FOR nombre.
NPUT nombre.
ASSGN saludo = "Hola, + nombre + "
! " .
DSPLAY saludo.
NOTA: Poner NPUT.
ASSGN saludo = "Hola, + NPUT
nombre + " ! " .

".V 438CI8E! 83MERICA! W
".V 438CI8E! 83MERICA! W

PERA$RE!
PERA$RE!
En la sumatoria de la operaciones
aritmticas, t puedes usar la funcin
TRUNCATE y el operador MODULE
Ing. Mayra Deyanira Flores Guerrero. ',
Programacin Avanzada II
para operar con valores numricos, t
puedes tambin convertir otro tipo de
datos a datos numricos.
438CI8J
PERA$R
!I82A@I! PERACI8
I&/EGE! I&/EGE!1e2pression3 +onvierte
e2presiones
a datos ti#o
I82E+ER
$ECIMAL $ECIMAL/eO#ression0 Con-ierte
eO#resiones
a datos ti#o
$ECIMAL
2R38CA2E 2R38CA2E
/decimalA decimal&
#laces0
2runcate
decimal&
#laces
desde
decimal.
M$3L num1 M$3L
num"
$i-ide
num1 #or
num"
% regresa el
residuo.

Ing. Mayra Deyanira Flores Guerrero. (%
Programacin Avanzada II
/*PROGRAMA NO.8*/
/* Programa que ejemplifica el uso de
Funciones Numricas y operadores */


DEFNE VARABLE bdate AS DATE
LABEL "ntroduce tu da de
cumpleaos.
DEFNE VARABLE wday AS
CHARACTER
NTAL " Domingo, Lunes, Martes,
Mircoles, Jueves, Viernes,
Sbado ".
DEFNE VARABLE yold AS NTEGER.
SET bdate SKP (1) WTH SDE-
LABELS.
ASSGN yold = TRUNCATE ((( TODAY
- bdate ) / 365.25 ), 0 ).
DSPLAY " Usted naci en: "
TRM (Entry ( WEEKDAY
( bdate ) , wday )) + ".
FORMAT " X(10) " SKP (1)
Ing. Mayra Deyanira Flores Guerrero. ($
Programacin Avanzada II
" T tienes " + STRNG(yold ) +
"Cumples aos "
FORMAT " X(50) ".

LA'RA2RI
LA'RA2RI

Ejercicio # 1.-
nstrucciones:
Permitir al usuario introducir el nombre
y apellido. Crear un monograma
(consistiendo de dos o tres letras del
primer nombre de ellos) y desplegar al
usuario.
Solucin
/*PROGRAMA NO.9*/
Ing. Mayra Deyanira Flores Guerrero. (2
Programacin Avanzada II
DEFNE VARABLE lnombre AS CHAR
FORMAT "X(15)

LABEL "Apellido Paterno.
DEFNE VARABLE fnombre AS CHAR
FORMAT "X(25)
LABEL
"Primer nombre.
DEFNE VARABLE mi AS CHAR
FORMAT "X(15)

LABEL "Apellido materno.
DEFNE VARABLE Monograma AS
CHAR FORMAT "X(40).
SET fnombre lnombre mi.
ASSGN Monograma = CAPS
(SUBSTRNG ( fnombre,1,1))
+
CAPS ( SUBSTRNG ( lnombre,1,1))
+ CAPS
( SUBSTRNG ( mi,1,1)).
DSPLAY Monograma.
Ing. Mayra Deyanira Flores Guerrero. ("
Programacin Avanzada II
Ejercicio # 2.-
nstrucciones:
Permitir al usuario insertar dos
nmeros. Comparar los dos nmeros y
desplegar el numero ms grande de
ellos.
/*PROGRAMA NO.10*/
DEFNE VARABLE a AS NTEGER.
$E4I8E *ARIA'LE b A! I82E+ER.
$E4I8E *ARIA'LE ma%or A!
C)ARAC2ER
LA'EL B<CuQl
es el numero mQs grande>C.
!E2 a. !E2 b.
A!!I+8 ma%or L I4 a N b 2)E8 BAC
EL!E I4 b N a 2)E8
B 'C
EL!E BningunoC.
$I!PLAW ma%or.
Ing. Mayra Deyanira Flores Guerrero. (#
Programacin Avanzada II
Ejercicio # 3
nstrucciones:
Use el sistema de fechas para desplegar la fecha de hoy. Y cuantos aos faltan
para llegar al ao 2020.
/*PROGRAMA NO.11*/
DEFNE VAR tday AS DATE.
DEFNE VAR tyear AS NTEGER.
DEFNE VARABLE yleft AS NTEGER FORMAT 9.
ASSGN
tday = TODAY
tyear = YEAR (tday)
yleft = 2020 - tyear.
DSPLAY
"La fecha de hoy es: tday SKP (1).
DSPLAY "Faltan yleft "aos hasta llegar al 2020.
WTH NO-LABEL.
Ejercicio # 4.-
nstrucciones:
Determinar los das de la semana. Si es Sbado o Domingo desplegar al
usuario un saludo especial de fin de semana. Si es Viernes desplegar un
mensaje especial alegre por ser Viernes. Si es cualquier otro da de la semana
desplegar el da.
Encontrar el camino del procedimiento. Despus puedes correr el
procedimiento de la semana con un mensaje diferente para el Viernes.
/*PROGRAMA NO.12/
DEFNE VAR tday AS DATE.
DEFNE VAR wdayi AS NT.
DEFNE VAR wday AS CHAR NTAL
["Domingo, Lunes, Martes, Mircoles, Jueves, Viernes, Sbado].
ASSGN
tday = TODAY.
wdayi = WEEKDAY(tday).
DSPLAY "La fecha de Hoy es: tday
SKP (1) WTH NO-LABEL.
CASE wdayi:
WHEN 1 OR WHEN 7 THEN
Ing. Mayra Deyanira Flores Guerrero. ('
Programacin Avanzada II
DSPLAY "Que tengas un buen fin de semana!.
WHEN 6 THEN
DSPLAY "Finalmente es Viernes!.
OTHERWSE
DSPLAY SKP (1)
"Hoy es
+ STRNG(ENTRY(WEEKDAY(tday), wday))
+ ". FORMAT "X(25).
END CASE.
Ejercicio # 5.-
nstrucciones:

Permitir al usuario capturar los nombres de los ganadores de cuatro
premios, separados mediante comas. Desplegar la lista de ganadores, y quien
es el ganador del primer premio insertado por el usuario.
/*PROGRAMA NO.13/
DEFNE VARABLE i AS NTEGER.
DEFNE VARABLE count AS NTEGER FORMAT "99
NTAL 0.
DEFNE VARABLE winners AS CHARACTER FORMAT "X(60)
LABEL "La lista de los primeros cuatro nombres
de los ganadores en orden.
SET winners.
REPEAT i = 1 TO NUM-ENTRES (winners):
ASSGN count = count + 1.
F count > 4 THEN LEAVE.
DSPLAY ENTRY (i,winners) FORMAT "X(25).
END.
MESSAGE "El primer ganador es: ENTRY (1,winners).
3.-Comandos a utilizar
* Filosofa de movimiento de datos.
* Uso de FND
* Uso de Queries.
* Modificacin de informacin.
* Creacin de registros .
* Borrado de registros.
* Uso del Browse.
* Frame
Ing. Mayra Deyanira Flores Guerrero. ((
Programacin Avanzada II
Comandos a utili:ar en el mane?o de tablas
ALTAS NSERT
BAJAS DELETE
CAMBOS UPDATE
CONSULTAS DSPLAY
82A: 38$A RE2RW: Cancela el mensaje y reintenta al posicionarse de nuevo
en la captura.
(.1 3! $E 4I8$
Estatuto 4I8$
Para accesar un registro
especfico de la base de datos y
ponerlo en el buffer de registro, se
utiliza el estatuto Find.
El estatuto Find requiere que se le
especifique el registro a encontrar.
Ing. Mayra Deyanira Flores Guerrero. ()
Programacin Avanzada II
Find hace uso de un ndice.
!intaOis del estatuto 4I8$
FND [ FRST | LAST | NEXT |
PREV | CURRENT ] record
[ OF table ] [ WHERE expression ]
[ USE - NDEX index ]
[ USNG field ] [ NO- ERROR ]
J*PR+RAMA 8.1P*J
/*Para encontrar el cliente nmero
2 :*/
Ing. Mayra Deyanira Flores Guerrero. (*
Programacin Avanzada II
FND articulos WHERE
articulos.noart = 2.
/* Para desplegar los datos del
cliente encontrado:*/
DSPLAY articulos.
/*Para desplegar ciertos datos
del cliente :*/
DSPLAY articulos.nomart
articulos.Cantidad
articulos.descart.

/*Para desplegar haciendo
excepciones:*/
DSPLAY articulos EXCEPT
articulos.nomart.
J*PR+RAMA 8.16*J
Ing. Mayra Deyanira Flores Guerrero. (,
Programacin Avanzada II
/* encontrar el ultimo alumno. Nota:
/* encontrar el ultimo alumno. Nota:
que es el ultimo en la base de
que es el ultimo en la base de
datos*/
datos*/
FND LAST alumno.
FND LAST alumno.
DSPLAY alumno.mat_al
DSPLAY alumno.mat_al
alumno.nom_al.
alumno.nom_al.
PAUSE.
PAUSE.
J*PR+RAMA 8.1R*J
J*PR+RAMA 8.1R*J
/*Encontrar el articulo numero 3*/
/*Encontrar el articulo numero 3*/
FND articulos
FND articulos


WHERE articulos.mat_al = 99965.
WHERE articulos.mat_al = 99965.
DSPLAY articulos.noart
DSPLAY articulos.noart
articulos.nomart.
articulos.nomart.
PAUSE.
PAUSE.
Ing. Mayra Deyanira Flores Guerrero. )%
Programacin Avanzada II
(." 4uncin A*AILA'LE
(." 4uncin A*AILA'LE
Devuelve un valor lgico indicando
si en el buffer de registro indicado
hay un registro disponible.

Para usarse en conjunto con el
estatuto FND, debe usarse con la
opcin de NO-ERROR.
Sintaxis:
AVALABLE record
J*PR+RAMA 8.1T*J
J*PR+RAMA 8.1T*J
/*Programa que ejemplifica el uso
del available*/
REPEAT:
Ing. Mayra Deyanira Flores Guerrero. )$
Programacin Avanzada II
PROMPT-FOR articulos.noart.
FND articulos USNG noart NO-
ERROR.
F AVALABLE articulos
THEN DSPLAY nomart cantidad
descart.
ELSE MESSAGE "Not found".
END.
(.( < 73E !8 L! 73ERIE! >
Es una solicitud de informacin a
la base de datos.
Es un conjunto de registros de
base de datos; puede consistir de
una o ms tablas, y puede
contener todos los registros de
una tabla en particular, o bien
slo un subconjunto de registros.
Ing. Mayra Deyanira Flores Guerrero. )2
Programacin Avanzada II
CARAC2ER;!2ICA!
CARAC2ER;!2ICA!
Para utilizar un QUERY es
necesario seguir la secuencia:
- Definir el QUERY.
- Abrir el QUERY.
- Hacer uso del QUERY.
- Cerrar el QUERY
USO DE QUERIES
Definicin del Query
Sintaxis (parcial):

Ing. Mayra Deyanira Flores Guerrero. )"
Programacin Avanzada II
Define Query quer*3name For
archivo
[Fields/Except[ )ield3list] [Cache
n]
[Scrolling].
La definicin del query
requiere que le sean definidas
todas las tablas a ser utilizadas.
CACHE
ndica el nmero de registros que
sern mantenidos en memoria.
La opcin SCROLLNG debe ser
usada cuando se desea tener la
Ing. Mayra Deyanira Flores Guerrero. )#
Programacin Avanzada II
capacidad de reposicionarse
libremente en el query.
En caso de ser seleccionada la
opcin cach es activada por default
la opcin Scrolling.
#$% &E'
Uso del estatuto GET
Funciona parecido a un estatuto
FND, con la diferencia de que este
estatuto funciona con un query
definido.
El estatuto GET mueve
informacin de la base de datos al
buffer de registro.
Estatuto +E2
Ing. Mayra Deyanira Flores Guerrero. )'
Programacin Avanzada II

Sintaxis
:
* GET {FRST|NEXT|PREV|LAST|
CURRENT}
query [NO-ERROR]
* Despus de un estatuto GET es
posible usar la funcin AVALABLE
para verificar si fue posible traer un
registro al buffer.
* Caractersticas del estatuto GET
*
Cuando se aplica el estatuto GET
a un query que referencia a
varias tablas, el estatuto regresa
un conjunto de registros que
Ing. Mayra Deyanira Flores Guerrero. )(
Programacin Avanzada II
corresponde a un "rengln de la
consulta.
* Si se ejecuta un GET NEXT
despus del ltimo registro
disponible del query, la condicin de
error NO se habilita. Se debe
aplicar la funcin Available para
probar si se regres el registro.
*Cuando se ejecuta el estatuto GET,
cualquier trigger de FND definido
para las tablas se ejecuta.
J*PR+RAMA 8.1U*J
/*Ejemplo del QUERY y el estatuto
GET*/
DEFNE QUERY q-prueba FOR
articulos.
OPEN QUERY q-prueba FOR
EACH articulos.
Ing. Mayra Deyanira Flores Guerrero. ))
Programacin Avanzada II
GET FRST q-prueba.
REPEAT WHLE AVALABLE
articulos:
DSPLAY articulos.noart
articulos.nomart.
GET NEXT q-prueba.
END.
(.6 Estatuto 3#date
* Sintaxis (parcial):
UPDATE [field [ WHEN expression
{SPACE [(n ) ]} | { SKP [(n)]}]]...[NO ERROR]
* El estatuto Update realiza lo siguiente:
* Crea una interfase default.
* Despliega datos del registro(DSPLAY).
* Habilita la captura y bloquea la ejecucin para permitirle al usuario
interactuar con los datos (PROMPT-FOR).
* Asigna los cambios (ASSGN).
*
El registro cuyos datos se actualizarn debe estar en el buffer de
registro.
* El estatuto Update realiza el siguiente movimiento de informacin:
Ing. Mayra Deyanira Flores Guerrero. )*
Programacin Avanzada II
J*PR+RAMA 8.1V*J
/*Programa que ejemplifica el uso del UPDATE*/
DEFNE VARABLE v-articulo LKE articulos.noart.
/*Ntese que para salir del ciclo repeat es necesario presionar
la tecla Esc, durante la captura de v-articulo*/
REPEAT:
UPDATE v-articulo.
FND articulos WHERE articulos.noart =
v-articulo NO-ERROR.
F AVALABLE articulos THEN DO:
DSPLAY articulos.noart.
UPDATE articulos.nomart articulos.descart articulos.Cantidad.
END.
END.
(.R CREACI8 $E RE+I!2R!
Estatuto CREA2E

Sintaxis:
CREATE: record [NO-ERROR]

Este estatuto crea un registro nuevo vaco y la copia al buffer de
registro. Si hay valores iniciales estos son asignados aqu .
Es recomendable permitir actualizar la informacin inmediatamente
despus de haber creado el registro.
J*PR+RAMA 8."X*J
/*Programa para crear Registros */
/*Ntese que para salir del ciclo de REPEAT es necesario presionar la tecla
ESC o F4 durante la captura del PROMPT-FOR*/
REPEAT:
PROMPT-FOR articulos.noart.
FND articulos WHERE articulos.noart = NPUT
articulos.noart NO-ERROR.
/* Si no existe se crea y se le asigna una llave solicitada */
F NOT AVALABLE articulos THEN DO:
CREATE articulos.
ASSGN articulos.noart.
END.
UPDATE articulos EXCEPT articulos.noart
WTH 2 COLUMNS.
Ing. Mayra Deyanira Flores Guerrero. ),
Programacin Avanzada II
END.
(.T Estatuto Message
Sintaxis (parcial):
MESSAGE mensaje { SKP [ (n) ]} [ VEW -
AS ALERT-BOX] [tipo-ventana][ BUTTONS
tipo-botones ] [ UPDATE variable ].
Notas sobre el estatuto MESSAGE:
El mensaje es desplegado en el rea de mensajes si la ventana activa la
tiene definida, de lo contrario usa una caja de alerta.
(.U Estatuto I8!ER2 (.U Estatuto I8!ER2
Sintaxis:
NSERT record [EXCEPT field...][NO-ERROR]
Este estatuto crea un nuevo registro de base de datos, despliega los
valores iniciales para los campos del registro permite capturar sus valores, y
asigna dichos valores al registro.
Este estatuto es una combinacin de los estatutos CREATE Y UPDATE.
J*PR+RAMA 8."1*J
J*Muestra como se utili:a el insert *J
REPEAT:
NSERT articulos WTH 2 COL.
END.
'RRA$ $E RE+I!2R! 'RRA$ $E RE+I!2R!
(.V Estatuto $ELE2E
Sintaxis
DELETE record [VALDATE (condition, msg-expression)] [NO-ERROR]

Ing. Mayra Deyanira Flores Guerrero. *%
Programacin Avanzada II
El registro a borrar debe estar disponible en el buffer de registro.
Este estatuto no mueve informacin, solamente borra al registro del buffer
de registro y le indica al manejador de base de datos que debe borrarse
fsicamente.
J*PR+RAMA 8.""*J
/*Programa para borrar registros*/
define variable sn as character format "x(1)" LABEL "Seguro que desea borrar
archivo? (s/n)".
define frame a
nomart skip
Cantidad skip
descart skip

with side-labels centered.

define frame b
sn
with side-labels centered 1 down.

repeat for articulos:
PROMPT-FOR noart.
FND articulos USNG noart no-error.
if not available articulos then do:
message "Nmero de artculo no existe, Favor de verificar".
end.
else do:

DSPLAY nomart Cantidad descart WTH frame a . /* SDE-LABELS
centered.*/

set sn with 1 down.
if sn = 's' then do:
message "Artculo Borrado con xito".
delete articulos.
end.
else do:
message "Artculo No ha sido Borrado".
end.
end.
end.
Ing. Mayra Deyanira Flores Guerrero. *$
Programacin Avanzada II
(.1X 3! $EL 'RY!E (.1X 3! $EL 'RY!E
Qu es un Browse ?
Es una lista de seleccin de registros de la base de datos.
* Sintaxis (parcial):
DEFNE BROWSE browse-name QUERY
query-name DSPLAY { column -list | {record
[ EXCEPT field...]}}
[browse-enable-phrase]
(.11 E!2A232 RELEA!E
Verifica que un registro cumpla con un campo obligatorio y las
definiciones nicas del ndice. Elimina el registro del buffer y lo asocia a la base
de datos si lo ha de modificar.
(.1" 4RAME!
Qu es un Frame?
Un frame es un rea rectangular que Progress usa para desplegar
objetos a nivel de campo.
3.13 ESTATUTO ENABLE 3.13 ESTATUTO ENABLE
Valida entradas para uno o ms niveles de campo y [widgets] del frame del
child dentro de un frame.
J*PR+RAMA 8. "(*J
/*Demuestra el funcionamiento del QUERY, BROWSE, RELEASE, FRAME,
BOTTON */
DEFNE BUTTON upd-articulos LABEL "Cambios articulos".
DEFNE BUTTON exit-app LABEL "Exit".
DEFNE VARABLE methRtn AS LOGCAL.
DEFNE VARABLE curr-articulos AS ROWD.
DEFNE QUERY seq-articulos FOR articulos.
DEFNE BROWSE brow-articulos QUERY seq-articulos DSPLAY
noart nomart WTH 10 DOWN.

FORM
upd-articulos exit-app SKP(1)
Ing. Mayra Deyanira Flores Guerrero. *2
Programacin Avanzada II
brow-articulos
WTH FRAME main-frame.
FORM
articulos EXCEPT descart
WTH FRAME curr-frame COLUMN 40.
OPEN QUERY seq-articulos FOR EACH articulos.
ON VALUE-CHANGED OF brow-articulos
DO:
DSPLAY articulos EXCEPT descart WTH FRAME
curr-frame SDE-LABELS.
curr-articulos = ROWD(articulos).
END.

ON CHOOSE OF upd-articulos
DO: /* TRANSACTON */
FND articulos WHERE ROWD(articulos) = curr-articulos
EXCLUSVE-LOCK.
UPDATE articulos WTH FRAME cust-frame VEW-AS
DALOG-BOX
TTLE "articulos Update".
methRtn = brow-articulos:REFRESH().

DSPLAY articulos EXCEPT descart WTH
FRAME curr-frame
SDE-LABELS.
RELEASE articulos.
END.
ENABLE ALL WTH FRAME main-frame.
APPLY "VALUE-CHANGED" TO brow-articulos.
PAUSE 0 BEFORE-HDE.
WAT-FOR CHOOSE OF exit-app OR WNDOW-CLOSE
OF DEFAULT-WNDOW.
J*PR+RAMA 8."P*J
/* Programa que ejemplifica el uso del ENABLE*/
DEFNE BUTTON btn1 SZE-PXELS 80 BY 50 LABEL "1.
DEFNE BUTTON btn2 SZE-PXELS 80 BY 50 LABEL "2.
Ing. Mayra Deyanira Flores Guerrero. *"
Programacin Avanzada II
DEFNE BUTTON btn3 SZE-PXELS 80 BY 50 LABEL "3.
DEFNE BUTTON btn4 SZE-PXELS 80 BY 50 LABEL "4.
DEFNE BUTTON btn-done SZE-PXELS 100 BY 70 LABEL
"Done.
DEFNE FRAME f-buttons btn1 btn2 SKP (1)
btn3 btn4 SKP (2)
btn-done
WTH 2 COLUMNS.
ENABLE btn1 btn2
btn3 btn4
btn-done WTH FRAME f-buttons.
WAT-FOR CHOOSE OF btn-done N FRAME f-buttons.
(.1P MA8EJ $E ERRRE!
Procesamiento de errores
El procesamiento de los errores de Progress depende del tipo de error
generado. Progress reconoce los siguiente errores:
Error generado por procedimiento.
Una tecla predefinida de ERROR.
Una tecla predefinida de ENDKEY.
La tecla de END-ERROR.
Una falla del sistema o software.
2i#o de Error
Ing. Mayra Deyanira Flores Guerrero. *#
* UNDO RETRY
* UNDO RETRY
* UNDO LEAVE
* UNDO LEAVE
UNDO RETRY
* Deshace la transaccin
actual y corre el proc. de
inicio.
* Deshace cualquier transacc.
incompleta para todos los
usuarios del sistema.
* Error de procedimiento
Presionar la tecla
* predefinida de ERROR.
* Presionar la tecla
predefinida ENDKEY
* Presionar la tecla de
END-ERROR.
* Presionar la tecla de
STOP.
* Cuando falle el sistema
Accin Accin
Programacin Avanzada II
El procesamiento de error es un servicio asociado a bloques.
La propiedad de error puede ser manipulada usando la frase NO
ERROR en los encabezados de los bloques:

FOR EACH.
DO.
REPEAT.
El procesamiento default es deshacer y reintentar el proceso del bloque
(UNDO, RETRY).
Ing. Mayra Deyanira Flores Guerrero. *'