{ ------------------------------------------------------------------------------- PROGRAMA : ADPRRP033 OBJETIVO : Listar las informaciones Complementarias del reporte ADPRRP011 PROGRAMADOR : JUAN F. SOTO FECHA REALIZACION : Noviembre 7, 1995 ------------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" DEFINE tipo_l CHAR(1) FUNCTION adprrp033() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE list_emp RECORD num_emp LIKE adtb00003.num_emp, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell1_emp, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, fech_nac LIKE adtb00003.fech_nac, fech_efec LIKE adtb00003.fech_efec, estado_civil LIKE adtb00003.estado_civil, sexo LIKE adtb00034.sexo END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp033 FROM "adfmrp033" DISPLAY FORM adfmrp033 CALL pantalla() DISPLAY "adprrp033" 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 = 2 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 CONSTRUCT BY NAME criterio ON a.num_emp,a.nomina 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 decide = "N" THEN LET SELEC = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.nom2_emp,", " a.apell1_emp,a.apell2_emp,a.cedula,a.serie,a.fech_nac, ", " a.fech_efec,a.estado_civil ", "FROM adtb00003 a ", "WHERE ",criterio clipped, " AND a.status_t is null OR a.status_t = 'I' ", "ORDER BY 1 " ELSE LET SELEC = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.nom2_emp,", " a.apell1_emp,a.apell2_emp,a.cedula,a.serie,a.fech_nac, ", " a.fech_efec,a.estado_civil ", "FROM adtb00003 a ", "WHERE ",criterio clipped, " AND a.status_t is null OR a.status_t = 'I' ", "ORDER BY 4 " 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 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT nace 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 nace(list_emp.*) END WHILE FINISH REPORT nace RUN imprime CLEAR SCREEN END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT nace(x) DEFINE x RECORD num_emp LIKE adtb00003.num_emp, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell1_emp, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, fech_nac LIKE adtb00003.fech_nac, fech_efec LIKE adtb00003.fech_efec, estado_civil LIKE adtb00003.estado_civil, sexo LIKE adtb00034.sexo END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(12), m_sexo,m_civil CHAR(10), nom_provincia CHAR(20), cod_prov,codigo_sol SMALLINT OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 2 BOTTOM MARGIN 4 FORMAT PAGE HEADER LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, letras.comp_on, COLUMN 2, "adprrp033", COLUMN 16, letras.negrillas_on, COLUMN 43, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 90, letras.negrillas_off, COLUMN 133, "Pag.",pageno using "###" PRINT COLUMN 1, COLUMN 44, "Sistema de Administracion de Personal", COLUMN 128, today using "dd/mm/yyyy" PRINT COLUMN 1, COLUMN 44, " Maestra de Personal ", COLUMN 131, hora PRINT letras.doce,letras.comp_on PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------", "------------------------------------------------------" PRINT COLUMN 103, "Estado", COLUMN 115, "Fecha de", COLUMN 127, "Lugar de", COLUMN 148, "Fecha de" PRINT COLUMN 2, "Codigo No.", COLUMN 13, "Nombre Empleado", COLUMN 74, "Cedula-Serie", COLUMN 91, "Sexo", COLUMN 103, "Civil ", COLUMN 115, "Entrada", COLUMN 127, "Nacimiento", COLUMN 148, "Nacimiento" PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------", "------------------------------------------------------" ON EVERY ROW # Busca el sexo de cada empleado y como la tabla esta estructurada para el # Sexo de los familiares tambien, entonces para identificar el sexo del empleado # hay distinguirlo con el codigo del parentesco(cod_par) que es cero(0). SELECT @sexo INTO x.sexo FROM adtb00021 WHERE @num_emp = x.num_emp and cod_par = 0 IF x.sexo = "M" THEN LET m_sexo = "MASCULINO" ELSE LET m_sexo = "FEMENINO" END IF IF x.estado_civil = "C" THEN LET m_civil = "CASADO" ELSE LET m_civil = "SOLTERO" END IF # Busqueda del codigo del solicitante SELECT MAX(cod_sol) INTO codigo_sol FROM adtb00017 WHERE num_emp = x.num_emp # Busqueda del codigo de la provincia en que nacio SELECT unique cod_provincia INTO cod_prov FROM adtb00012 WHERE cod_sol = codigo_sol # Busqueda del nombre de la provincia en que nacio SELECT unique nombre_provincia INTO nom_provincia FROM vetb00020 WHERE cod_provincia = cod_prov PRINT COLUMN 3, x.num_emp USING "&&&&", COLUMN 14, x.apell1_emp clipped," ",x.apell2_emp clipped," ", x.nom1_emp clipped," ",x.nom2_emp clipped," ", COLUMN 72, x.cedula using "#########","-",x.serie using "&&&&", COLUMN 91, m_sexo clipped, COLUMN 103, m_civil clipped, COLUMN 115, x.fech_efec using "dd/mm/yyyy", COLUMN 125, nom_provincia, COLUMN 148, x.fech_nac using "dd/mm/yyyy" ON LAST ROW skip 1 line PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###" PRINT letras.comp_off END REPORT