{ ------------------------------------------------------------------------------- PROGRAMA : NOPRCS005 OBJETIVO : Consulta novedades calculadas por la generacion PROGRAMADOR : Ing. Juan Soto FECHA REALIZACION : Diciembre 17, 1993. ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE p_total DECIMAL(12,2) DEFINE descripcion CHAR(30) DEFINE emple RECORD num_emp LIKE notb00008.num_emp, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD DEFINE arr_emple ARRAY [500] OF RECORD num_emp LIKE notb00008.num_emp, nombre CHAR(43), cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD DEFINE primero RECORD num_nomi LIKE notb00008.num_nomi, tipo_emp LIKE notb00008.tipo_emp, num_emp LIKE notb00008.num_emp, departamento LIKE notb00008.departamento, nivel_emp LIKE notb00008.nivel_emp, cod_puesto LIKE notb00008.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, cod_mov SMALLINT END RECORD DEFINE idx_n SMALLINT FUNCTION noprcs005() #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM nofmcs005 FROM "nofmcs005" DISPLAY FORM nofmcs005 CALL PANTALLA() DISPLAY " Continua Consulta" AT 2,3 DISPLAY " Cancela Operacion" AT 2,50 DISPLAY "noprcs005" AT 4,3 DISPLAY "Empleados Por Novedades" AT 6,28 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF INPUT BY NAME primero.num_nomi,primero.tipo_emp, primero.cod_mov AFTER FIELD num_nomi IF primero.num_nomi is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF AFTER FIELD tipo_emp IF primero.tipo_emp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF AFTER FIELD cod_mov IF primero.cod_mov is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF SELECT descrip_mov INTO descripcion FROM notb00002 WHERE cod_mov = primero.cod_mov and status_t is null IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME descripcion AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT CALL arreglo1() END FUNCTION FUNCTION arreglo1() # Suma el total del codigo SELECT SUM(valor) INTO p_total FROM notb00008 WHERE num_nomi = primero.num_nomi and tipo_emp = primero.tipo_emp and cod_mov = primero.cod_mov # Busca los movimientos DECLARE accion1 CURSOR FOR SELECT a.num_emp,b.nom1_emp,b.apell1_emp,a.cantidad,a.valor FROM notb00008 a,adtb00003 b WHERE a.num_nomi = primero.num_nomi and a.tipo_emp = primero.tipo_emp and a.cod_mov = primero.cod_mov and a.departamento = b.departamento and a.num_emp = b.num_emp ORDER BY 1 LET idx_n = 1 FOREACH accion1 INTO emple.* CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET arr_emple[idx_n].num_emp = emple.num_emp LET arr_emple[idx_n].nombre = emple.nom1_emp clipped," ",emple.apell1_emp clipped LET arr_emple[idx_n].cantidad = emple.cantidad LET arr_emple[idx_n].valor = emple.valor LET idx_n = idx_n + 1 END FOREACH DISPLAY " " AT 21,2 IF idx_n = 1 THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME p_total attribute (bold) CALL set_count (idx_n - 1) DISPLAY ARRAY arr_emple TO consart.* ## Verifica si el usuario cancelo la operacion IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF CLEAR FORM END FUNCTION