{ ------------------------------------------------------------------------------- PROGRAMA : adprrp047 OBJETIVO : Listar las informaciones generales de los Empleados en formato ascii PROGRAMADOR : Oscar A. Castillo FECHA REALIZACION : Wednesday, 16 January, 2002 ------------------------------------------------------------------------------- } DATABASE rayovac GLOBALS #"adprgb000.4gl" DEFINE tipo_l CHAR(1) DEFINE tipo_papel SMALLINT DEFINE numero_msg LIKE msgtable.cod_msg DEFINE selec3,selec2,selec1,selec CHAR(1000) DEFINE letras RECORD negrillas_on , negrillas_off , doble_on , doble_off , comp_on , comp_off , doce , normal CHAR(6) END RECORD, formato1 RECORD apellido CHAR(30), nombre CHAR(30), cedula CHAR(13), cedula1 CHAR(11), cargo CHAR(60) END RECORD DEFINE impresor SMALLINT, imprime CHAR(80), archivo CHAR(20), parametro CHAR(2), orden CHAR(1), destino CHAR(1) END GLOBALS MAIN CALL adprrp047() END MAIN FUNCTION pantalla() DEFINE fecha CHAR(10), hora char(5) LET fecha = today USING "dd/mm/yyyy" LET hora = time DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17 ATTRIBUTE (REVERSE,BLUE) DISPLAY fecha AT 4,68 ATTRIBUTE (RED) # DISPLAY "Sistema de Administracion de Personal" AT 5,21 ATTRIBUTE(BLACK) DISPLAY "Human Resource System" AT 5,30 ATTRIBUTE(BLUE) DISPLAY hora AT 6,73 ATTRIBUTE(RED) CALL fgl_drawbox(5,79,3,1) # CALL fgl_drawbox(1,79,22,1) END FUNCTION FUNCTION adprrp047() ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE list_emp RECORD num_emp LIKE adtb00003.num_emp, 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.apell2_emp, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, nom_puesto LIKE adtb00004.nom_puesto, tipo_sangre LIKE adtb00003.tipo_sangre END RECORD DEFINE nom_reporte CHAR(20), ubicacion CHAR(1), conjunto CHAR(30) #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM adfmrp047 FROM "adfmrp047" DISPLAY FORM adfmrp047 CALL pantalla() DISPLAY "adprrp047" AT 4,3 ATTRIBUTE(RED) DISPLAY "Maestra Empleado Resumen" AT 6,28 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 INPUT BY NAME nom_reporte,ubicacion AFTER FIELD nom_reporte IF nom_reporte IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nom_reporte END IF AFTER FIELD ubicacion IF ubicacion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ubicacion END IF END INPUT { LABEL pide: PROMPT "Listado Numerico o Alfabetico (N/A)? " FOR CHAR tipo_l LET tipo_l = UPSHIFT(tipo_l) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF 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.nivel_emp,a.cod_puesto, ", " a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie, ", " b.nom_puesto,a.tipo_sangre ", "FROM adtb00003 a,adtb00004 b ", "WHERE a.cod_puesto=b.cod_puesto AND ", " a.num_emp != 888 AND ", " (a.status_t is null OR ", " a.status_t NOT IN('D','E','T')) ", "ORDER BY 1 " ELSE } LET SELEC = "SELECT UNIQUE a.num_emp,a.nivel_emp,a.cod_puesto, ", " a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp,a.cedula,a.serie, ", " b.nom_puesto,a.tipo_sangre ", "FROM adtb00003 a,adtb00004 b ", "WHERE a.cod_puesto=b.cod_puesto AND ", " a.num_emp != 888 AND ", " (a.status_t is null OR ", " a.status_t NOT IN('D','E','T')) ", "ORDER BY 6,7,4,5 " # 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) LET conjunto = ubicacion CLIPPED ,":\\", nom_reporte CLIPPED display " con ",conjunto START REPORT emplear47 TO conjunto ## 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 emplear47(list_emp.*) END WHILE FINISH REPORT emplear47 #RUN imprime CLEAR SCREEN END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT emplear47(x) DEFINE x RECORD num_emp LIKE adtb00003.num_emp, 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.apell2_emp, cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, nom_puesto LIKE adtb00004.nom_puesto, tipo_sangre LIKE adtb00003.tipo_sangre END RECORD, formato RECORD apellido CHAR(30), nombre CHAR(30), cedula CHAR(13), cedula1 CHAR(11), cargo CHAR(60) END RECORD, pri CHAR(3), seg CHAR(7), ter CHAR(1) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(12) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 2 BOTTOM MARGIN 4 PAGE LENGTH 1000 #ORDER BY x.num_emp FORMAT FIRST PAGE HEADER { LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, letras.comp_on,letras.negrillas_on PRINT COLUMN 1, "adprrp047", COLUMN 44, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 128, "Pag. ",pageno using "###" PRINT COLUMN 44, " Sistema de Administracion de Personal", COLUMN 128, today using "dd/mm/yyyy" PRINT COLUMN 44, " Maestra de Personal ", COLUMN 131, hora PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------" , "-------------------------------" PRINT COLUMN 2, "APELLIDOS", COLUMN 34, "NOMBRES", COLUMN 66, "CEDULA", COLUMN 80, "POSICION" PRINT COLUMN 2, "---------------------------------------------------", "---------------------------------------------------" , "-------------------------------" PRINT letras.negrillas_off } ## AQUI SE INDICA LA IMPRESION DEL DETALLE #BEFORE GROUP OF x.num_emp ON EVERY ROW SELECT a.cedula_n INTO formato.cedula FROM adtb00038 a WHERE a.num_emp = x.num_emp IF formato.cedula IS NOT NULL THEN LET pri = formato.cedula[1,3] LET seg = formato.cedula[5,11] LET ter = formato.cedula[13] LET formato.cedula1 = pri CLIPPED,seg CLIPPED,ter CLIPPED LET formato.apellido = x.apell1_emp clipped," ",x.apell2_emp LET formato.nombre = x.nom1_emp clipped," ",x.nom2_emp PRINT COLUMN 2, formato.apellido CLIPPED, COLUMN 34, formato.nombre CLIPPED , COLUMN 66, formato.cedula1 CLIPPED, COLUMN 80, x.nom_puesto CLIPPED END IF { ON LAST ROW SKIP 1 LINE PRINT COLUMN 2, "Total de Registros Impresos = ", count(*) using "###" PRINT letras.comp_off } END REPORT