Files
MBS/PROYECTOS/irdir/irprmt007.4gl
T

263 lines
7.4 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IRPRMT007
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Unidades de Medidas.
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Agosto 1, 1992.
------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL irprmt007()
END MAIN
FUNCTION irprmt007()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM irfmmt007 FROM "irfmmt007"
DISPLAY FORM irfmmt007
CALL pantalla()
DISPLAY "irprmt007" AT 4,3
DISPLAY "Unidades de Medidas" AT 6,30
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
let int_flag = false
CLEAR FORM
CALL irpcad007()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
let int_flag = false
CALL irpcmf007()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION irpcad007()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME medidas.*
## Verifica que el codigo no exista en el catalogo de unidades. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD codigo_unidad
IF medidas.codigo_unidad IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD codigo_unidad
ELSE
SELECT * INTO medidas.* FROM intb00007
WHERE codigo_unidad = medidas.codigo_unidad
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF medidas.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD codigo_unidad
END IF
DISPLAY BY NAME medidas.*
LET numero_msg = 12
CALL msg(numero_msg)
LET medidas.descripcion = NULL
NEXT FIELD codigo_unidad
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
END IF
AFTER FIELD descripcion
IF medidas.descripcion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descripcion
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF medidas.descripcion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descripcion
ELSE
INSERT INTO intb00007 VALUES (medidas.codigo_unidad,
medidas.descripcion,null, USER, CURRENT, null, null)
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET medidas.codigo_unidad = NULL
LET medidas.descripcion = NULL
NEXT FIELD codigo_unidad
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION irpcmf007()
## Aqui se prepara para la captura del criterio de seleccion
WHENEVER ERROR CONTINUE
CONSTRUCT criterio ON intb00007.* FROM intb00007.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM intb00007 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
CALL integridad()
if bandera = 1 THEN
CLEAR SCREEN
RETURN
end if
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO medidas.*
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 SCREEN
RETURN
end if
end if
DISPLAY BY NAME medidas.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO medidas.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME medidas.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO medidas.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME medidas.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO medidas.*
DISPLAY BY NAME medidas.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO medidas.*
DISPLAY BY NAME medidas.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF medidas.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME medidas.descripcion,
medidas.us_crea,
medidas.fech_crea,
medidas.us_mod,
medidas.fech_mod WITHOUT DEFAULTS
AFTER FIELD descripcion
IF medidas.descripcion IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descripcion
END IF
#### Verifica si el usuario presiono la tecla <Ctrl-C>
AFTER 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 SCREEN
RETURN
end if
UPDATE intb00007 SET descripcion = medidas.descripcion,
us_mod = USER,
fech_mod = CURRENT
WHERE codigo_unidad = medidas.codigo_unidad
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE intb00007 SET status_t = "E"
WHERE codigo_unidad = medidas.codigo_unidad
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION