IDENTIFICATION DIVISION. PROGRAM-ID. PRMODIF. ****************************************************************** * PROGRAMA QUE MODIFICA UN REGISTRO DE LA TABLA * *================================================================* * E N V I R O N M E N T D I V I S I O N * *================================================================* * ENVIRONMENT DIVISION. * *===================== CONFIGURATION SECTION. *===================== * SPECIAL-NAMES. DECIMAL-POINT IS COMMA. * *================================================================* * D A T A D I V I S I O N * *================================================================* * DATA DIVISION. * *======================= WORKING-STORAGE SECTION. *======================= * * * ------------------------- * AREAS PARA COMUNICACIONES * ------------------------- EXEC SQL INCLUDE SQLCA END-EXEC. * * * ----------------- * CAMPOS DE TRABAJO * ----------------- 01 VARIABLES-HOST. 05 TABLA2-CAMPO1 PIC X. 05 TABLA2-CAMPO2 PIC X. 05 TABLA2-CAMPO4 PIC XX. 05 TABLA2-CAMPO5 PIC XX. * *=============== *-> Tabla DB2 : TBPRU02 - COPY CON LA DECLARE DE LA TABLA. * LINKAGE SECTION. *=============== * 01 ENTRADA. 05 ENT-CAMPO1 PIC X. 05 ENT-CAMPO2 PIC X. 05 ENT-CAMPO3 PIC XX. 05 ENT-CAMPO4 PIC XX. 05 ENT-TIMESTAMP PIC X(26). * . *================================================================* * P R O C E D U R E D I V I S I O N * *================================================================* * PROCEDURE DIVISION USING ENTRADA SALIDA. * ****************************************************************** * | 0000 - PRINCIPAL * *--|------------------+----------><----------+-------------------* * 1| EJECUTA EL INICIO DEL PROGRAMA * * 2| EJECUTA EL PROCESO DEL PROGRAMA * * 3| EJECUTA EL FINAL DEL PROGRAMA * ****************************************************************** 00000-PRINCIPAL. * *-> <1> * PERFORM 10000-INICIO * *-> <2> * PERFORM 20000-PROCESO * *-> <3> * PERFORM 90000-FINAL . ****************************************************************** * | 10000 - INICIO * *--|------------------+----------><----------+-------------------* * | SE REALIZA EL TRATAMIENTO DE INICIO: * * 1| Inicialización de Áreas de Trabajo * * 2| Validacion datos de entrada * ****************************************************************** 10000-INICIO. * *-> <1> * INITIALIZE SALIDA VARIABLES-HOST * *-> <2> * * Añadir las validaciones necesarias de los campos de entrada * IF ENT-CAMPO1 EQUAL SPACES OR LOW-VALUES DISPLAY 'LA CLAVE(CAMPO1) ESTA VACIA' PERFORM 90000-FINAL END-IF . * ****************************************************************** * | 20000 - PROCESO * *--|------------------+----------><----------+-------------------* * | SE REALIZA EL TRATAMIENTO DE LOS DATOS: * * 1| Realiza el tratamiento de cada registro leido * ****************************************************************** 20000-PROCESO. * *-> <1> * PERFORM 20100-CONSULTA-TIMESTAMP IF ENT-TIMESTAMP NOT EQUAL TABLA2-TIMESTAMP DISPLAY 'ERROR: REGISTRO MODIFICADO POR OTRO USUARIO' PERFORM 90000-FINAL ELSE PERFORM 20200-MOVER-A-TABLA2 * *-> Instr. SQL : UPDCUR - Actualizar Último Registro Leído EXEC SQL UPDATE TBPRU02 SET (CAMPO2 = :TABLA2-CAMPO2, CAMPO3 = :TABLA2-CAMPO3, CAMPO4 = :TABLA2-CAMPO4, TIMESTAMP = CURRENT TIMESTAMP) WHERE CAMPO1 = :TABLA2-CAMPO1 END-EXEC * EVALUATE TRUE WHEN SQLCODE EQUAL ZERO CONTINUE WHEN SQLCODE EQUAL +100 * No Existe DISPLAY 'NO SE ENCONTRO NINGUN REGISTRO' PERFORM 90000-FINAL WHEN OTHER * Error al Seleccionar Un Registro DISPLAY 'ERROR AL HACER LA SELECT. SQLCODE: 'SQLCODE PERFORM 90000-FINAL END-EVALUATE * PERFORM 20300-MOVER-A-SALIDA * . * ****************************************************************** * | 20100 - CONSULTA TIMESTAMP * *--|------------------+----------><----------+-------------------* * | * * 1| Consulta del Timestamp * ****************************************************************** 20100-CONSULTA-TIEMSTAMP. EXEC SQL SELECT CAMPO1, TIMESTAMP INTO :TABLA2-CAMPO1, :TABLA2-TIMESTAMP FROM TBPRU02 WHERE CAMPO1 = :ENT-CAMPO1 ORDER BY CAMPO1 END-EXEC EVALUATE TRUE WHEN SQLCODE EQUAL ZERO CONTINUE WHEN SQLCODE EQUAL +100 * No Existe DISPLAY 'NO SE ENCONTRO NINGUN REGISTRO' PERFORM 90000-FINAL WHEN OTHER * Error al Seleccionar Un Registro DISPLAY 'ERROR AL HACER LA SELECT. SQLCODE: 'SQLCODE PERFORM 90000-FINAL END-EVALUATE . * ****************************************************************** * | 20200-MOVER-A-TABLA2 * *--|------------------+----------><----------+-------------------* * | * ****************************************************************** 20200-MOVER-A-TABLA2. * MOVE ENT-CAMPO1 TO TABLA2-CAMPO1 MOVE ENT-CAMPO2 TO TABLA2-CAMPO2 MOVE ENT-CAMPO3 TO TABLA2-CAMPO3 MOVE ENT-CAMPO4 TO TABLA2-CAMPO4 . * ****************************************************************** * | 20300-MOVER-A-SALIDA * *--|------------------+----------><----------+-------------------* * | * ****************************************************************** 20300-MOVER-A-SALIDA. * MOVE TABLA2-CAMPO1 TO SAL-CAMPO1 MOVE TABLA2-CAMPO2 TO SAL-CAMPO2 MOVE TABLA2-CAMPO4 TO SAL-PRI-CAMPO3 MOVE TABLA2-CAMPO5 TO SAL-SEC-CAMPO3 . * ****************************************************************** * | 90000 - FINAL * *--|------------------+----------><----------+-------------------* * | FINALIZA LA EJECUCION DEL PROGRAMA * ****************************************************************** 90000-FINAL. * * GOBACK . *================ Fin del Programa PRMODIF ================*