{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP029 OBJETIVO : REPORTE DE NOMINAS DE PAGO (BUSCA DEL HISTORICO) PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Febrero 19, 1996 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE idx_k,idx_z,p,m SMALLINT DEFINE totales ARRAY[50] OF DECIMAL(12,2) DEFINE tot_gral ARRAY[50] OF DECIMAL(12,2) DEFINE primera,sigue CHAR(1) DEFINE nombre_mes2 CHAR(12) {DEFINE tot_gral ARRAY[50] OF RECORD cod_mov SMALLINT, valor DECIMAL(12,2) END RECORD} DEFINE o,kq SMALLINT # Variable de los encabezados DEFINE f ARRAY[100] OF RECORD primer_enc LIKE notb00002.primer_enc, segundo_enc LIKE notb00002.segundo_enc, tercer_enc LIKE notb00002.tercer_enc, cod_mov LIKE notb00002.cod_mov, clase_mov LIKE notb00008.clase_mov, no_columna INTEGER END RECORD # Variable de los encabezados DEFINE j ARRAY[100] OF RECORD primer_enc LIKE notb00002.primer_enc, segundo_enc LIKE notb00002.segundo_enc, tercer_enc LIKE notb00002.tercer_enc, cod_mov LIKE notb00002.cod_mov, clase_mov LIKE notb00008.clase_mov, no_columna INTEGER END RECORD FUNCTION noprrp029() ## DEFINICION DE LOS REGISTROS DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE e ARRAY[100] OF RECORD primer_enc LIKE notb00002.primer_enc, segundo_enc LIKE notb00002.segundo_enc, tercer_enc LIKE notb00002.tercer_enc, cod_mov LIKE notb00002.cod_mov, no_columna INTEGER END RECORD DEFINE imprime RECORD num_emp LIKE notb00008.num_emp, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom2_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell2_emp, cod_mov LIKE notb00008.cod_mov, cantidad LIKE notb00008.cantidad, clase_mov CHAR(1), valor LIKE notb00008.valor, departamento LIKE adtb00003.departamento, cuenta_no LIKE cgtb00002.cuenta_no, no_columna SMALLINT END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp001 FROM "nofmrp001" DISPLAY FORM nofmrp001 CALL pantalla() DISPLAY "noprrp029" AT 4,3 DISPLAY "Nomina de Pago (Historico)" AT 6,28 ## INDICA EL TIPO DE PAPEL NECESARIO PARA EL REPORTE. 1 - PAPEL 9 1/2 X 11 ## 2 - PAPEL 14 7/8 X 11 LET tipo_papel = 2 CALL msgrp000(tipo_papel) LET primera = "S" ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE INPUT BY NAME per_nomi.num_nomi,per_nomi.tipo_emp AFTER FIELD num_nomi IF per_nomi.num_nomi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF AFTER FIELD tipo_emp IF per_nomi.num_nomi IS NOT NULL THEN IF per_nomi.tipo_emp IS NOT NULL THEN SELECT num_nomi,tipo_emp,fecha_del,fecha_al INTO per_nomi.num_nomi,per_nomi.tipo_emp, per_nomi.fecha_del,per_nomi.fecha_al FROM notb00010 WHERE num_nomi = per_nomi.num_nomi and tipo_emp = per_nomi.tipo_emp IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF END IF DISPLAY BY NAME per_nomi.fecha_del,per_nomi.fecha_al SELECT UNIQUE a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = MONTH(per_nomi.fecha_del) SELECT UNIQUE a.descrip INTO nombre_mes2 FROM mestable a WHERE a.mes = MONTH(per_nomi.fecha_al) AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF EXIT INPUT END INPUT # Busqueda de los encabezados DECLARE accion CURSOR FOR SELECT UNIQUE a.primer_enc,a.segundo_enc,a.tercer_enc,c.cod_mov,b.clase_mov FROM notb00002 a,notb00016 b,notb00013 c WHERE c.cod_mov_a = b.cod_mov and b.num_nomi = per_nomi.num_nomi AND b.tipo_emp = per_nomi.tipo_emp AND a.status_t is null and a.cod_mov = c.cod_mov ORDER BY 4 LET idx = 1 FOREACH accion INTO j[idx].* IF j[idx].clase_mov = "I" or j[idx].clase_mov = "E" or j[idx].clase_mov = "P" THEN LET j[idx].no_columna = 1 END IF IF j[idx].clase_mov = "D" or j[idx].clase_mov = "S" or j[idx].clase_mov = "R" THEN LET j[idx].no_columna = 2 END IF LET f[idx].primer_enc = j[idx].primer_enc LET f[idx].segundo_enc = j[idx].segundo_enc LET f[idx].tercer_enc = j[idx].tercer_enc LET f[idx].cod_mov = j[idx].cod_mov LET f[idx].clase_mov = j[idx].clase_mov LET f[idx].no_columna = j[idx].no_columna LET idx = idx + 1 END FOREACH LET idx = idx - 1 # Validacion de colunnas de ingresos LET m = 1 FOR p = 1 TO idx IF f[p].no_columna = 1 THEN LET j[m].primer_enc = f[p].primer_enc LET j[m].segundo_enc = f[p].segundo_enc LET j[m].tercer_enc = f[p].tercer_enc LET j[m].cod_mov = f[p].cod_mov LET j[m].clase_mov = f[p].clase_mov LET j[m].no_columna = f[p].no_columna LET m = m + 1 END IF END FOR LET j[m].primer_enc = "________" LET j[m].segundo_enc = "|TOTAL |" LET j[m].tercer_enc = "|GANADO|" LET j[m].cod_mov = null LET j[m].no_columna = null LET m = m + 1 # Validacion de colunnas descuentos FOR p = 1 TO idx IF f[p].no_columna = 2 THEN LET j[m].primer_enc = f[p].primer_enc LET j[m].segundo_enc = f[p].segundo_enc LET j[m].tercer_enc = f[p].tercer_enc LET j[m].cod_mov = f[p].cod_mov LET j[m].clase_mov = f[p].clase_mov LET j[m].no_columna = f[p].no_columna LET m = m + 1 END IF END FOR LET j[m].primer_enc = "________" LET j[m].segundo_enc = "|TOTAL |" LET j[m].tercer_enc = "|DESC. |" LET j[m].cod_mov = null LET idx = m ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE Y ## SE DECLARA EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA DECLARE accion1 CURSOR FOR SELECT UNIQUE a.num_emp,b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp, d.cod_mov,sum(a.cantidad),a.clase_mov,sum(a.valor), b.departamento, c.cuenta_no FROM notb00016 a,adtb00003 b,notb00013 d,outer cgtb00002 c WHERE a.num_nomi = per_nomi.num_nomi AND a.tipo_emp = per_nomi.tipo_emp AND a.num_emp = b.num_emp AND a.departamento = c.departamento AND a.fecha between per_nomi.fecha_del and per_nomi.fecha_al AND a.status_t is null and a.cod_mov not in (100,101,102,110) and a.cod_mov = d.cod_mov_a GROUP BY 1,2,3,4,5,6,8,10,11 ORDER BY 1,6 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) 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 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT reporte29 TO "C:\\archivo" ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE FOREACH accion1 INTO imprime.* # Acumula el total de descuentos por empleado IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF IF imprime.clase_mov = "I" or imprime.clase_mov = "E" or imprime.clase_mov = "P" THEN LET imprime.no_columna = 1 END IF IF imprime.clase_mov = "D" or imprime.clase_mov = "S" THEN LET imprime.no_columna = 2 END IF OUTPUT TO REPORT reporte29(imprime.*,per_nomi.num_nomi,per_nomi.tipo_emp, per_nomi.fecha_del,per_nomi.fecha_al,nombre_mes, nombre_mes2) END FOREACH FINISH REPORT reporte29 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT reporte29(x,no_nomina,tipo,fecha1,fecha2,nombre,nombre2) DEFINE x RECORD num_emp LIKE notb00008.num_emp, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom2_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell2_emp, cod_mov LIKE notb00008.cod_mov, cantidad LIKE notb00008.cantidad, clase_mov CHAR(1), valor LIKE notb00008.valor, departamento LIKE adtb00003.departamento, cuenta_no LIKE cgtb00002.cuenta_no, no_columna SMALLINT END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE nombre_depto CHAR(20) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE fecha1,fecha2 DATE DEFINE segunda,tipo CHAR(1) DEFINE p_codigo,no_emp,k,h,n,ficha,no_nomina,l SMALLINT DEFINE nombre,nombre2,varia CHAR(11) DEFINE t_sal_hora,t_horas,sal_hora,horas DECIMAL(7,2) DEFINE t_salario1,salario,salario1 DECIMAL(8,2) DEFINE t_desc1,t_desc,neto,monto_desc,t_ganado,t_ganado_h,valor1, t_t_horas,t_t_valor_h,t_valor_h DECIMAL(10,2) DEFINE t_t_valor,t_t_neto,t_neto,t_t_Desc,t_t_ganado DECIMAL(12,2) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.departamento,x.num_emp,x.no_columna,x.cod_mov FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 27, ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time ## ASIGNACION DEL TIPO DE NOMINA A IMPRIMIR IF tipo = "Q" THEN LET varia = "QUINCENALES" END IF IF tipo = "S" THEN LET varia = "SEMANALES" END IF IF tipo = "V" THEN LET varia = "VENDEDORES" END IF ## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- LET l = (171 - LENGTH(varia))/2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, doce,comp_on, COLUMN 2, "Nomina No.:", COLUMN 15, no_nomina, COLUMN 30, negrillas_on, COLUMN 31, doble_on, COLUMN 23, p_companias.nombre CLIPPED, negrillas_off, doble_off clipped, COLUMN 104," Pag. ",pageno using "###" PRINT COLUMN 2, "noprrp029", COLUMN 63, "Nomina Empleados ", COLUMN L, varia , COLUMN 145, today using "dd/mm/yy" PRINT COLUMN 42, "Nomina Regular del", COLUMN 62, DAY(fecha1) using "&&", COLUMN 66, "de", COLUMN 70, nombre clipped, COLUMN 83, "Al", COLUMN 87, DAY(fecha2) using "&&", COLUMN 91, nombre2 clipped, COLUMN 103, "de", COLUMN 107, YEAR(fecha2) using "####", COLUMN 145, time SKIP 1 LINE PRINT COLUMN 1, "-----------------------------------"; LET m = 36 FOR i = 1 to idx PRINT COLUMN m, "------------"; LET m = m + 12 END FOR PRINT COLUMN m, "--------" # PRINT COLUMN 77, "Total"; LET m = 56 FOR i = 1 to idx PRINT COLUMN m, j[i].primer_enc; LET m = m + 11 END FOR PRINT " " LET m = 56 FOR i = 1 to idx PRINT COLUMN m, j[i].segundo_enc; LET m = m + 11 END FOR PRINT " " PRINT COLUMN 1, "Ficha", COLUMN 7, "Nombre"; LET m = 56 FOR i = 1 to idx PRINT COLUMN m, j[i].tercer_enc; LET m = m + 11 END FOR PRINT COLUMN m+3, "NETO" LET m = 56 FOR i = 1 TO idx PRINT COLUMN m, "(",j[i].cod_mov using "&&&",")"; LET m = m + 11 END FOR PRINT " " PRINT COLUMN 1, "-----------------------------------"; LET m = 36 FOR i = 1 to idx PRINT COLUMN m, "------------"; LET m = m + 12 END FOR PRINT COLUMN m, "--------" ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.departamento LET t_sal_hora = 0 LET t_ganado = 0 LET t_desc = 0 LET t_neto = 0 LET t_horas = 0 LET t_valor_h = 0 IF t_t_horas is null THEN LET t_t_horas = 0 END IF IF t_t_valor_h is null THEN LET t_t_valor_h = 0 END IF # Inicializacion del arreglo para los totales por departamentos FOR i = 1 TO idx LET totales[i] = 0 END FOR IF primera = "S" THEN FOR i = 1 TO idx LET tot_gral[i] = 0 END FOR LET primera = "N" END IF #-------------------------------------------------------------------------- IF t_t_ganado is null THEN LET t_t_ganado = 0 END IF IF t_t_desc is null THEN LET t_t_desc = 0 END IF IF t_t_neto is null THEN LET t_t_neto = 0 END IF skip 1 line BEFORE GROUP OF x.num_emp LET t_ganado_h = 0 LET neto = 0 LET valor1 = 0 LET sigue = "N" LET segunda = "S" LET p = 1 LET i = 1 LET n = 38 LET t_desc1 = 0 LET idx_k = 0 LET sal_hora = 0 PRINT COLUMN 1, x.num_emp using "&&&&", COLUMN 7, x.nom1_emp clipped," ", x.apell1_emp clipped; ON EVERY ROW IF x.no_columna = 1 THEN LET idx_k = idx_k + 1 END IF IF x.cod_mov = 1 THEN IF x.cantidad is null THEN LET x.cantidad = 0 END IF IF x.cantidad > 0 THEN LET sal_hora = x.valor/x.cantidad END IF PRINT COLUMN n-3, sal_hora using "###.##", COLUMN n+7, x.cantidad USING "###.##"," ", COLUMN n+14, x.valor USING "##,###.##"; LET sigue = "S" LET t_sal_hora = t_sal_hora + sal_hora LET t_horas = t_horas + x.cantidad LET n = n + 25 LET totales[i] = totales[i] + x.valor LET tot_gral[i] = tot_gral[i] + x.valor # Acumulacion de los Ingresos IF x.clase_mov = "I" or x.clase_mov = "P" or x.clase_mov = "E" THEN LET t_ganado_h = t_ganado_h + x.valor END IF END IF IF sigue = "N" THEN LET sigue = "S" LET n = n + 13 END IF IF x.valor is null THEN LET x.valor = 0 END IF IF x.cod_mov > 1 THEN LET segunda = "N" IF j[i].cod_mov = x.cod_mov THEN # Este sum es porque el interes es un movimiento y hay que sumarlo con el # valor de la cuota IF x.cod_mov = 12 THEN SELECT valor INTO valor1 FROM notb00016 WHERE cod_mov = 110 and num_emp = x.num_emp and num_nomi = no_nomina and tipo_emp = tipo IF valor1 is null THEN LET valor1 = 0 END IF LET x.valor = x.valor + valor1 END IF LET totales[i] = totales[i] + x.valor LET tot_gral[i] = tot_gral[i] + x.valor # Acumulacion de los Ingresos IF x.clase_mov = "I" or x.clase_mov = "P" or x.clase_mov = "E" THEN LET t_ganado_h = t_ganado_h + x.valor END IF # Acumulacion de los descuentos IF x.clase_mov = "R" or x.clase_mov = "S" or x.clase_mov = "D" THEN LET t_desc1 = t_desc1 + x.valor END IF PRINT COLUMN n,x.valor USING "##,###.##"; ELSE FOR k = i TO idx IF j[k].cod_mov = x.cod_mov THEN IF x.cod_mov = 12 THEN SELECT valor INTO valor1 FROM notb00016 WHERE cod_mov = 110 and num_emp = x.num_emp and num_nomi = no_nomina and tipo_emp = tipo IF valor1 is null THEN LET valor1 = 0 END IF LET x.valor = x.valor + valor1 END IF PRINT COLUMN n,x.valor USING "##,###.##"; LET totales[k] = totales[k] + x.valor LET tot_gral[k] = tot_gral[k] + x.valor # Acumulacion de los Ingresos IF x.clase_mov = "I" or x.clase_mov = "P" or x.clase_mov = "E" THEN LET t_ganado_h = t_ganado_h + x.valor END IF # Acumulacion de los descuentos IF x.clase_mov = "R" or x.clase_mov = "S" or x.clase_mov = "D" THEN LET t_desc1 = t_desc1 + x.valor END IF LET i = k EXIT FOR ELSE IF j[k].cod_mov is not null THEN PRINT COLUMN n,0 USING "##,###.##"; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 END IF LET n = n + 11 LET p = p + 1 END IF END FOR END IF LET p = p + 1 LET n = n+11 END IF LET i = i + 1 AFTER GROUP OF x.no_columna IF segunda = "S" THEN LET n = n - 11 FOR k = 1 TO idx IF j[k].no_columna = x.no_columna THEN IF j[k].cod_mov != 1 THEN IF j[k].cod_mov is not null THEN PRINT COLUMN n,0 USING "##,###.##"; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 LET i = k + 1 END IF END IF LET n = n + 11 LET p = p + 1 END IF END FOR END IF { # Para indagar cuantos ingresos hay en el arreglo para posterior # investigacion de cuantos ingresos imprimio LET idx_z = 0 FOR k = 1 TO idx IF j[k].no_columna = 1 THEN LET idx_z = idx_z + 1 END IF END FOR # Rellenar con ceros los ingresos que el empleado no tiene IF idx_z != idx_k THEN LET idx_z = idx_z - idx_k # LET n = n - 11 FOR k = 1 TO idx_z PRINT COLUMN n,idx_z USING "##,###.##"; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 LET i = k + 1 LET n = n + 11 LET p = p + 1 END FOR END IF } IF x.no_columna = 1 THEN PRINT COLUMN n,"|", t_ganado_h USING "##,###.##","|"; LET totales[i] = totales[i] + t_ganado_h LET tot_gral[i] = tot_gral[i] + t_ganado_h END IF AFTER GROUP OF x.num_emp IF no_emp is null THEN LET no_emp = 0 END IF LET no_emp = no_emp + 1 IF t_neto IS NULL THEN LET t_neto = 0 END IF IF t_ganado_h is null THEN LET t_ganado_h = 0 END IF IF t_desc1 is null THEN LET t_desc1 = 0 END IF LET neto = t_ganado_h + t_desc1 IF p != idx THEN LET p = idx - p LET p = (i + p) - 1 FOR k = i TO p IF j[k].cod_mov is not null THEN PRINT COLUMN n, 0 using "##,###.##"; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 LET n = n + 11 END IF END FOR END IF PRINT COLUMN n,"|", t_desc1 using "##,###.##","|"; PRINT COLUMN n+11, neto USING "(((,((#.##)" LET t_ganado = t_ganado + t_ganado_h LET t_desc = t_desc + t_desc1 LET t_neto = t_neto + neto AFTER GROUP OF x.departamento IF o is null THEN LET o = 1 END IF #------------------------------------------------------------------------------- SELECT nom_dpto INTO nombre_depto FROM adtb00001 WHERE departamento = x.departamento IF status = notfound THEN LET status = 0 END IF PRINT negrillas_on # Impresion de los totales de los departamentos PRINT COLUMN 4,x.departamento USING "####"," ",nombre_depto; IF t_t_valor is null THEN LET t_t_valor = 0 END IF PRINT COLUMN 35, t_sal_hora using "###.##", COLUMN 43, t_horas using "#,###.##"; LET t_t_horas = t_t_horas + t_sal_hora LET t_t_valor_h = t_t_valor_h + t_horas LET m = 38 LET sigue = "N" IF j[1].cod_mov = 1 THEN LET m = m + 15 LET sigue = "S" END IF IF sigue = "N" THEN LET m = m + 15 END IF LET idx = idx - 1 LET m = m - 1 FOR i= 1 TO idx PRINT COLUMN m, totales[i] using "###,###.##"; LET m = m + 11 END FOR LET idx = idx + 1 PRINT COLUMN n,t_desc using "###,###.##"," ", t_neto using "###,###.##", negrillas_off # Acumulacion de Totales generales LET t_t_ganado = t_t_ganado + t_ganado LET t_t_desc = t_t_desc + t_desc LET t_t_neto = t_t_neto + t_neto ON LAST ROW PRINT negrillas_on PRINT COLUMN 4, "Total General "; PRINT COLUMN 33, t_t_horas USING "#,###.##", COLUMN 42, t_t_valor_h using "##,###.##"; LET t_t_horas = 0 LET t_t_valor_h = 0 LET m = 38 LET sigue = "N" IF j[1].cod_mov = 1 THEN LET m = m + 14 LET sigue = "S" END IF IF sigue = "N" THEN LET m = m + 14 END IF LET idx = idx - 1 FOR i= 1 TO idx PRINT COLUMN m, tot_gral[i] using "###,###.##"; LET m = m + 11 END FOR IF t_t_desc < 0 THEN LET t_t_desc = t_t_desc * -1 END IF LET t_t_neto = t_t_ganado - t_t_desc PRINT COLUMN m,t_t_desc using "###,###.##"," ", t_t_neto using "###,###.##", negrillas_off PRINT COLUMN 4, "Total Empleados ", no_emp using "<<<" LET t_t_ganado = 0 LET t_t_desc = 0 LET t_t_neto = 0 LET no_emp = 0 PRINT COLUMN 1,normal,comp_off END REPORT