Files
MBS/PROYECTO/codir/coprmt010.4gl
T

232 lines
6.0 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRMT010
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Paises
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : AGOSTO 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
CALL coprmt010()
END MAIN
FUNCTION coprmt010()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 24
OPEN FORM cofmmt010 FROM "cofmmt010"
DISPLAY FORM cofmmt010
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
CLEAR FORM
LET int_flag = false
CALL copcad010()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
LET int_flag = false
CALL copcmf010()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION copcad010()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME paises.*
## Verifica que el pais exista en el catalogo de paises. Si existe,
## entonces despliega los datos del registro existente.
BEFORE FIELD cod_pais
NEXT FIELD nom_pais
AFTER FIELD nom_pais
IF paises.nom_pais IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_pais
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF paises.nom_pais IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_pais
ELSE
SELECT MAX(a.cod_pais) INTO paises.cod_pais
FROM cotb00018 a
IF paises.cod_pais IS NULL THEN
LET paises.cod_pais = 0
END IF
LET paises.cod_pais= paises.cod_pais + 1
DISPLAY BY NAME paises.cod_pais
INSERT INTO cotb00018 VALUES (paises.cod_pais,
paises.nom_pais, null,SUSER_SNAME(), GETDATE(), null, null)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET paises.cod_pais = NULL
LET paises.nom_pais = NULL
NEXT FIELD cod_pais
END IF
END INPUT
END FUNCTION
FUNCTION copcmf010()
WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON cotb00018.* FROM cotb00018.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE * FROM cotb00018 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
FETCH FIRST datos INTO paises.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME paises.*
MENU "OPCIONES"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO paises.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME paises.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO paises.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME paises.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO paises.*
DISPLAY BY NAME paises.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO paises.*
DISPLAY BY NAME paises.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
IF paises.status_t != "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME paises.nom_pais,
paises.us_crea,
paises.fech_crea,
paises.us_mod,
paises.fech_mod WITHOUT DEFAULTS
AFTER FIELD nom_pais
IF paises.nom_pais IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_pais
END IF
AFTER INPUT
## Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE cotb00018 SET nom_pais = paises.nom_pais,
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE cod_pais = paises.cod_pais
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE cotb00018 SET status_t = "E"
WHERE cod_pais = paises.cod_pais
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION