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