A veces nos hemos visto en la situación de hacer un programa que trabaje 2 tablas (archivos) con la misma estructura (mismo formato de registro y campos) tenemos que modificar unos datos en la primera tabla y grabar las modificaciones en la segunda tabla. Y nos vemos con la necesidad de mover campo por campo a la segunda tabla. Buscamos en internet y como casi siempre es urgente hacemos las cosas mas simples pero laboriosas a la vez.
Si la tabla contiene pocos campos eso no es ningún problema, pero si hablamos de una tabla con mas de 20 campos resulta algo muy tedioso y hace engorroso nuestro código.
En cobol es realmente fácil hacerlo, solo es mover un registro al otro y listo.
DATA DIVISION.
FILE SECTION.
01 REG-FILE1.
COPY DDS-ALL-FORMATS OF ARCHIVO1.
01 REG-FILE2.
COPY DDS-ALL-FORMATS OF ARCHIVO2.
...
MOVE REG-FILE1 TO REG-FILE2
WRITE REG-FILE2
Pero… y en RPG???
Tienes varias opciones:
1.- Declaras la primera tabla con la hoja I, para la segunda tablala Hoja O y haces uso del código de operación EXCEPT para grabar.
2.- O haces un SQL, haces el cálculo en los campos y derivas el resultado a la segunda tabla. Pero si las modificaciones son muy complejas? Accesando a otra tabla por ejemplo? Se hace complicado.
Yo hago uso de las “bondades” del ILE. Aquí un ejemplo sencillo pero útil.
Pueden encontrar mas detalles de la palabra clave EXTNAME en los muchos tutoriales que encontramos en internet, pero la finalidad de esta demostración es su aplicación a los problemas que se nos presentan diariamente y que mayormente no damos la solución mas eficiente o idonea por falta de tiempo o porque no la encontramos oportunamente. Espero les haya servido y les sea de gran utilidad. Saludos.
Si la tabla contiene pocos campos eso no es ningún problema, pero si hablamos de una tabla con mas de 20 campos resulta algo muy tedioso y hace engorroso nuestro código.
En cobol es realmente fácil hacerlo, solo es mover un registro al otro y listo.
DATA DIVISION.
FILE SECTION.
01 REG-FILE1.
COPY DDS-ALL-FORMATS OF ARCHIVO1.
01 REG-FILE2.
COPY DDS-ALL-FORMATS OF ARCHIVO2.
...
MOVE REG-FILE1 TO REG-FILE2
WRITE REG-FILE2
Pero… y en RPG???
Tienes varias opciones:
1.- Declaras la primera tabla con la hoja I, para la segunda tabla
2.- O haces un SQL, haces el cálculo en los campos y derivas el resultado a la segunda tabla. Pero si las modificaciones son muy complejas? Accesando a otra tabla por ejemplo? Se hace complicado.
Yo hago uso de las “bondades” del ILE. Aquí un ejemplo sencillo pero útil.
farchivo1 ip e disk farchivo2 o a e disk rename(regfile1:reg) prefix(x) * declaracion Estructura de Datos Externa d reg1 e ds extname(archivo1) d reg2 e ds extname(archivo2) prefix(x) * calculo c eval campo3 = campo3 + 2.85 * mueve todo el registro c move reg1 reg2 * graba el registro c write reg |
No hay comentarios:
Publicar un comentario