Files
MBS/PROYECTO/nodir/noprmt012.4gl
T

241 lines
6.8 KiB
Plaintext

{
===============================================================================
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"
"<Esc> Adiciona Registro <CTRL-C> Cancela Operacion"
let int_flag = false
CLEAR FORM
CALL nopcad012()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <CTRL-C> 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"
"<Esc> Actualiza Registro <CTRL-C> 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