{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP011 OBJETIVO : Listar las informaciones generales de los Empleados Quincenales y Semanales y Ex-Empleados PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Junio 24, 1993 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" DEFINE tipo_l CHAR(1) FUNCTION adprrp011() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE list_emp RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom2_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell1_emp, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, telefono LIKE adtb00003.telefono, fech_nac LIKE adtb00003.fech_nac, tipo_sangre LIKE adtb00003.tipo_sangre, licencia LIKE adtb00003.licencia, fech_efec LIKE adtb00003.fech_efec, sueldo_ac LIKE adtb00003.sueldo_ac, nom_dpto LIKE adtb00001.nom_dpto, nom_puesto LIKE adtb00004.nom_puesto, calle LIKE adtb00003.calle, casa_num LIKE adtb00003.casa_num, barrio LIKE adtb00003.barrio, urbanizacion LIKE adtb00003.urbanizacion, sexo LIKE adtb00030.sexo, cod1 LIKE adtb00003.cod_seg1, cod2 LIKE adtb00003.cod_seg1, cod3 LIKE adtb00003.cod_seg1 END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp011 FROM "adfmrp011" DISPLAY FORM adfmrp011 CALL pantalla() DISPLAY "adprrp011" AT 4,3 ATTRIBUTE(RED) DISPLAY "Empleados Activos" AT 6,34 ATTRIBUTE(BLACK) ## INDICA EL PAPEL NECESARIO PARA IMPRIMIR EL REPORTE. 1 - PAPEL 9 1/2 X 11 ## 2 - PAPEL 14 7/8 X 11 LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime, letras.*, archivo ## AQUI SE DIGITA LA VARIABLE QUE INDICA LA CONDICION DEL REPORTE, ES DECIR ## SI SE TRATA DE EMPLEADOS SEMANALES O QUINCENALES INPUT BY NAME decide ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER INPUT EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT BY NAME criterio ON a.num_emp ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LABEL pide: PROMPT "Listado Numerico o Alfabetico (N/A)? " FOR CHAR tipo_l LET tipo_l = UPSHIFT(tipo_l) IF tipo_l IS NULL THEN LET tipo_l = "K" END IF IF tipo_l != "N" AND tipo_l != "A" THEN GOTO pide END IF IF decide IS NULL THEN LET decide = "S" END IF ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE DE LOS QUINCENALES IF tipo_l = "N" THEN LET SELEC = "SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", " a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie,a.telefono,a.fech_nac, ", " a.tipo_sangre,a.licencia,a.fech_efec,a.sueldo_ac,c.nom_dpto, ", " b.nom_puesto,a.calle,a.casa_num,a.barrio,a.urbanizacion,d.sexo,a.cod_seg1, ", " a.cod_seg2,a.cod_seg3 ", "FROM adtb00003 a,adtb00004 b,adtb00001 c,adtb00030 d ", "WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ", " a.nomina=? AND (a.status_t is null OR a.status_t NOT IN('D','E','T')) AND ", " (a.num_emp = d.num_emp AND ",criterio CLIPPED, ") ORDER BY 1 " ELSE LET SELEC = "SELECT UNIQUE a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", " a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie,a.telefono,a.fech_nac, ", " a.tipo_sangre,a.licencia,a.fech_efec,a.sueldo_ac,c.nom_dpto, ", " b.nom_puesto,a.calle,a.casa_num,a.barrio,a.urbanizacion ", "FROM adtb00003 a,adtb00004 b,adtb00001 c ", "WHERE (a.cod_puesto=b.cod_puesto) AND (a.departamento=c.departamento) AND ", " a.nomina=? AND (a.status_t is null OR a.status_t NOT IN('D','E','T'))", #AND ", " ORDER BY 6 " { " (a.num_emp = d.num_emp AND ",criterio CLIPPED, ") ORDER BY 6 " } END IF DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ## AQUI SE PREPARA LA INFORMACION SELECCIONADA PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion USING decide DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT emplear TO archivo ## AQUI SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE WHILE STATUS != NOTFOUND FETCH accion INTO list_emp.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT emplear(list_emp.*) END WHILE FINISH REPORT emplear RUN imprime CLEAR SCREEN END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT emplear(x) DEFINE x RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom2_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell1_emp, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, telefono LIKE adtb00003.telefono, fech_nac LIKE adtb00003.fech_nac, tipo_sangre LIKE adtb00003.tipo_sangre, licencia LIKE adtb00003.licencia, fech_efec LIKE adtb00003.fech_efec, sueldo_ac LIKE adtb00003.sueldo_ac, nom_dpto LIKE adtb00001.nom_dpto, nom_puesto LIKE adtb00004.nom_puesto, calle LIKE adtb00003.calle, casa_num LIKE adtb00003.casa_num, barrio LIKE adtb00003.barrio, urbanizacion LIKE adtb00003.urbanizacion, sexo LIKE adtb00030.sexo, cod1 LIKE adtb00003.cod_seg1, cod2 LIKE adtb00003.cod_seg1, cod3 LIKE adtb00003.cod_seg1 END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(12), m_cedula LIKE adtb00038.cedula_n, m_sexo LIKE adtb00030.sexo, codigo_idss CHAR(15) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 FORMAT FIRST PAGE HEADER PRINT " " ON EVERY ROW INITIALIZE m_cedula,m_sexo TO NULL SELECT a.cedula_n INTO m_cedula FROM adtb00038 a WHERE a.num_emp = x.num_emp SELECT a.sexo INTO m_sexo FROM adtb00030 a WHERE a.num_emp = x.num_emp { NOMINA AUTOMATICA PRINT "D",x.nom1_emp[1,12],x.nom2_emp[1,12],x.apell1_emp[1,12], x.apell2_emp[1,12],m_cedula,m_sexo,x.fech_nac USING "YYYYMMDD", x.departamento USING "&&&&&&&&&","0000000000","4",52 spaces } # SEGURIDAD SOCIAL LET codigo_idss = x.cod1 USING "<<<<",x.cod2 USING "<<<<",x.cod3 USING "<<<<" PRINT "C",";",m_cedula CLIPPED,";",x.nom1_emp CLIPPED," ",x.nom2_emp CLIPPED,";", x.apell1_emp CLIPPED,";",x.apell2_emp CLIPPED,";", x.fech_nac USING "ddmmyyyy",";",codigo_idss CLIPPED,";", x.sueldo_ac USING "<<<<<<.##",";","F" END REPORT