{ ------------------------------------------------------------------------------- PROGRAMA : INPRRP004 OBJETIVO : REPORTE DIAS DE PRODUCCION PROGRAMADOR : Ing. Juan Francisco Soto FECHA REALIZACION : Agosto 19, 1992 MODIFICADO POR : Ing. Juan Fco. Soto FECHA ULT. MODIFICA : Julio 19, 1993. DESCRIPCION : Agregar Columna Costo Standard para cantidades mayores a una cantidad de dias especificada. ------------------------------------------------------------------------------- } GLOBALS "inprgb000.4gl" DEFINE sale CHAR(1) DEFINE p_ano CHAR(4) DEFINE codigo_act CHAR(10) DEFINE costo_e DECIMAL(12,4) # Variable que se incrementa para imprimir el arreglo DEFINE i SMALLINT # Arreglo Para los equivalentes DEFINE equivalentes DYNAMIC ARRAY OF RECORD codigo_p CHAR(10), descrip_p CHAR(30), unidad_p CHAR(3), existe_p DECIMAL(12,2), consumo_p DECIMAL(12,2), dia_llegada_p SMALLINT, costo_p DECIMAL(12,4), codigo_e CHAR(10), descrip_e CHAR(30), unidad_e CHAR(4), existe_e DECIMAL(12,2), consumo_e DECIMAL(12,2), dia_llegada_e SMALLINT, costo_e DECIMAL(12,4) END RECORD DEFINE valor1 DECIMAL(12,2) 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 SELECT * INTO p_companias.* FROM companias CALL inprrp004() END MAIN FUNCTION inprrp004() # Variable que toma el valor de los dias que se va a valorar el reporte DEFINE c_dias SMALLINT # Variables varias para el control de busqueda de las informaciones DEFINE selec1,selec2,selec3,select_bal CHAR(1000) DEFINE mes CHAR(2) DEFINE tiene,salir,primera CHAR(1) DEFINE idx_3,idx_1,idx_b SMALLINT DEFINE dias1 SMALLINT # Record para la validacion de los equivalente DEFINE equivale RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, cod_n_e LIKE intb00001.cod_n, cod_grupo_e LIKE intb00001.cod_grupo, cod_tipo_e LIKE intb00001.cod_tipo, cod_sec_e LIKE intb00001.cod_sec, descrip_e LIKE intb00001.descrip_esp, unidad_e CHAR(34), existe_e DECIMAL(12,2), consumo_e DECIMAL(12,2), dia_llegada_e INTEGER END RECORD # Record para la validacion de los costos del material DEFINE costo RECORD mes1 CHAR(2), mes2 CHAR(2), cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, costo_st LIKE intb00013.costo_st END RECORD # Record para el consumo de los materiales DEFINE consume RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, consumo DECIMAL(14,2) END RECORD # Record para la impresion del reporte, estas variables se validan con el # select que esta en la variable selec DEFINE estadis RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, dia_llegada LIKE intb00002.dia_llegada, consumo LIKE intb00006.cantidad_1, existe LIKE intb00002.existencia, valor DECIMAL(12,4), costo DECIMAL(12,4), dias INTEGER END RECORD # Record para las existencia de la materia prima DEFINE balances RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, balance LIKE intb00006.cantidad_2 END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM infmrp004 FROM "infmrp004" DISPLAY FORM infmrp004 CALL pantalla() DISPLAY "inprrp004" AT 4,3 DISPLAY "Dias de Produccion " AT 6,30 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,c_dias AFTER FIELD c_dias IF c_dias is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD c_dias END IF AFTER FIELD fech_in IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_fi END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET dias1 = datos_cons.fech_fi - datos_cons.fech_in LET dias1 = dias1 + 1 LET p_ano = year(datos_cons.fech_fi) display dias1 at 24,1 CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia LET opt1 = fgl_winquestion("Atencion","Desea Reporte por Pantalla?", "no","yes|no","question",0) IF opt1 = "yes" THEN START REPORT estadistica TO SCREEN ELSE START REPORT estadistica TO archivo END IF # Busqueda de los equivalentes LET selec2 = "SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.cod_n_e,b.cod_grupo_e,", " b.cod_tipo_e,b.cod_sec_e ", "FROM intb00004 b ", "WHERE b.status_t is null and ",criterio clipped," ORDER BY 1,2,3,4 " DISPLAY "<< Estoy Buscando Equivalentes... Espere>>" AT 19,14 PREPARE comando1 FROM selec2 DECLARE busca1 SCROLL CURSOR FOR comando1 OPEN busca1 # Busqueda de los costos de los materiales LET selec1 = "SELECT b.mes_ini,max(b.mes_fin),b.cod_n,b.cod_grupo,b.cod_tipo, ", " b.cod_sec,b.costo_st ", "FROM intb00013 b ", "WHERE ",criterio clipped," and ano = ? ", "GROUP BY b.mes_ini,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.costo_st ORDER BY b.mes_ini,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.costo_st " DISPLAY "<< Estoy Buscando Costos... Espere >>" AT 19,14 PREPARE comando FROM selec1 DECLARE busca3 SCROLL CURSOR FOR comando OPEN busca3 USING p_ano LET select_bal = "SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,sum(b.cantidad_2) ", "FROM intb00006 b ", "WHERE ", criterio clipped," and b.status_t is null and b.fecha <= ? ", "GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec " DISPLAY "<< Estoy Buscando Balances Iniciales >>" AT 19,14 PREPARE busca_balan FROM select_bal DECLARE material_bal SCROLL CURSOR FOR busca_balan OPEN material_bal USING datos_cons.fech_fi LET SELEC = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,b.dia_llegada ", "FROM intb00001 a,intb00002 b ", "WHERE ",criterio clipped," AND a.cod_n = b.cod_n AND ", " a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND ", " a.cod_sec = b.cod_sec AND a.status_t is null ", "GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,b.dia_llegada ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,b.dia_llegada" LET selec3 = "SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,sum(b.cantidad_2) ", "FROM intb00006 b ", "WHERE ",criterio clipped," AND b.status_t is null AND ", " b.fecha between ? AND ? AND b.cod_mov in(36,62,48) ", "GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec" DISPLAY "<< Buscando Consumo Material... Por Favor Espere >>" AT 19,14 ATTRIBUTE (REVERSE) PREPARE comando2 FROM selec3 DECLARE consu SCROLL CURSOR FOR comando2 OPEN consu USING datos_cons.fech_in,datos_cons.fech_fi DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion # Loop principal para la busqueda de la materia prima y el consumo LET idx = 1 LET salir = "N" WHILE salir != "S" FETCH accion INTO estadis.* IF status = notfound THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET estadis.consumo = 0 LET estadis.existe = 0 LET estadis.valor = 0 LET estadis.costo = 0 # Busca el primer registro del record consume #FETCH FIRST consu INTO consume.* LET idx_b = 1 LET sale = "N" WHILE sale != "S" FETCH ABSOLUTE idx_b consu INTO consume.* IF status = notfound THEN LET sale = "S" EXIT WHILE END IF LET idx_b = idx_b + 1 IF consume.cod_n = estadis.cod_n AND consume.cod_grupo = estadis.cod_grupo AND consume.cod_Tipo = estadis.cod_tipo AND consume.cod_sec = estadis.cod_sec THEN LET estadis.consumo = consume.consumo LET sale = "S" LET idx_b = 1 EXIT WHILE END IF END WHILE # Chequea que el codigo buscado no este como equivalente en el arreglo LET codigo_act = estadis.cod_n using "&","-", estadis.cod_grupo using "&","-", estadis.cod_tipo using "&&","-", estadis.cod_sec using "&&&" IF estadis.consumo IS NULL THEN LET estadis.consumo = 0 END IF LET tiene = "N" FOR i = 1 TO idx IF codigo_act = equivalentes[i].codigo_e THEN LET tiene = "N" CONTINUE WHILE END IF END FOR # Loop para busqueda del balance de la materia prima LET salir = "N" LET Idx_b = 1 WHILE salir != "S" FETCH ABSOLUTE idx_b material_bal INTO balances.* IF status = notfound THEN LET idx_b = 1 LET salir = "S" EXIT WHILE END IF LET idx_b = idx_b + 1 IF balances.cod_n = estadis.cod_n AND balances.cod_grupo = estadis.cod_grupo AND balances.cod_tipo = estadis.cod_tipo AND balances.cod_sec = estadis.cod_sec THEN IF balances.balance IS NULL THEN LET balances.balance = 0 END IF LET estadis.existe = balances.balance LET salir = "S" LET idx_b = 1 EXIT WHILE END IF END WHILE # Busqueda del costo del material LET salir = "N" LET idx_1 = 1 WHILE salir != "S" FETCH ABSOLUTE idx_1 busca3 INTO costo.* IF status = notfound THEN LET idx_1 = 1 LET salir = "S" EXIT WHILE END IF LET idx_1 = idx_1 + 1 IF costo.cod_n = estadis.cod_n AND costo.cod_grupo = estadis.cod_grupo AND costo.cod_tipo = estadis.cod_tipo AND costo.cod_sec = estadis.cod_sec THEN LET estadis.costo = costo.costo_st LET idx_1 = 1 LET salir = "S" EXIT WHILE END IF END WHILE # Busqueda de los equivalentes LET salir = "N" LET idx_3 = 1 WHILE salir != "S" FETCH ABSOLUTE idx_3 busca1 INTO equivale.* IF status = notfound THEN LET idx_3 = 1 LET salir = "S" EXIT WHILE END IF LET idx_3 = idx_3 + 1 IF equivale.cod_n = estadis.cod_n AND equivale.cod_grupo = estadis.cod_grupo AND equivale.cod_tipo = estadis.cod_tipo AND equivale.cod_sec = estadis.cod_sec THEN SELECT a.descrip_esp,a.unidad_med,b.dia_llegada INTO equivale.descrip_e,equivale.unidad_e,equivale.dia_llegada_e FROM intb00001 a,intb00002 b WHERE a.cod_n=equivale.cod_n_e and a.cod_grupo=equivale.cod_grupo_e and a.cod_tipo=equivale.cod_tipo_e and a.cod_sec=equivale.cod_sec_e and b.cod_n=equivale.cod_n_e and b.cod_grupo=equivale.cod_grupo_e and b.cod_tipo=equivale.cod_tipo_e and b.cod_sec=equivale.cod_sec_e and b.status_t is null SELECT SUM(cantidad_2) INTO equivale.consumo_e FROM intb00006 WHERE cod_n = equivale.cod_n_e and cod_grupo = equivale.cod_grupo_e and cod_tipo=equivale.cod_tipo_e and cod_sec=equivale.cod_sec_e and status_t is null and cod_mov = 36 and fecha between datos_cons.fech_in and datos_cons.fech_fi SELECT SUM(cantidad_2) INTO equivale.existe_e FROM intb00006 WHERE cod_n=equivale.cod_n_e and cod_grupo=equivale.cod_grupo_e and cod_tipo=equivale.cod_tipo_e and cod_sec=equivale.cod_sec_e and status_t is null and fecha <= datos_cons.fech_fi # Busca el costo del equivalente SELECT costo_st INTO costo_e FROM intb00013 WHERE cod_n = equivale.cod_n_e and cod_grupo = equivale.cod_grupo_e and cod_tipo=equivale.cod_tipo_e and cod_sec=equivale.cod_sec_e and status_t is null and ano = p_ano IF status = notfound THEN LET status = 0 END IF LET equivalentes[idx].codigo_p = estadis.cod_n using "&","-", estadis.cod_grupo using "&","-", estadis.cod_tipo using "&&","-", estadis.cod_sec using "&&&" LET equivalentes[idx].codigo_e = equivale.cod_n_e using "&","-", equivale.cod_grupo_e using "&","-", equivale.cod_tipo_e using "&&","-", equivale.cod_sec_e using "&&&" LET equivalentes[idx].descrip_p = estadis.descrip_esp LET equivalentes[idx].unidad_p = estadis.unidad_med LET equivalentes[idx].existe_p = estadis.existe LET equivalentes[idx].consumo_p = estadis.consumo LET equivalentes[idx].dia_llegada_p = estadis.dia_llegada LET equivalentes[idx].costo_p = estadis.costo LET equivalentes[idx].descrip_e = equivale.descrip_e LET equivalentes[idx].unidad_e = equivale.unidad_e LET equivalentes[idx].existe_e = equivale.existe_e LET equivalentes[idx].consumo_e = equivale.consumo_e LET equivalentes[idx].dia_llegada_e = equivale.dia_llegada_e LET equivalentes[idx].costo_e = costo_e LET tiene = "S" LET idx_3 = 1 LET idx = idx + 1 EXIT WHILE END IF END WHILE # Se multiplica por -1 por que el movimiento 36 es negativo IF estadis.consumo IS NULL THEN LET estadis.consumo = 0 END IF LET estadis.consumo = estadis.consumo * -1 # Calculo para los dias de produccion IF estadis.consumo > 0 THEN LET estadis.dias = (estadis.existe / estadis.consumo) * dias1 END IF # Calculo para el exedente de la existencia apartir de los dias de exeso # especificado LET estadis.valor = 0 IF estadis.dias IS NULL THEN LET estadis.dias = 0 END IF IF (c_dias IS NOT NULL) AND (estadis.dias IS NOT NULL AND estadis.dias >= c_dias) AND (estadis.existe IS NOT NULL AND estadis.existe <> 0) THEN IF estadis.dias != 0 THEN LET valor1 = (estadis.existe * c_dias)/estadis.dias LET estadis.valor = (estadis.existe - valor1) * estadis.costo END IF END IF # Control para salir el material, si: tiene = "S" es equivalente # tiene = "N" es principal IF tiene = "N" THEN OUTPUT TO REPORT estadistica(estadis.*,dias1,c_dias) LET estadis.dias = 0 #LET estadis.existe = 0 END IF LET tiene = "N" LET salir = "N" END WHILE FINISH REPORT estadistica RUN imprime END FUNCTION REPORT estadistica(x,dias2,c_dias) DEFINE x RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, dia_llegada LIKE intb00002.dia_llegada, consumo LIKE intb00006.cantidad_1, existe LIKE intb00002.existencia, valor DECIMAL(12,3), costo DECIMAL(12,4), dias INTEGER END RECORD DEFINE c_dias SMALLINT DEFINE primera CHAR(1) DEFINE codigo_ant CHAR(10) DEFINE consume DECIMAL (12,2) DEFINE normal,dsiete,negra,doble,doble_off,borra,comp_off CHAR(2) DEFINE promedio DECIMAL(10,2) DEFINE doce,comp CHAR(3) DEFINE dias,no_r SMALLINT DEFINE dias2 SMALLINT DEFINE hora CHAR(5), pusuario CHAR(9) DEFINE t_valor,existe_p,consumo_p DECIMAL(12,2) OUTPUT LEFT MARGIN 1 FORMAT PAGE HEADER IF no_r is null THEN LET no_r = 0 END IF SELECT a.usuario INTO pusuario FROM seg0001 a WHERE a.usuario = user IF pusuario != "usgfi01" THEN LET doble = ASCII 14 LET doble_off = ASCII 20 LET negra = ASCII 27, ASCII 69 LET borra = ASCII 27, ASCII 70 LET comp = ASCII 15 LET dsiete = ASCII 17 LET comp_off = ASCII 18 LET normal = ASCII 27, ASCII 80 ELSE LET doble = ASCII 001 LET doble_off = ASCII 002 LET negra = ASCII 027, ASCII 098 LET borra = ASCII 027, ASCII 099 LET comp = ASCII 31 LET comp_off = ASCII 029 LET doce = ASCII 030 LET normal = ASCII 27, ASCII 80 END IF LET hora = time LET lj = (126 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp PRINT COLUMN 1, "inprrp004", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 119, "Pag. ", pageno USING "###" PRINT COLUMN 40, " Sistema de Inventario de Materia Prima", COLUMN 119, today using "dd/mm/yyyy" PRINT COLUMN 40, " Dias De Produccion", COLUMN 122, hora SKIP 1 LINES PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yyyy", COLUMN 20, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------" PRINT COLUMN 50, "Consumo", COLUMN 79, "Dias de" , COLUMN 92, "Dias de", COLUMN 102, "Costo", COLUMN 113, "Valor" PRINT COLUMN 1, "Codigo", COLUMN 14, "Descripcion", COLUMN 50, "Del Periodo", COLUMN 68, "Existencia", COLUMN 79, "Inventario", COLUMN 92, "Llegada", COLUMN 102, "Standard", COLUMN 112, "Exceso"," ",c_dias using "###"," dias" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------" SKIP 1 LINE ON EVERY ROW IF t_valor is null THEN LET t_valor = 0 END IF PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", COLUMN 14, x.descrip_esp, COLUMN 45, x.unidad_med, COLUMN 48, x.consumo USING "##,###,###.##", COLUMN 64, x.existe USING "---,---,---.##", COLUMN 83, x.dias USING "######" , COLUMN 96, x.dia_llegada using "###", COLUMN 102, x.costo using "###,###.####", COLUMN 114, x.valor using "#,###,###.##" LET no_r = no_r + 1 LET consumo_p = 0 LET existe_p = 0 IF x.valor is not null THEN LET t_valor = t_valor + x.valor END IF ON LAST ROW SKIP 2 LINES PRINT COLUMN 1, "==================================================", "==================================================", "==========================" PRINT COLUMN 50, "E Q U I V A L E N T E S" SKIP 1 LINE LET x.dias = 0 LET x.valor = 0 LET existe_p = 0 LET consumo_p = 0 FOR i = 1 TO idx IF equivalentes[i].codigo_p is not null THEN IF codigo_ant != equivalentes[i].codigo_p THEN LET codigo_ant = equivalentes[i].codigo_p LET primera = "S" END IF IF equivalentes[i].consumo_p is null THEN LET equivalentes[i].consumo_p = 0 END IF IF equivalentes[i].consumo_e is null THEN LET equivalentes[i].consumo_e = 0 END IF IF equivalentes[i].existe_p is null THEN LET equivalentes[i].existe_p = 0 END IF IF equivalentes[i].existe_e is null THEN LET equivalentes[i].existe_e = 0 END IF LET existe_p = equivalentes[i].existe_p + equivalentes[i].existe_e LET consumo_p = equivalentes[i].consumo_p + equivalentes[i].consumo_e # Calculo para los dias de produccion IF consumo_p < 0 THEN LET consumo_p = consumo_p * -1 END IF IF consumo_p > 0 THEN LET x.dias = (existe_p / consumo_p) * dias2 END IF # Calculo para el exedente de la existencia apartir de los dias de exeso # especificado LET x.costo = (equivalentes[i].costo_p + equivalentes[i].costo_e) / 2 IF x.dias > c_dias THEN LET valor1 = (existe_p * c_dias)/x.dias LET x.valor = (existe_p - valor1) * x.costo END IF PRINT COLUMN 1, equivalentes[i].codigo_p, COLUMN 14, equivalentes[i].descrip_p, COLUMN 45, equivalentes[i].unidad_p, COLUMN 48, equivalentes[i].consumo_p using "##,###,###.##", COLUMN 64, equivalentes[i].existe_p using "--,---,---.##", COLUMN 96, equivalentes[i].dia_llegada_p using "####", COLUMN 102, equivalentes[i].costo_p using "##,###.####" PRINT COLUMN 1, equivalentes[i].codigo_e, COLUMN 14, equivalentes[i].descrip_e, COLUMN 45, equivalentes[i].unidad_e, COLUMN 48, equivalentes[i].consumo_e using "##,###,###.##", COLUMN 64, equivalentes[i].existe_e using "--,---,---.##", COLUMN 96, equivalentes[i].dia_llegada_e using "####", COLUMN 102, equivalentes[i].costo_e using "##,###.####" IF x.dias < c_dias THEN LET x.valor = 0 END IF IF x.valor is null THEN LET x.valor = 0 END IF LET t_valor = t_valor + x.valor PRINT COLUMN 48, "--------------", COLUMN 64, "--------------", COLUMN 102, "-------------" PRINT COLUMN 48, consumo_p using "##,###,###.##", COLUMN 64, existe_p using "--,---,---.##", COLUMN 83, x.dias using "####", COLUMN 102, x.costo using "##,###.####", COLUMN 112, x.valor using "##,###,###.##" SKIP 1 LINE LET no_r = no_r + 2 END IF END FOR PRINT COLUMN 112, "-------------" PRINT COLUMN 112, t_valor using "##,###,###.##" PRINT COLUMN 4, "Total Registros Impresos =", no_r USING "<<<<" PRINT COLUMN 1, normal LET t_valor = 0 LET no_r = 0 END REPORT