{ ----------------------------------------------------------------------- PROGRAMA : NOPRMT020 OBJETIVO : Maestra Porcentual de Accidente de Trabajo. PROGRAMADOR : Tadeo A. Ferreras F. FECHA : Marzo 22, 1995. ------------------------------------------------------------------------ } GLOBALS "noprgb000.4gl" ### Variable para almacenar los datos a insertar DEFINE notb18 RECORD LIKE notb00018.* ## Variable para manejar el nombre del empleado DEFINE nomb1,apell1 CHAR(15) FUNCTION noprmt020() CLEAR SCREEN CALL pantalla() OPTIONS FORM LINE 9, PROMPT LINE 12, ERROR LINE 24, COMMENT LINE 23 DISPLAY "noprmt020" AT 4,2 DISPLAY "Maestra Porcentual de Accidente de Trabajo" AT 6,19 LET formulario = formulario CLIPPED,"nofmmt021" OPEN FORM nofmmt021 FROM "nofmmt021" DISPLAY FORM nofmmt021 # Seccion de captura de informacion general de la generacion de # la nomina LET int_flag = false MENU "OPCIONES" COMMAND "Adicionar" "Presiones ESC para adicionar, CTRL-C para cancelar" CALL noprad020() CLEAR FORM COMMAND "Consulta-Modificar" "Presiones ESC para Actualizar, CTRL-C para cancelar" CLEAR FORM CALL noprmd020() COMMAND "Salir" EXIT MENU END MENU END FUNCTION #### Funcion para captura los datos de adiccion FUNCTION noprad020() INPUT BY NAME notb18.* AFTER FIELD num_emp IF notb18.num_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp END IF ## Verifica que el registro no exista SELECT a.* FROM notb00018 a WHERE a.num_emp = notb18.num_emp IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD num_emp END IF ### Busca el nombre del empleado SELECT a.nom1_emp,a.apell1_emp INTO nomb1,apell1 FROM adtb00003 a WHERE a.num_emp = notb18.num_emp AND (a.status_t = "I" OR a.status_t IS NULL) IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_emp END IF LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED DISPLAY BY NAME nombre AFTER FIELD Porc_accidente IF notb18.Porc_accidente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_accidente END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF INSERT INTO notb00018 VALUES (notb18.num_emp,notb18.porc_accidente, NULL,USER,CURRENT,NULL,NULL) END FUNCTION FUNCTION noprmd020() CONSTRUCT criterio ON a.num_emp,a.porc_accidente FROM num_emp,porc_accidente LET selec1 = "SELECT a.*,b.nom1_emp,b.apell1_emp FROM notb00018 a,adtb00003 b ", "WHERE a.num_emp = b.num_emp AND a.status_t IS NULL AND ", " (b.status_t IS NULL OR b.status_t = 'I') AND ",criterio CLIPPED, " ORDER BY a.num_emp " PREPARE comando FROM selec1 DECLARE busca SCROLL CURSOR FOR comando OPEN busca FETCH FIRST busca INTO notb18.*,nomb1,apell1 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED DISPLAY BY NAME notb18.*,nombre MENU "OPCIONES" COMMAND "Siguiente" FETCH NEXT busca INTO notb18.*,nomb1,apell1 IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED DISPLAY BY NAME notb18.*,nombre COMMAND "Anterior" FETCH PREVIOUS busca INTO notb18.*,nomb1,apell1 IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED DISPLAY BY NAME notb18.*,nombre COMMAND "Primero" FETCH FIRST busca INTO notb18.*,nomb1,apell1 IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED DISPLAY BY NAME notb18.*,nombre COMMAND "Ultimo" FETCH LAST busca INTO notb18.*,nomb1,apell1 IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF LET nombre = nomb1 CLIPPED," ",apell1 CLIPPED DISPLAY BY NAME notb18.*,nombre COMMAND "Escoger" ### Captura de informacion a actualizar INPUT BY NAME notb18.porc_accidente THRU notb18.fech_mod WITHOUT DEFAULTS AFTER FIELD Porc_accidente IF notb18.Porc_accidente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_accidente END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF UPDATE notb00018 SET porc_accidente = notb18.porc_accidente, us_mod = user, fech_mod = CURRENT WHERE @num_emp = notb18.num_emp LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY("L") "eLiminar" ### Elimina un registro en forma logica UPDATE notb00018 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE @num_emp = notb18.num_emp AND @status_t IS NULL COMMAND "Retornar" CLEAR FORM EXIT MENU END MENU END FUNCTION