Está en la página 1de 43

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.
Desarrollo de programacin grafica utilizando
Appbuilder.
1 - Qu es una Base de Datos?
Ing. Mayra Deyanira Flores Guerrero. "
Programacin Avanzada II
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
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 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:
Ing. Mayra Deyanira Flores Guerrero. #
$
%
%
$
$
%
&o. tel nom &o.
Programacin Avanzada II
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 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
Entidad
Es un objeto de la realidad modelada que fcilmente puede ser identificada.
Ing. Mayra Deyanira Flores Guerrero. '
Programacin Avanzada II
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.
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 llave primaria en la nueva tabla,
separadamente sern llaves forneas.
Ing. Mayra Deyanira Flores Guerrero. (
)liente
Programacin Avanzada II
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
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
&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.
Ing. Mayra Deyanira Flores Guerrero. *
Programacin Avanzada II
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.
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.
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.
Ing. Mayra Deyanira Flores Guerrero. +
Programacin Avanzada II
'e.ore Image /.bi0
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
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.
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.
Ing. Mayra Deyanira Flores Guerrero. ,
Programacin Avanzada II

1.4 Aplicacin del Progress
Pantalla Principal:
Todas las aplicaciones del Progress:
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.
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:
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
Ing. Mayra Deyanira Flores Guerrero. $$
Programacin Avanzada II
* 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
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.
*En el diccionario de datos es posible definirle las siguientes caractersticas:
Ing. Mayra Deyanira Flores Guerrero. $2
Programacin Avanzada II
Table Name
Etiqueta
Descripcin
Nombre para "DUMP.
TRGGERS y Atributos de traduccin.
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.
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!
Los campos son los atributos de las tablas.
En el diccionario de datos es posible definirles, entre otras, las siguientes
caractersticas:
Ing. Mayra Deyanira Flores Guerrero. $"
Programacin Avanzada II
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:
- 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.
Ing. Mayra Deyanira Flores Guerrero. $#
Programacin Avanzada II
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:
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.
Ing. Mayra Deyanira Flores Guerrero. $'
Programacin Avanzada II
!"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
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. $(
Programacin Avanzada II
Ing. Mayra Deyanira Flores Guerrero. $*
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
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:
%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.
Ing. Mayra Deyanira Flores Guerrero. $+
Programacin Avanzada II
Elementos de Lengua?e
*Procedimientos. *Expresiones.
*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:
*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.
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:
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.]
Ing. Mayra Deyanira Flores Guerrero. 2%
Programacin Avanzada II
[BGCOLOR expression][FGCOLOR expression]
[NO-UNDO]
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
EXTENT 4 NTAL[1, 2, 3, 4].
DEFNE VARABLE var5 AS LOGCAL FORMAT "n/Out
NTAL "n.
".( A!I+8A8$ *ALRE! A LA! *ARIA'LE! ".( A!I+8A8$ *ALRE! A LA! *ARIA'LE!
Para poder asignar un valor a las variables:
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
ASSGN
var1 = 3.1
var2 = " Hola
arr[1] = 1
arr[2] = 2
arr[3] = 3.
Ing. Mayra Deyanira Flores Guerrero. 2$
Programacin Avanzada II
".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:
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.
SKP [(N)] Nmero de lneas que puede saltar.
* Si "n es cero no hay especificaciones para
"n, PROGRESS, salta a la prxima lnea, a
menos que ya haya saltado a la nueva lnea
en caso que el dato sea demasiado largo.
* Si tu especificas SKP (1) PROGRESS salta
a una nueva lnea, sin hacer caso de que ya
exista una nueva lnea o no.
/*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. 22
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:
nombre3bd0nombre3tabla0nombre3campo
EJEMPLOS CAMPOS DE LA BASE DE DATOS EJEMPLOS CAMPOS DE LA BASE DE DATOS
Cliente.num_cliente.
Tienda.Cliente.num_cliente.
EJEMPLOS DE CONSTANTES: EJEMPLOS DE CONSTANTES:
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 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.
Ing. Mayra Deyanira Flores Guerrero. 2"
Programacin Avanzada II
4unciones de mani#ulacin de strings.
4uncin 4uncin #eracin
String ( ) Convierte cualquier 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 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 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. 2#
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.
- Procedimiento externo (programas).
*4ri((ers0
5$loques de control:
- DO.
- REPEAT.
- FOR EACH.
REGLAS GENERALES PARA BLOQUES. REGLAS GENERALES PARA 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.

- 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 : }
Ing. Mayra Deyanira Flores Guerrero. 2'
Programacin Avanzada II
DO { FOR record }
{ variable = expression 1 TO expression 2 { BY k } }
{ WHLE expression }:
/*PROGRAMA NO.2*/
/*Programa que ejemplifica el uso del DO*/
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*/
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]:
/*PROGRAMA NO. Pendiente*/
Ing. Mayra Deyanira Flores Guerrero. 2(
Programacin Avanzada II
FOR EACH CLENTE:
DSPLAY nombre.
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*/
/* 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
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.
SET nombre.
REPEAT i = 1 TO NUM-ENTRES(nombre) BY 1:
Ing. Mayra Deyanira Flores Guerrero. 2*
Programacin Avanzada II
DSPLAY ENTRY(, nombre) FORMAT "X(25).
ASSGN count = count + 1.
END.
MESSAGE "Hay " count "lista de nombre.
".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*/
/* 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*/
/* 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 PERA$RE! ".V 438CI8E! 83MERICA! W PERA$RE!
En la sumatoria de la operaciones aritmticas, t puedes usar la funcin
TRUNCATE y el operador MODULE 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 2runcate decimal&#laces
Ing. Mayra Deyanira Flores Guerrero. 2+
Programacin Avanzada II
/decimalA decimal&#laces0 desde decimal.
M$3L num1 M$3L num" $i-ide num1 #or num"
% regresa el residuo.

/*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)
" 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*/
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))
Ing. Mayra Deyanira Flores Guerrero. 2,
Programacin Avanzada II
+ CAPS ( SUBSTRNG ( mi,1,1)).
DSPLAY Monograma.
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.
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:
Ing. Mayra Deyanira Flores Guerrero. "%
Programacin Avanzada II
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
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.
Ing. Mayra Deyanira Flores Guerrero. "$
Programacin Avanzada II
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
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.
Ing. Mayra Deyanira Flores Guerrero. "2
Programacin Avanzada II
El estatuto Find requiere que se le especifique el registro a encontrar.
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 :*/
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
/* encontrar el ultimo articulo. Nota: que es el ultimo en la base de datos*/ /* encontrar el ultimo articulo. Nota: que es el ultimo en la base de datos*/
FND LAST articulos. FND LAST articulos.
DSPLAY articulos.noart articulos.nomart. DSPLAY articulos.noart articulos.nomart.
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.noart = 3. WHERE articulos.noart = 3.
DSPLAY articulos.noart articulos.nomart. DSPLAY articulos.noart articulos.nomart.
Ing. Mayra Deyanira Flores Guerrero. ""
Programacin Avanzada II
PAUSE PAUSE. .
(." 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:
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.
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
Ing. Mayra Deyanira Flores Guerrero. "#
Programacin Avanzada II
USO DE QUERIES
Definicin del Query
Sintaxis (parcial):

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

Sintaxis
:
* GET {FRST|NEXT|PREV|LAST|CURRENT}
query [NO-ERROR]
Ing. Mayra Deyanira Flores Guerrero. "'
Programacin Avanzada II
* 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 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.
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).
*
Ing. Mayra Deyanira Flores Guerrero. "(
Programacin Avanzada II
El registro cuyos datos se actualizarn debe estar en el buffer de
registro.
* El estatuto Update realiza el siguiente movimiento de informacin:
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:
Ing. Mayra Deyanira Flores Guerrero. "*
Programacin Avanzada II
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.
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.
Ing. Mayra Deyanira Flores Guerrero. "+
Programacin Avanzada II
'RRA$ $E RE+I!2R! 'RRA$ $E RE+I!2R!
(.V Estatuto $ELE2E
Sintaxis
DELETE record [VALDATE (condition, msg-expression)] [NO-ERROR]

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.*/

Ing. Mayra Deyanira Flores Guerrero. ",
Programacin Avanzada II
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.
(.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".
Ing. Mayra Deyanira Flores Guerrero. #%
Programacin Avanzada II
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)
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.
Ing. Mayra Deyanira Flores Guerrero. #$
Programacin Avanzada II
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.
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. #2
* 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. #"

También podría gustarte