{ =============================================================================== PROGRAMA : NOPRMT012 SISTEMA : Sistema de Nomina OBJETIVO : Mantenimiento para maestra de los dias del mes PROGRAMADOR : Juan Soto FECHA : Diciembre 8, 1993 =============================================================================== } GLOBALS "noprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave CALL noprmt012() END MAIN FUNCTION noprmt012() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 LET formulario = formulario CLIPPED,"nofmmt012" OPEN FORM nofmmt012 FROM "nofmmt012" DISPLAY FORM nofmmt012 DISPLAY "noprmt012" AT 4,3 DISPLAY "Dias de los meses del ano" AT 6,27 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL nopcad012() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL nopcmf012() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION nopcad012() CLEAR FORM # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME dias_mes.* AFTER FIELD cod_mes IF dias_mes.cod_mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mes END IF SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = dias_mes.cod_mes IF status = NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_mes END IF DISPLAY BY NAME nombre_mes AFTER FIELD dias IF dias_mes.dias IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD dias END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT INSERT INTO notb00012 VALUES(dias_mes.cod_mes,dias_mes.dias, usuarios,getdate(),NULL,NULL) LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION FUNCTION nopcmf012() CLEAR FORM ## Aqui se prepara para la captura del criterio de seleccion # WHENEVER ERROR CONTINUE CONSTRUCT BY NAME criterio ON cod_mes,dias IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF LET SELEC = "SELECT UNIQUE * FROM notb00012 ", " WHERE ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO dias_mes.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF END IF SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = dias_mes.cod_mes DISPLAY BY NAME dias_mes.*,nombre_mes MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO dias_mes.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT UNIQUE a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = dias_mes.cod_mes DISPLAY BY NAME dias_mes.*,nombre_mes COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO dias_mes.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT UNIQUE a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = dias_mes.cod_mes DISPLAY BY NAME dias_mes.*,nombre_mes COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO dias_mes.* SELECT UNIQUE a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = dias_mes.cod_mes DISPLAY BY NAME dias_mes.*,nombre_mes LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO dias_mes.* SELECT UNIQUE a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = dias_mes.cod_mes DISPLAY BY NAME dias_mes.*,nombre_mes LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" INPUT BY NAME dias_mes.dias WITHOUT DEFAULTS AFTER FIELD dias IF dias_mes.dias IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD dias END IF EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF UPDATE notb00012 SET dias = dias_mes.dias, us_mod = usuarios, fech_mod = getdate() WHERE cod_mes = dias_mes.cod_mes LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" DELETE FROM notb00012 WHERE cod_mes = dias_mes.cod_mes LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION