{ ------------------------------------------------------------------- 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 " Continuacion Menu" AT 20,1 END IF DISPLAY " 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