Você está na página 1de 3

W&M Informatica, c.a.

Calidad y Experiencia

7LSV GH3 URJUDP DF LyQ

Actualizacin de BD sin Variables de Pantalla adicionales (Data


Structure Multiocurrencias) RPG400 (aplicable a ILE RPG)

La tcnica que presentaremos a seguir permite simplificar las actualizaciones de archivos sin necesidad de trabajar con

variables adicionales en pantalla y evitar todas las fastidiosas operaciones MOVE ( EVAL) desde y hacia el archivo de
Base de Datos.
Al disminuir el cdigo necesario, disminuimos las posibilidades de errores (olvido de un MOVE desde hacia la
Base de Datos por ejemplo).
Supongamos que nuestra aplicacin interactiva actualiza un registro en un archivo. Seguimos cuatro pasos bsicos
(excluyendo verificacin de errores):
1.
2.
3.
4.

Ir al archivo para conseguir los valores actuales para el registro pedido. No bloqueamos el registro porque otros
programas pueden necesitar usarlo durante el proceso de actualizacin interactivo.
Despliegue los campos para el usuario modificar.
Devuelva al archivo, consiga el registro, y cirrelo con llave.
Actualizar los campos del archivo y actualizar el registro.

3DUHFHVXILFLHQWH3HURLQFOXVRSURJUDPDVGHDFWXDOL]DFLyQVLPSOHOHYDQWDQDOJXQDVSUHJXQWDV/DFigura 1 muestra el
esquema para archivo SLP001P, un archivo de contacto de vendedor. Nosotros usamos SLP001P y un programa de
PDQWHQLPLHQWRSDUDHODUFKLYRSDUDFRQWHVWDUXQDSUHJXQWD'HERXVDU\RORVPLVPRVQRPEUHVGHFDPSRHQHODUFKLYRGH
pantalla que los que existen en el archivo de base de datos? Hay dos posibilidades para los nombres de campo en su DDS
para el archivo de pantalla:
1.

2.

Usar nombres de campo en el archivo de pantalla que correspondan a los nombres de campo de la base de datos.
La Figura 2 muestra parte del cdigo de DDS para el archivo de pantalla de mantenimiento, y usted notar que los
campos concuerdan con los nombres de campo de la base de datos.
Usar Nombres diferentes en el archivo de pantalla. Cuando usted usa esta posibilidad, despus de que el registro se
recupera del archivo de base de datos, usted debe pasar los valores de los campos de la base de datos a los campos
de pantalla. Entonces, despus de que usted recupera el registro de la base de datos nuevamente, usted debe pasar
los valores de los campos de pantalla a los campos de la base de datos.

Nosotros preferimos la primera posibilidad porque involucra menos cdigo (luego menos posibilidad de errores). La
segunda posibilidad requiere dos lneas de cdigo para cada campo usado en el archivo de pantalla: una lnea para mover el
valor de la base de datos al campo de pantalla, y otra para mover el valor del campo de pantalla a la base de datos.
Sin embargo, la primera posibilidad presenta un desafo. Hay slo un valor actual por cada campo interno. La Figura 3
muestra una secuencia de operaciones sobre el campo interno FNAME. Antes de que el registro se recupere, FNAME est
en blanco. Despus de que el registro se recupera de la base de datos, FNAME tiene un valor de "Jim". Cuando la pantalla se
despliega, el usuaULRFDPELDHOYDORUGH)1$0(D-DPHV$QWHVGHOUHJLVWURDFWXDOL]DUVHVLQHPEDUJRRWUDRSHUDFLyQGH
recuperacin es hecha, lo que trae de nuevo el valor original de "Jim" para el campo FNAME! Lo que necesitamos es una
manera de salvar los valores de campo de pantalla antes de que recuperemos el registro de la base de datos nuevamente, y
queremos hacerlo en una sola lnea de cdigo.

W&M Informatica, c.a.

Calle Negrn, Edif. Alto Centro, Piso 9 Oficina 9-H, 1050 Sabana Grande, Caracas
Tel./Fax: (0212) 761 55 09 / 5204 / 8214 / 0412 926 44 86 / 0414 334 62 09
e-mail wminfor matica@wminfor matica.com

W&M Informatica, c.a.

Calidad y Experiencia

/D VROXFLyQ HV XQD '602 'DWD 6WUXFWXUH 0 XOWL-ocurrencia) descrita externamente. La Figura 4 muestra las dos
partes de cdigo para el uso de la DSMO. El juego de instrucciones I define la DSMO, y el juego de especificaciones C
muestra cmo se usa el DSM O durante el proceso de actualizacin.
En la lnea 18 de la Figura 4, la E en la posicin 17 de la declaracin de la estructura de datos @ SAVE significa que un
archivo externo define su estructura. En nuestro caso, la estructura de @ SAVE es definida a travs de archivo SLP001P.
Al Describir externamente las estructura de datos @SAVE aseguramos que los campos en la estructura de datos
concuerden con los campos en el formato del registro de archivo. Es importante que las estructuras concuerden porque la
estructura de datos se usa para actualizar los campos del archivo de base de datos.
Usted podra definir la estructura de @SAVE sin usar una referencia de archivo externa tecleando en el Desde y Hasta
para cada campo del archivo o simplemente tecleando los campos de pantalla que se usan para actualizar el archivo. Sin
embargo, si usted hace cualquier cambio al archivo o a la pantalla, usted debe cambiar tambin la estructura de datos. Es
mucho ms conveniente basar la estructura de datos en la descripcin externa del archivo.
En la lnea 19, el campo SLPNR se renombra en la estructura de datos a XLPNR. Refirindose a la Figura 1, note que el
campo SLPNR es la clave del archivo SLP001P. El resto de los campos en la estructura de datos se nombra igual que en el
archivo SLP001P. Explicaremos en un momento por qu el campo de clave se renombra.
Para utilizar la estructura de datos @ SAVE, vea el segundo juego de cdigo en la Figura 4. En la lnea 494, los valores
de campo son del archivo de pantalla y comparten con la primera ocurrencia de la estructura de datos @SAVE. Para salvar
los valores actuales antes de recuperar el registro del archivo con la operacin CHAIN, la segunda ocurrencia de la
estructura de datos se hace ahora actual y salva los valores de campo de la pantalla en la primera ocurrencia.
7RGRVORVYDORUHVGHFDPSR con la excepcin del campo de clave, SLPNR ahora cambian basados en los valores de
campo en la segunda ocurrencia de la estructura de datos @ SAVE. Por qu no se cambia el valor de SLPNR? Porque en la
lnea 19 del cdigo, el campo de la Estructura de Datos SLPNR se renombra a XLPNR. Como resultado, el valor del campo
del archivo de pantalla SLPNR (qu no se puede modificar porque es un campo de salida) puede usarse para hacer CHAIN
al archivo como campo de clave en la lnea 495. Si SLPNR no se renombra en la estructura de los datos, el valor de SLPNR
sera desconocido cuando se llama la segunda ocurrencia en la lnea 494.
En la lnea 496, regresamos a la primera ocurrencia y se reemplazan los valores de los campos en el archivo.
Finalmente, el archivo se actualiza en la lnea 497.
El proceso de actualizacin est completo sin cualquier declaracin de MOVE antes o despus del CHAIN. Las dos
declaraciones de OCUR en las lneas 494 y 496 eliminan la necesidad de un M OVE salvando los valores de la pantalla en la
primera ocurrencia de la estructura de datos. Nota: Despus de un CHAIN exitoso, la segunda ocurrencia de la estructura de
datos contiene los valores originales de la base de datos antes de la actualizacin. Esto presenta la posibilidad de usar un
GHVKDFHURSFLRQDORXQDRSFLyQSDUDUHYLVDUORVYDORUHVGHFDPSRRULJLQDOHV
Usando DSMO basada en la estructura del archivo de la base de datos que usted est manteniendo, usted puede
simplificar su codificando y el mantenimiento usando el mismo nombre de campo en su archivo de pantalla que existe en su
archivo de la base de datos.
Nota : A pesar de que esta es una tcnica que hemos utilizado desde varios aos, este articulo es una traduccin del original hecho por J ef Sutherland de la
revista News/400 del mes de Abril del 2001.

W&M Informatica, c.a.

Calle Negrn, Edif. Alto Centro, Piso 9 Oficina 9-H, 1050 Sabana Grande, Caracas
Tel./Fax: (0212) 761 55 09 / 5204 / 8214 / 0412 926 44 86 / 0414 334 62 09
e-mail wminfor matica@wminfor matica.com

W&M Informatica, c.a.

Calidad y Experiencia
FMT DP .....AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions+++++++++++
0059.00
A
4 2'Code . . :'
0060.00
A
SLPNR
R
O
+1
0061.00
A
6 2'Name . . .'
0062.00
A
SLPNM
R
B
+1CHECK(LC)
0063.00
A
7 2'Address
'
0064.00
A
SLPAD1
R
B 7 13CHECK(LC)
0065.00
A
SLPAD2
R
B 8 13CHECK(LC)
0066.00
A
SLPAD3
R
B 9 13CHECK(LC)
0067.00
A
SLPZP
R
B
+2

Figur a 1 DDS del ar chivo SLPOOIP

FMT PF .....A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++
*************** Beginning of data *******************************
0001.00
A
R SLP001R
0002.00
A
SLPNR
5A
COLHDG('CODE')
0003.00
A
SLPNM
30A
COLHDG('NAME')
0004.00
A
SLPAD1
30A
COLHDG('ADDRESS 1')
0005.00
A
SLPAD2
30A
COLHDG('ADDRESS 2')
0006.00
A
SLPAD3
30A
COLHDG('ADDRESS 3')
0007.00
A
SLPZP
10A
COLHDG('ZIP CODE')
0008.00
A
K SLPNR

Figur a 2 ! DDS par cial par a el ar chivo de pantalla de mantenimiento

Antes del CHAIN

Despus del CHAIN


Jim

Despus de un
READ/EXFMT de la
Pantalla
James

Despus del
segundo
CHAIN
(OJO!)
Jim

Figur a 3 Secuencia de oper aciones sobr e FNAME


FMT DS .....IDsname....NODsExt-File++.............OccrLen+...............
0018.00
I@SAVE
E DSSLP001P
2
0019.00
I
SLPNR
XLPNR
.
.
.
C* En este punto, recuperamos el registro (sin bloqueo), y
C* lo presentamos en pantalla con un EXFMT WRITE/READ.
C* Ahora, vamos actualizar lo valores de los campos del
C* archivo con los valores de los campos de pantalla.
0494.00
0495.00
0496.00
0497.00

C
C
C
C

2
SLPNR
1

OCUR @SAVE
CHAINSLP001R
OCUR @SAVE
UPDATSLP001R

Figur a 4 DSMO declar acin y uso""

W&M Informatica, c.a.

Calle Negrn, Edif. Alto Centro, Piso 9 Oficina 9-H, 1050 Sabana Grande, Caracas
Tel./Fax: (0212) 761 55 09 / 5204 / 8214 / 0412 926 44 86 / 0414 334 62 09
e-mail wminfor matica@wminfor matica.com

80

Você também pode gostar