Files
2026-09-22 20:38:51 -04:00

266 lines
7.7 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IRPRMT009
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Maquinas.
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Marzo 2, 1993.
------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "decomarmol" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprmt009()
END MAIN
FUNCTION irprmt009()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM irfmmt009 FROM "irfmmt009"
DISPLAY FORM irfmmt009
DISPLAY "irprmt009" AT 4,3
DISPLAY "Maquinas" AT 6,35
MENU
ON ACTION Adicionar
let int_flag = false
CLEAR FORM
CALL irpcad009()
ON ACTION buscar
let int_flag = false
CALL irpcmf009()
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION irpcad009()
# WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME maquinaria.*
## Verifica que el codigo no exista en el catalogo de maquinas. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD codigo
IF maquinaria.codigo is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD codigo
ELSE
SELECT * INTO maquinaria.* FROM irtb00009
WHERE codigo = maquinaria.codigo
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF maquinaria.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD codigo
END IF
DISPLAY BY NAME maquinaria.*
LET numero_msg = 12
CALL msg(numero_msg)
LET maquinaria.nombre = NULL
NEXT FIELD codigo
END IF
END IF
END IF
AFTER FIELD nombre
IF maquinaria.nombre IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre
END IF
AFTER FIELD serie
IF maquinaria.serie IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD serie
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF maquinaria.serie IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD serie
END IF
IF maquinaria.nombre IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre
ELSE
INSERT INTO irtb00009 VALUES (maquinaria.codigo, maquinaria.nombre,
maquinaria.unidad_med,
maquinaria.modelo,maquinaria.serie,
maquinaria.fabricante,
null, usuarios, getdate(), null, null)
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET maquinaria.codigo = NULL
LET maquinaria.nombre = NULL
NEXT FIELD codigo
END IF
AFTER FIELD fech_mod
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION irpcmf009()
## Aqui se prepara para la captura del criterio de seleccion
WHENEVER ERROR CONTINUE
CONSTRUCT criterio ON irtb00009.codigo FROM irtb00009.codigo
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM irtb00009 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO maquinaria.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
end if
DISPLAY BY NAME maquinaria.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO maquinaria.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME maquinaria.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO maquinaria.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME maquinaria.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO maquinaria.*
DISPLAY BY NAME maquinaria.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO maquinaria.*
DISPLAY BY NAME maquinaria.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF maquinaria.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME maquinaria.*
WITHOUT DEFAULTS
BEFORE FIELD codigo
NEXT FIELD nombre
AFTER FIELD nombre
IF maquinaria.nombre IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre
END IF
AFTER FIELD serie
IF maquinaria.serie IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD serie
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
UPDATE irtb00009 SET nombre = maquinaria.nombre,
modelo = maquinaria.modelo,
unidad_med = maquinaria.unidad_med,
serie = maquinaria.serie,
fabricante = maquinaria.fabricante,
us_mod = USUARIOS,
fech_mod = GETDATE()
WHERE codigo = maquinaria.codigo
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE irtb00009 SET status_t = "E",
us_mod = usuarios,
fech_mod = GETDATE()
WHERE codigo = maquinaria.codigo
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION