Files
MBS/PROYECTO/cgdir/cgmnrp001.4gl
T

190 lines
4.9 KiB
Plaintext

{
-------------------------------------------------------------------
PROGRAMA : CGMNRP001
OBJETIVO : Menu de Entradas de Diario.
PROGRAMADOR : Ing. Juan Francisco Soto
FECHA REALIZACION : Octubre 14, 1993
-------------------------------------------------------------------
}
SCHEMA smarmotech
GLOBALS
DEFINE bandera,p,idx,numero_msg,i,elije,r SMALLINT
DEFINE primera,continua CHAR(1)
DEFINE ejecuta CHAR(44)
END GLOBALS
DEFINE rp_entrada ARRAY[500] OF RECORD
entrada_no SMALLINT,
descripcion CHAR(60),
prog_4gl CHAR(9)
END RECORD,
p_compania RECORD LIKE companias.*,
usuarios,clave CHAR(50)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_compania.* FROM companias a
CALL cgmnrp001()
END MAIN
FUNCTION cgmnrp001()
WHENEVER ERROR CONTINUE
OPTIONS
PROMPT LINE 8,
HELP FILE "cgpray000.exe",
HELP KEY CONTROL-W,
MESSAGE LINE 24
CLEAR SCREEN
CALL pantalla()
DISPLAY "Entradas de Diario" AT 6,31
DISPLAY "cgmnrp001" AT 4,3 ATTRIBUTE(blue)
DECLARE busca CURSOR FOR
SELECT entrada_no,descripcion,prog_4gl FROM cgtb00011
WHERE status_t is null
ORDER BY 1
LET idx = 1
FOREACH busca INTO rp_entrada[idx].*
LET idx = idx + 1
#-----------------------------------------------------------------------------
END FOREACH
LET p = 0
LABEL vuelve:
LET r = 10
LET continua = "N"
IF i >= idx AND elije is null THEN
LET p = 0
END IF
FOR i = 1 to idx
# desplegue de opciones para la determinacion de la entrada
IF i > p THEN
IF rp_entrada[i].descripcion is not null THEN
DISPLAY i,"- ","(",rp_entrada[i].entrada_no,")",
rp_entrada[i].descripcion," ",
rp_entrada[i].prog_4gl AT r,1
LET r = r + 1
END IF
END IF
# Si la variable que incrementa la linea de desplegue es igual a 21 donde se
# encuentra la entiqueta de salida el desplegue se detiene
IF r > 19 THEN
LET p = i
LET continua = "S"
EXIT FOR
END IF
END FOR
IF continua = "S" THEN
DISPLAY "<Enter> Continuacion Menu" AT 20,1
END IF
DISPLAY "<Ctrl-C> Retorna Menu Anterior " AT 21,18
ATTRIBUTE (BOLD)
PROMPT " OPCION: " FOR elije HELP 2
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF elije is null THEN
CLEAR SCREEN
CALL pantalla()
DISPLAY "Entradas" AT 6,36
DISPLAY "cgmnrp001" AT 4,3 ATTRIBUTE(blue)
GOTO vuelve
END IF
LET r = 10
LET primera = "S"
FOR i = 1 to elije
IF r > 19 and primera = "S" THEN
LET r = 10
LET primera = "N"
END IF
LET r = r + 1
END FOR
LET r = r - 1
LET i = i - 1
DISPLAY i,"- ","(",rp_entrada[elije].entrada_no,")",
rp_entrada[elije].descripcion," ",
rp_entrada[elije].prog_4gl AT r,1 ATTRIBUTE(BOLD)
LET ejecuta = "fglrun %FGLPROG%\\",
rp_entrada[elije].prog_4gl clipped
RUN ejecuta WITHOUT WAITING
# DISPLAY ejecuta at 24,1
END FUNCTION
# Desplega pantalla con logo de la compania
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY "M A R M O T E C H, S. A." AT 4,17
ATTRIBUTE (REVERSE,blue)
DISPLAY fecha AT 4,70 ATTRIBUTE (blue)
DISPLAY "Sistema de Contabilidad General" AT 5,24
DISPLAY hora AT 6,73 ATTRIBUTE(blue)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
END FUNCTION
{
Esta funcion se utiliza para desplegar mensajes de errores en todos
los sistemas de Ray-O-Vac Dominicana.
Esta funcion busca el mensaje deseado en la tabla "msgtable" y lo
despliega en la linea de mensajes
}
FUNCTION msg(numero_msg)
DEFINE numero_msg SMALLINT
DEFINE descripcion CHAR (60)
SELECT desc_msg INTO descripcion FROM msgtable
WHERE cod_msg = numero_msg
IF status = NOTFOUND THEN
LET numero_msg = 22
SELECT desc_msg INTO descripcion FROM msgtable
WHERE cod_msg = numero_msg
ERROR descripcion
ELSE
ERROR descripcion
LET numero_msg = 0
END IF
END FUNCTION
FUNCTION integridad()
IF sqlca.sqlcode < 0 THEN
LET numero_msg = sqlca.sqlcode
CALL msg(numero_msg)
DISPLAY numero_msg AT 23,70
LET bandera = 1
LET status = 0
SLEEP 2
RETURN
END IF
RETURN
END FUNCTION