Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
4
5
Capitulo 1 Introduccin.
7
8
Capitulo 2 Definiciones..
9
13
16
17
17
19
20
21
21
22
23
Tipos de Impresin..
Impresin Grfica
Impresin Directa
Tipos de Letra..
Rutinas y Funciones de Impresin.
Uso de Colores.
Definicin de Encabezados y Pie de Pgina.
Instrucciones para modificacin INI..
Instrucciones Grficas..
Mensajes..
Excel.
Word.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
23
23
23
25
27
27
38
40
41
44
45
48
Tabla de Contenidos
Capitulo 5 Tipos de Variables.
49
Declaracin de Variables.
Variables Numricas.
Variables Alfanumricas
Variables de Tabla.
Asignacin de Valores a Variables.
Conversin de Variables
Manejo de Valores Alfanumricos.
Manejo de Valores Numricos..
Manejo de Tablas.
Variables de Ambiente.
49
49
50
51
51
52
53
58
59
69
72
Ciclo REPITE.
Ciclo MIENTRAS.
72
73
75
SI -> FIN_SI
SI -> SI_NO -> FIN_SI..
75
75
77
80
Parmetros
Parmetros
Parmetros
Parmetros
Parmetros
Parmetros
Generales......
con uso de Check Box
de Seleccin .
de Salida .
de Referencia a Tabla ..
de Fecha
80
81
82
83
84
87
89
89
92
97
99
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
Tabla de Contenidos
Capitulo 11 Instrucciones de Empleados.
105
Vigencia de Trabajadores.
Krdex de Sueldos.
Localizacin del Empleado...............
Ausentismos, Incapacidades y Retardos.
Vacaciones..
105
106
106
107
109
112
112
115
117
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
117
118
122
123
125
Los pasos para realizar una tarea sern indicados de manera secuencial
y numerada, ejemplo:
Nota:
Al llenar la tabla debe escribir los valores tal cual le sean entregados. NO realice
alteraciones, de lo contrario sus clculos sern errneos.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
Giro
Combinacin o tecla de funcin Descripcin
<F1>
Ayuda
<F2>
Guardar
<F3>
Nuevo
<F4>
Borrar
<F9>
Cancelar
Alt + Letra Subrayada
Entrar a men o seleccionar opcin
Reporteador
Durante la edicin del reporte existen varias teclas que ayudan a agilizar algunas
tareas.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
Windows
Combinacin o tecla de funcin Descripcin
Alt + Tab
Cambiar de aplicacin
Ventanita + D
muestra el escritorio
Ventanita + F
muestra el cuadro de bsqueda de archivos
Ventanita + E
Abre el Explorador de Windows
Alt + <F4>
Cierra una aplicacin
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
Capitulo 1
Introduccin
Bienvenido a Giro, la mejor solucin a los problemas de administracin de personal.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
Qu es el Reporteador Giro?
El reporteador es una poderosa herramienta de programacin incluida dentro
del sistema giro diseado para poder consultar y manipular la Base de Datos de la
Empresa y poder a travs de su lenguaje de programacin diseado en ESPAOL hacer uso de todas sus potencialidades.
El reporteador giro naci de la necesidad de hacer reportes fcil y rpidamente
que se adapten 100% a las necesidades del usuario. Esta basado en la sintaxis de el
Lenguaje de programacin Pascal y por tal razn muchas de las macros y teclas son
similares.
El curso del reporteador tiene como objetivo que el usuario conozca, aprenda y
aplique este lenguaje utilizado en giro para programar eficientemente formulas para el
calculo de la nomina y a crear diversos reportes que se adecuen a las necesidades de
su empresa.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
Capitulo 2
Definiciones
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
1.
2.
Barra de mens: Muestra todos los mens que nos permitirn acceder a
todas y cada una de las herramientas del sistema.
3.
4.
Pestaa de Reporte
Esta carpeta es donde se muestra la ejecucin del reporte. En la parte superior de la
carpeta se muestran las herramientas disponibles.
Cuenta con las siguientes barras de herramientas:
2. Barra de iconos
3. Barra de Paginas
4. Area de impresin de resultados del reporte
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
10
Pestaa de Formula
Desde esta carpeta se puede modificar la frmula del reporte, esta carpeta solo es
visible si se tiene los derechos para modificar reportes o bien si el reporte fue hecho
por usted mismo.
En la parte superior de la carpeta se muestran las herramientas disponibles para la
edicin del reporte.
Cuenta con las siguientes barras de herramientas.
2. Barra de iconos
3. Barra de estado del sistema
4. Area de edicin del reporte
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
11
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
12
Barra de navegacin
Esta es la barra de navegacin donde el primer botn
muestra la pgina anterior pero esto funciona solo
despus de haber ejecutado el reporte, el segundo
permite ejecutar el reporte, el tercero permite poner
en pausa el reporte y solo funciona mientras el
reporte esta en ejecucin, el cuarto es el inverso al
primero el cual permite avanzar una pagina y el
ltimo botn para el reporte y obviamente este
funciona solo cuando el reporte esta en ejecucin.
En ocasiones por error en la programacin de alguno de los reportes puede el
reporte terminar anormalmente y se recomienda presionar el botn de parar
con la finalidad de terminar algunos procesos que pudieran haber quedado
activos.
Barra de archivos
Esta barra sirve para guardar o abrir el resultado de la
ejecucin de un reporte.
Barra de pginas
Una vez que el reporte termina su ejecucin se
muestra en la parte inferior a manera de pestaas
cada una de las paginas generadas por el reporte,
haga clic en la pgina deseada para visualizarla.
Cuando el reporte tiene mas de 10 paginas el sistema
muestra una pestaa extra con el signo + con lo que
se muestran las siguientes 10 paginas y otra pestaa
- que muestra las 10 paginas anteriores.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
13
Barra de navegacin
Esta barra tiene el mismo funcionamiento a la carpeta
de REPORTE solo que cuando se esta debugeando un
reporte el botn de pausa es el equivalente a la tecla
<F7> lo que significa que ejecuta instruccin por
instruccin. El botn de play continua con la ejecucin
hasta el final y el botn de stop para de debugear el
reporte.
Barra de pginas
El primer botn inicia con el debuger, si se encuentra
en otro archivo que no sea el principal el reporteador
cambia al archivo principal e inicia el reporte en modo
de depuracin mostrando el cursor en la primera lnea
de ejecucin, a partir de este momento puede ir
presionando la tecla <F7> para ir paso a paso o bien
la tecla <F4> para ejecutar hasta el cursor.
El segundo botn permite hacer una verificacin de
sintaxis, en caso de ocurrir un error el sistema
muestra el tipo de error y la lnea donde ocurri el
mismo.
El tercer botn es muy similar al anterior solo que
este verifica que las bases de datos a las que se hace
referencia existan realmente y los campo realmente
existan en la base de datos.
El ltimo botn muestra el visualizador de variables.
Solo se habilita cuando ejecuta el debuger.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
14
Barra de pginas
Si selecciona esta opcin puede posicionarse en
alguna instruccin y hacer clic con el botn izquierdo
del ratn para ver una referencia de la instruccin.
Barra de pginas
El primer botn graba la formula en disco y el
segundo permite imprimir la frmula en impresora.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
15
Estndares
El reporteador giro es case sensitive lo que significa que si existe diferencia entre
una palabra escrita con maysculas y otra escrita con minsculas ya sea de forma
completa o por partes. Veamos un ejemplo:
holacomoestas
:
HOLACOMOESTAS
HolaComoEstas
:
HOLACOMOESTAS
holacomoestas
:
holacomoestas
Los tres conjuntos de palabras dicen exactamente lo mismo, pero solo en el bloque del
lado derecho el Reporteador giro lo reconocer como vlido y correcto dentro de su
sintaxis de programacin debido a que esta exactamente escrito igual en sus dos
referencias.
_
$
&
Nota:
Esto no significa que as debe ser sino que es una recomendacin para estandarizar.
Cada instruccin pueden ir en una sola lnea o bien puede definir varias
instrucciones dentro de una sola lnea, para esto tiene que separar cada
instruccin con dos punto y coma( ;; ).
Ejemplo:
INSTRUCCION ;; INSTRUCCION ;; INSTRUCCION
Nota:
Si requiere ayuda mas explcita puede presionar Ctrl + F1 sobre cualquiera de las
instrucciones para que el reporteador muestre la ayuda correspondiente a la instruccin
solicitada.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
16
Capitulo 3
Creacin de reportes
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
17
Una vez dentro del Catalogo de Reportes seleccionado, mostrar una ventana como la
que sigue y habr que escoger el botn de
Se captura una clave de Reporte que no exista previamente que puede ser
alfanumrica, y se le da un nombre para identificarlo con una descripcin y se le da
ACEPTAR.
Nota:
Una vez hecho esto, se busca en el catlogo el reporte que se acaba de crear y se
abre dndole doble clic
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
18
Este reporte se crea con una utilera por default para generarlo con los filtros mas
usados por las empresas que solicitan informacin del sistema, como enviar los datos
agrupados por Sucursal, por Departamento, por Puesto etc. Y se anexan a la formula
como archivos adjuntos llamados UTIL2.DAT y UTIL2A.DAT.
Una vez hecho esto, hay que entrar a la pestaa de Frmula y borrar los bloques de
cdigo que hacen referencia a estos archivos, eliminando todo el cdigo que este
despus de la lnea #FIN DE DESCRIPCION hasta el final del reporte. Una vez hecho
esto se procede a verificar la sintaxis de la frmula restante para checar que contine
correcta. Se compila haciendo uso de la tecla rpida <F3> o con un clic en el icono
indicado.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
19
Se guarda con la tecla <F2> o con el icono correspondiente. Despus deber salirse
del reporte y volver a entrar. De esta manera ya no le aparecern las referencias a los
archivos UTIL2.DAT y UTIL2A.DAT quedando su reporte de la siguiente manera:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
20
el reporte y
Renombrar un reporte
Se selecciona el reporte que se desee cambiar de Clave o de Descripcin y se
oprime el botn
, aparecer una ventana para poder cambiar la clave del
reporte que no exista previamente - y el nombre del mismo. Se acepta el cambio y
en automtico hace la nueva modificacin.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
21
Renombrar un reporte
Al dar clic sobre la flecha aparecen los usuarios del sistema a los que podr restringir o
permitir la edicin de los reportes.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
22
Capitulo 4
Impresin de Reportes
Tipos de Impresin
El reporteador giro permite definir dos tipos diferentes de impresin que determinan la
forma de presentar el reporte tanto en pantalla como en hojas impresas.
IMPRESIN GRAFICA
Este tipo de reportes permite utilizar instrucciones especiales para imprimir en
coordenadas basadas en centmetros y utilizar tipos de letra instalados en WINDOWS
como los TRUE TYPE.
Nota:
IMPRESIN DIRECTA
Este tipo de impresin se utiliza para impresoras de matriz de punto donde se
requiere velocidad a baja calidad. Estos reportes no pueden utilizar instrucciones de
impresin grfica y deben utilizar letras definidas especficamente para la impresora a
utilizar.
Nota:
Si el reporte va a salir por disco, el tipo de impresin debe ser DIRECTO ya que de lo
contrario el grfico imprime instrucciones de ms para especificar las coordenadas.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
23
Tipos de impresin
COLUMNAS:=80
RENGLONES:=65
MODO_IMPRESION( GRAFICO )
IMP ( HOLA )
IMPRIME
Ejemplo:
Archivo giro.ini
[Star NX-1040]
Definicion de tipos de letra....
....
...
MODO_IMPRESION = DIRECTO
Con esto define que por default el modo de impresin en DIRECTO. Si el reporte
tiene definida la instruccin del modo de impresin entonces ignora el default y toma
el que se defina en ese momento. Si el reporte no tiene definido el tipo de impresin y
tampoco esta definido en el archivo de configuracin el sistema define por default el
modo de impresin DIRECTO.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
24
Tipos de Letra
Todo el texto que se imprima ya sea en pantalla o en impresora se imprimir
con el tipo de letra especificado. Para especificar el tipo de letra a utilizar existe la
instruccin LETRA que lleva como parmetro el nombre de la letra a utilizar, solo
existen las siguientes letras:
LETRA
LETRA
LETRA
LETRA
LETRA
LETRA
LETRA
LETRA
NORMAL
CONDENSADA
EXPANDIDA
ENFATIZADA
TITULO
1
2
3
Para cada una de estas letras se puede definir el tipo de letra a utilizar, esto es
para facilitar el transportar los reportes de una maquina a otra ya que si se define
directamente el nombre de la letra al correr el reporte en una maquina que no posea
ese tipo de letra seria necesario modificar el cdigo del reporte para que hiciera
referencia a otro tipo de letra valido, por tal razn se defini de esta manera para que
desde el men de configuraciones en la configuracin de tipos de letra se defina que
tipo de letra corresponde a cada uno de los tipos antes mencionados.
25
Tipos de Letra
Salida:
Impresin con letra Normal
Impresin con letra Enfatizada
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
26
Instruccin IMP
Esta instruccin se puede utilizar en ambos tipos de impresin tanto DIRECTA
como GRAFICA. Si se utiliza en modo GRAFICO se imprime donde actualmente se
encuentre el apuntador de X y Y. Cuando se trate de imprimir valores alfanumricos
es necesario encerrar stos en apstrofes.
Esta instruccin puede recibir un nmero ilimitado de parmetros los cuales
pueden ser numricos o alfanumricos. Cada uno de los parmetros debe ir separado
por (,). Existen instrucciones que solo se utilizan como parmetros de esta instruccin
que sirven para definir la columna donde se desea imprimir.
Ejemplo:
Instruccin COL
La instruccin COL se utiliza como parmetro de la instruccin IMP para definir
la columna donde se desea imprimir, la instruccin COL lleva como parmetro la
columna donde se desea imprimir.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
27
Instruccin IMPRIME
La instruccin IMP no imprime inmediatamente despus de ejecutada sino que
esto lo almacena en un buffer hasta que se encuentre con la instruccin IMPRIME que
indica que imprima todo lo que esta en ese momento en el buffer.
Ejemplo:
Instruccin REPITETXT
Si se desea imprimir uno o varios caracteres puede utilizar la instruccin
REPITETXT que recibe como parmetros los caracteres a imprimir y el nmero de
veces a imprimir.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
28
Salida:
**************************************************
**************************************************
Instruccin CANTIDAD_LETRA
Si se desea imprimir la cantidad en letra existe la instruccin CANTIDAD_LETRA
que recibe como parmetro el valor a convertir y retorna en un valor alfanumrico la
cantidad con letra.
Ejemplo:
Instruccin $
La instruccin $ se utiliza tambin como parmetro del IMP para indicar que se desea
imprimir una cantidad de pesos, esta instruccin recibe como parmetro el valor
numrico que se desea imprimir. El formato de pesos que el reporteador utilizar
estar determinado por la variable de ambiente FORMATO_PESOS ( Consulte la
ayuda del reporteador para ver los formatos disponibles).
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
29
FORMATO_PESOS := 2
IMP ( $(12345.67) ) ;; IMPRIME
FORMATO_PESOS := 3
IMP ( $(12345.67) ) ;; IMPRIME
Salida:
12,345.67
1234567
IMPRIME
IMP( 123.45 ) ;; IMPRIME
IMP( 12.34 ) ;; IMPRIME
IMP( 1234.56 ) ;; IMPRIME
IMP( 1234567.89 ) ;; IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
30
Salida:
123.45
12.34
1234.56
1234567.89
Ejemplo. 2
IMPRIME
IMP( DER( $(123.45), 12 ) ) ;; IMPRIME
IMP( DER( $(12.34), 12) ) ;; IMPRIME
IMP( DER( $(1234.56), 12) ) ;; IMPRIME
IMP( DER( $(1234567.89), 12) ) ;; IMPRIME
$alf := $(12345.67)
IMP ( DER($alf, 12 ) ) ;; IMPRIME
Salida:
123.45
12.34
1,234.56
1,234,567.89
12,345.67
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
31
La instruccin DER rellena los valores en blanco con el valor que este configurado en la
variable de ambiente RELLENO.
Ejemplo:
IMPRIME
IMP ( DER( hola, 12 ) ) ;; IMPRIME
RELLENO := *
IMP ( DER( hola, 12 ) ) ;; IMPRIME
Salida:
hola
********hola
Justificacin CENTRO
La instruccin CENTRA recibe como parmetro un valor alfanumrico y se
utiliza para centrar en la hoja el valor enviado como parmetro. El reporte por default
toma 80 columnas y en base a eso lo centra pero puede cambiar el ancho de la hoja
utilizando la variable de ambiente COLUMNAS que determina el nmero de columnas
del reporte.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
32
COLUMNAS := 200
IMP ( CENTRA( Texto a imprimir en el centro de la hoja ) )
IMPRIME
Salida:
Instruccin IMP_XY
Esta instruccin se utiliza de igual forma a IMP solo que en esta los 2 primeros
parmetros indican las coordenadas X y Y respectivamente, y al final de cada
instruccin IMP_XY es necesario ejecutar la instruccin de IMPRIME.
Ejemplo:
MODO_IMPRESION( GRAFICO )
DECIMALES := 0
IMP_XY ( 200, 200, $(123.45 ) );; IMPRIME
DECIMALES := 2
IMP_XY ( 1000, 200, $( 123.45 )) ;; IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
33
Salida:
123
123.45
Instruccin FORMATO
La instruccin FORMATO permite imprimir valores alfanumricos con
determinado formato que podemos establecer, esta instruccin recibe 2 parmetros, el
primero que especifica la variable alfanumrica a imprimir y el segundo que especifica
el formato a utilizar al momento de imprimir.
Ejemplo:
Salida:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
34
12-34/567*890
Ejemplo:
FORMATO_FECHA := 2
IMP ( La fecha del sistema es : , FECHA( FECHA_HOY ) ) ;; IMPRIME
El reporteador utiliza las fechas en formato Juliano lo que significa que el valor
de la fecha es un Entero que guarda los das transcurridos desde el 1ro de Enero de
1900 hasta la fecha, por tal motivo para hacer operaciones con fecha basta con sumar
o restar los das.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
35
FORMATO_FECHA := 2
IMP ( La fecha de hoy es : , FECHA( FECHA_HOY ) ) ;; IMPRIME
IMP ( La fecha de hoy + 30 das es : , FECHA( FECHA_HOY + 30 ) )
IMPRIME
Instruccin CALCULA_FECHA
La instruccin CALCULA_FECHA recibe como parmetro el ao, mes y da
respectivamente y retorna la fecha en formato juliano.
Nota:
Si la fecha especificada no existe la instruccin tratar de buscar una valida para evitar el
error.
Ejemplo:
FORMATO_FECHA := 2
IMP ( FECHA( CALCULA_FECHA( 98, 11, 16 ) ) ) ;; IMPRIME
IMP ( FECHA( CALCULA_FECHA( 98, 02, 31 ) ) ) ;; IMPRIME
Salida:
16-NOV-98
28-FEB-98
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
36
Manejo de HORAS
Al igual que la impresin de fecha existe una instruccin para imprimir valores
de horas, HORA recibe como parmetro a imprimir,. La instruccin HORA_ACTUAL
retorna la hora del sistema y al igual que la de la fecha no se le puede asignar valor.
Ejemplo:
Uso de colores
El reporteador giro permite hacer uso de colores para hacer de sus reportes
mas presentables, si no posee impresora a colores la impresin en papel ser en el
color de la tinta pero en pantalla se mostrar con los colores definidos.
La instruccin para definir el color es COLOR la cual recibe como parmetro el
color deseado (Vea la ayuda en lnea para ver los colores disponibles en el sistema).
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
37
Uso de colores
Recuerde que todas las variables en el compilador son globales por los que se recomienda
que las variables que se utilicen en el cuerpo del reporte no se utilicen en el pie o el
encabezado ya que puede resultar en una terminacin anormal del reporte o bien que
este nunca termine.
Ejemplo:
ENCABEZADO
LETRA( LETRA ENFATISADA )
IMP ( Encabezado de la hoja ) ;; IMPRIME
LETRA( LETRA NORMAL )
FIN_ENCABEZADO
PIE
DECIMALES := 0
IMP( Pie de pgina nmero : , PAGINA ) ;; IMPRIME
DECIMALES := 2
FIN_PIE
IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
38
Tamao de reporte
Todos los reportes por default tienen tamao carta, si desea cambiarlo a un
tamao especifico puede utilizar la instruccin TAMAO_HOJA la cual recibe como
parmetro el largo y ancho respectivamente, esta instruccin se puede utilizar tanto en
reportes grficos como directos. Los valores de largo y ancho se deben especificar en
centmetros donde 100 representa 1 cm.
Esta instruccin debe utilizarse al inicio del reporte antes de hacer cualquier
impresin. Una vez que termine de imprimir una hoja y desee cambiar a la siguiente
debe ejecutar la instruccin AVANZA_HOJA. NOTA: La instruccin AVANZA_HOJA
manda llamar automticamente el encabezado y pie de pgina si es que estos existen.
Ejemplo:
MODO_IMPRESION( GRAFICO )
TAMAO_HOJA ( 1500, 2200 )
IMP ( Esto se imprime en la primera hoja ) ;; IMPRIME
AVANZA_HOJA
IMP ( Esto se imprime en la segunda hoja ) ;; IMPRIME
Este reporte define un papel de 15 cm. de largo por 22 cm. de ancho. Existe
otra forma de definir el tamao del reporte pero esto solo funciona si el reporte esta
definido como DIRECTO. Las variables COLUMNAS y RENGLONES determinan el
tamao de la hoja, esta variables solo se les puede asignar valores.
Ejemplo:
MODO_IMPRESION( DIRECTO )
COLUMNAS := 100
RENGLONES := 15
IMP ( Esto se imprime en la primera hoja ) ;; IMPRIME
AVANZA_HOJA
IMP ( Esto se imprime en la segunda hoja ) ;; IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
39
MODO_IMPRESION( DIRECTO )
COLUMNAS := 100
RENGLONES := 15
IMP ( Esto se imprime en la primera hoja ) ;; IMPRIME
DECIMALES := 0
IMP ( Nmero de Pgina : , PAGINA ) ;; IMPRIME
AVANZA_HOJA
IMPRIME
IMP ( Esto se imprime en la segunda hoja ) ;; IMPRIME
IMP ( Nmero de Pgina : , PAGINA ) ;; IMPRIME
Instruccin LEE_INI(seccion,variable,default)
Esta instruccin nos permite leer alguna configuracin especifica del archivo GIRO.INI
del sistema para poder aplicarlo en la ejecucin de algn reporte. seccion especifica
el bloque del ini que se requiere, variable nos indica la linea requerida y default es el
valor que toma de inicio.
'AJUSTE_X_RECIBOS_GRAFICO', '0' ) )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
40
Instruccin ESCRIBE_INI(seccion,variable,default)
Esta instruccin nos permite escribir dentro de una configuracin especifica del archivo
GIRO.INI del sistema para grabar informacin en un parmetro de configuracin
vlido. seccion especifica el bloque del ini que se requiere, variable nos indica la
linea requerida y default es el valor que grabar en el archivo.
'AJUSTE_X_RECIBOS_GRAFICO', _ajuste )
Instrucciones graficas
El reporteador de giro permite definir reportes de tipo grfico lo cual permite
utilizar instrucciones para posicionamiento del cursor, impresin de lneas, crculos,
cuadros, etc.
VE_X ( pos )
VE_Y ( pos )
VE_XY ( pos1, pos2 )
Estas instrucciones mueven el cursor a la posicin indicada. Una vez que se
hace la impresin las coordenadas de X y Y se mueven automticamente.
Ejemplo:
MODO_IMPRESION( GRAFICO )
VE_XY( 100, 100 ) ;; IMP ( Posicin 100, 100 ) ;; IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
41
Instrucciones graficas
X_ACTUAL
Y_ACTUAL
Estas instrucciones respectivamente retornan la posicin en X y Y del cursor en
ese momento. A estas instrucciones se les puede asignar valor para cambiar la
posicin del cursor.
Ejemplo:
MODO_IMPRESION( GRAFICO )
VE_X( 100 )
IMP ( .(X_ACTUAL) ) ;; IMPRIME
IMP_XY( X, Y, cadena )
Imprime una cadena de caracteres en las coordenadas especificadas por los
parmetros X y Y. Esta instruccin requiere un IMPRIME para enviar el buffer a
impresin.
Ejemplo:
MODO_IMPRESION( GRAFICO )
IMP_XY ( 100, 100, Posicin 100, 100 ) ;; IMPRIME
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
42
Instrucciones graficas
MODO_IMPRESION( GRAFICO )
IMPRIME_REC ( 200, 100, 1000, 500 )
MODO_IMPRESION( GRAFICO )
IMPRIME_CIRCULO ( 200, 100, 300, 300 )
MODO_IMPRESION( GRAFICO )
IMPRIME_LINEA ( 200, 100, 1000, 500 )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
43
Instrucciones graficas
MODO_IMPRESION( GRAFICO)
IMPRIME_IMAGEN ( C:\GIRO\LOGO.BMP, 100, 100, 500, 500 )
Mensajes
MENSAJE( mensaje a desplegar )
Esta instruccin muestra el mensaje enviado como parmetro en un pequeo
dialogo el cual es necesario presionar Aceptar para continuar, esto funciona a manera
de pausa en el reporte.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
44
Mensajes
Ejemplo:
ABRE_BASE( EMPPRIN )
PRIMER_REGISTRO( EMPPRIN )
SI ( PREGUNTA( Desea borrar el trabajador + EMPPRIN:CLAVE + ? ) )
BORRA_REGISTRO( EMPPRIN )
FIN_SI
Nota:
Recuerde que si borra registros de una tabla padre tiene que incluir el proceso de borrado
de los registros relacionados en las tablas hijas. En el ejemplo anterior solo se elimina el
registro de la tabla padre pero es en cierta forma un error ya que los registros de las
tablas hijas quedan hurfanas.
PON_VALOR
Este comando se puede utilizar como en el siguiente ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
45
Excel
EXCEL
EXCEL
EXCEL
EXCEL
EXCEL
EXCEL
(PON_VALOR,
(PON_VALOR,
(PON_VALOR,
(PON_VALOR,
(PON_VALOR,
(PON_VALOR,
1,
2,
3,
1,
2,
3,
1,
1,
1,
2,
2,
2,
HOLA )
COMO )
ESTAS )
500 )
600 )
800 )
Nota:
TRAE_VALOR
Este comando se puede utilizar como en el siguiente ejemplo y funciona para
traerse valores ubicados en el rengln y columna que se le pase como parmetro.
En el ejemplo,
el resultado de la consulta lo guardar en las variables
$valor1, $valor2 y $valor3.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
46
Excel
CAMBIA_PAGINA
Este comando se aplica cuando se requiere cambiar a otra hoja de Excel del
documento y ya sea leer informacin de ah, o escribir nuevos datos.
AGREGA_PAGINA
Como su nombre lo dice,
para comenzar a escribir.
IMPRIME_PAGINA
Imprime la hoja de Excel en la que se esta trabajando, Si es excel XP o superior
se puede especificar el numero de la hoja en el ltimo parmetro de la instruccin
EXCEL, los otros dos parametros intermedios no se utilizan.
EXCEL (CAMBIA_PAGINA, 2, 0, )
EXCEL (AGREGA_PAGINA, 0, 0, )
EXCEL (IMPRIME_PAGINA, 0, 0, 2)
Nota:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
47
Word
IMPRIME_WORD
Esta funcin nos permite imprimir documentos desde el Reporteador, aquellas cartas
y/o contratos que tenemos especificados en el sistema Giro.
El formato es el que sigue:
IMPRIME_WORD ( Documento, Clave_Empleado, Tipo
(INICIAL,RENOVACION,GENERAL), Fecha_Consulta, Fecha_Contrato, Duracion,
Formato_Fecha (Debe de existir en giroserv), Comentario, SQL )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
48
Capitulo 5
Tipos de Variables
Existen 3 tipos de variables:
Numricas:
Alfanumricas:
Tabla:
Las restricciones para asignar el nombre de las variables son las siguientes:
1.-No exceder ms de 20 caracteres.
2.-No tener espacios en blanco.
Declaracin de variables
Las variables se pueden declarar en cualquier momento la nica restriccin es
que sea fuera de cualquier bloque como ciclos MIENTRAS, REPITE, ENCABEZADOS,
CONDICIONALES, etc. Es decir, se declaran como globales dentro del reporte y
tienen que ser declaradas
Variables Numricas
Para declarar las variables numricas existen dos formas:
1.-Utilizando la instruccin diseada para declarar variables de este tipo:
VAR_N ( _nombre )
2.-Asignando directamente el valor a la variable:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
49
Declaracin de Variables
Ejemplo:
_nombre := 13.25
_var2
:= 3
Nota:
Para hacer uso de este tipo de declaracin es necesario anteponer el smbolo _ para
indicar al reporteador que la variable es de tipo numrico.
Variables Alfanumricas
Para declarar las variables alfanumricas existen dos formas:
1.-Utilizando la instruccin diseada para declarar variables de este tipo:
Ejemplo:
VAR_A ( $nombre )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
50
Declaracin de Variables
Nota:
Para hacer uso de este tipo de declaracin es necesario anteponer el smbolo $ para
indicar al reporteador que la variable es de tipo alfanumrico.
VAR_T ( &tabla )
_var1
_var2
$var3
$var4
$var5
_var6
$var7
:=
:=
:=
:=
:=
:=
:=
23.45
_var1 * 5
Variable tipo
$var3 + + Alfanumrico
123
VALOR( $var5 )
.( _var1 )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
51
Conversin de Variables
Existen solo 2 tipos de conversin de datos ya que en realidad solo se manejan
variables de tipo numrico y alfanumrico debido a que las variables de tipo tabla
almacenan los valores de cada celda de forma alfanumrica.
De alfanumrico a numrico:
Nota:
Ejemplo:
Salida:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
52
Conversin de Variables
De Numrico a alfanumrico:
$var1 := .( 123.45 )
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
53
VAR_A ( $cadena )
$cadena := valor alfanumrico
IMP ( LONGITUD( $cadena ) ) ;; IMPRIME
SUBSTR( cadena, i, f )
Esta instruccin retorna la sub cadena de la cadena enviada como parmetro
desde el caracter i hasta el caracter f.
Ejemplo:
VAR_A( $aux )
$aux := Ejemplo de Subcadenas
IMP ( SUBSTR( $aux, 12, 3 ), marino )
IMPRIME
Salida:
Submarino
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
54
VAR_A( $aux )
$aux := Cadena de ejemplo
DECIMALES := 0
IMP ( POS( ejemplo, $aux ) )
IMPRIME
Salida:
11
VAR_A( $aux )
$aux := Cadena de ejemplo
IMP ( ELIMINA( $aux, 7, 3 ) )
IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
55
Salida:
Cadena ejemplo
VAR_A( $aux )
$aux := Cadena de ejemplo
IMP ( REEMPLAZA( e, E, $aux ) )
IMPRIME
Salida:
CadEna dE Ejemplo
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
56
MAYUSCULAS( cadena )
Esta instruccin recibe como parmetro una cadena y retorna la misma cadena
pero convertida a maysculas.
Ejemplo:
VAR_A( $aux )
$aux := Cadena de ejemplo
IMP ( MAYUSCULAS( $aux ) )
IMPRIME
Salida:
CADENA DE EJEMPLO
VAR_A( $aux )
$aux := Cadena de ejemplo
IMP ( QUITA_CARACTER( e, $aux ) )
IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
57
Salida:
Cadna d jmplo
VAR_N ( _int )
_int := 23.99
DECIMALES := 2
IMP ( El valor truncado de int es , TRUNCAR ( _int ) )
IMPRIME
Salida:
23.00
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
58
FRAC( valor )
Esta instruccin retorna el valor de la fraccin del valor enviado como
parmetro.
Ejemplo:
VAR_N ( _int )
_int := 23.99
DECIMALES := 2
IMP ( 'El valor truncado de i es ', FRAC( _int ) )
IMPRIME
Salida:
0.99
Manejo de Tablas
Este tipo de variables son muy tiles en los reportes ya que nos sirven para
organizar mejor la informacin, ahorrar espacio, generar grficas y hacer consultas
SQL. Las tablas en s son matrices que pueden ser de n*n donde n no debe exceder de
65000. Todas las celdas almacenan valores alfanumricos por lo que si deseamos
guardar valores numricos tenemos que hacer una conversin.
Existen varias
instrucciones para el manejo de las tablas, vamos analizndolas una por una.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
59
Manejo de Tablas
VAR_T ( &tabla )
PON_VALOR_TABLA( &tabla, 0, 0, Columna 0, Rengln 0 )
PON_VALOR_TABLA( &tabla, 1, 0, Columna 1, Rengln 0 )
&tabla
Columna 0
Rengln 0
Columna 1
Rengln 0
Nota:
Cabe sealar que el VALOR que se inserte con esta instruccin se guarda en formato
alfanumrico en la celda correspondiente. Es decir, para el caso de valores numricos
hay que hacer conversin una vez que se recupere ese dato.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
60
Manejo de Tablas
VAR_T ( &tabla )
PON_VALOR_TABLA( &tabla, 0, 0, Columna 0, Rengln 0 )
PON_VALOR_TABLA( &tabla, 1, 0, Columna 1, Rengln 0 )
IMP ( TRAE_VALOR_TABLA( &tabla, 0, 0 ) ) ;; IMPRIME
IMP ( TRAE_VALOR_TABLA( &tabla, 1, 0 ) ) ;; IMPRIME
Columna 0, Rengln 0
Columna 1, Rengln 0
LIMPIA_TABLA ( tabla )
Esta instruccin como su nombre lo dice limpia todas las celdas y las pone en
blanco. Es muy til para reutilizar variables en la misma ejecucin del reporte.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
61
Manejo de Tablas
VAR_T (&tabla )
AGREGA_VALOR_COL(
AGREGA_VALOR_COL(
AGREGA_VALOR_COL(
AGREGA_VALOR_COL(
&tabla,
&tabla,
&tabla,
&tabla,
0,
0,
0,
1,
HOLA )
SALUDOS )
HOLA )
MEXICO )
MEXICO
SALUDOS
HOLA
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
62
Manejo de Tablas
MEXICO
A TODOS
HOLA
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
63
Manejo de Tablas
VAR_T( &tabla )
ASIGNA_VALOR_TABLA ( &tabla, TOTAL, DEPTO, 1234.55 )
ASIGNA_VALOR_TABLA ( &tabla, TOTAL, ZONA, 500 )
ASIGNA_VALOR_TABLA ( &tabla, DEPTO, SISTEMAS, 999.77 )
Para este caso, el acomodo de los datos se vera fsicamente de la siguiente manera:
&tabla
/
TOTAL
DEPTO
1234.55
ZONA
500
SISTEMAS
DEPTO
999.77
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
de acuerdo solo a
existe el cruce de
Para leer el dato
continuacin.
64
Manejo de Tablas
La salida sera:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
65
Manejo de Tablas
Ejemplo:
VAR_T ( &tabla )
INCREMENTA_TABLA( &tabla, 'COL', 'REN', 10 )
INCREMENTA_TABLA( &tabla, 'COL', 'REN', 10 )
IMP ( VALOR_TABLA( &tabla,'COL', 'REN' ) ) ;; IMPRIME
Salida:
20
Manejo de Tablas
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
66
Ejemplo:
VAR_T ( &tabla )
PON_VALOR_TABLA( &tabla, 0, 0, 00
PON_VALOR_TABLA( &tabla, 0, 1, 01
PON_VALOR_TABLA( &tabla, 0, 2, 02
PON_VALOR_TABLA( &tabla, 1, 0, 10
PON_VALOR_TABLA( &tabla, 1, 1, 11
PON_VALOR_TABLA( &tabla, 1, 2, 12
PON_VALOR_TABLA( &tabla, 2, 0, 20
PON_VALOR_TABLA( &tabla, 2, 1, 21
PON_VALOR_TABLA( &tabla, 2, 2, 22
IMPRIME_TABLA ( &tabla, 10, 20 )
)
)
)
)
)
)
)
)
)
Salida:
00
01
02
10
11
12
Nota:
CREA_GRAFICA ( tabla )
Esta instruccin como su nombre lo indica crea una grfica en base al contenido
de la tabla.
Manejo de Tablas
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
67
Este ejemplo crea una grfica definiendo como valor mximo el 40 y divisiones
de 5 en 5. Finalmente imprime el mensaje en la parte inferior de la ventana de la
grfica.
TRAE_SELECCION( &tabla )
Esta instruccin retorna en una cadena la lista de valores de la columna 0, en la
siguiente forma col1, col2, col3, col4, esta instruccin se utiliza generalmente en la
utilizacin de consultas SQL que posteriormente se analizar. Si la columna 0, rengln
0 es * entonces la instruccin retorna .
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
68
Variables de Ambiente
Variables de Ambiente
Las variables de ambiente determinan la forma de
comportamiento de algunas de las instrucciones del reporteador.
impresin
el
DECIMALES
Como ya se menciono anteriormente, determinan el nmero de decimales a
utilizar al momento de imprimir valores numricos y al momento de hacer operaciones
aritmticas.
COLUMNAS
Determina el nmero de columnas del reporte. Solo se utiliza para definir el
tamao si el reporte es DIRECTO de otra forma solo sirve para determinar la impresin
mediante la instruccin CENTRA.
RENGLONES
Determina el nmero de renglones del reporte. Solo se utiliza si el reporte es
DIRECTO de otra manera no tiene ningn funcionamiento.
FECHA_HOY
Esta es una variable que retorna la fecha del sistema, a esta variable no se le
puede asignar valor.
HORA_ACTUAL
Esta es una variable que retorna la hora del sistema, a esta variable no se le
puede asignar valor.
FORMATO_FECHA
Determina el formato a utilizar al momento de utilizar la instruccin de FECHA.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
69
Variables de Ambiente
FORMATO_PESOS
Determina el formato a utilizar al momento de utilizar la instruccin $.
SALIDA
Determina por cual de los dispositivos va a salir el reporte, los dispositivos
vlidos son PANTALLA, IMPRESORA o DISCO.
PAGINA
Esta variable retorna el nmero de la pgina en la que se encuentra en ese
momento.
FALSO
Es equivalente a 0.
VERDADERO
Es equivalente a 1.
CLAVE_REPORTE
Esta variable retorna en un valor alfanumrico la clave del reporte.
NOMBRE_REPORTE
Esta variable retorna en un valor alfanumrico el nombre del reporte.
FORMATO_BARRAS
Esta variable determina el formato de cdigo de barras a utilizar al momento de
utilizar la instruccin de impresin de cdigo de barras. (Vea la ayuda en lnea para ver
los formatos disponibles).
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
70
Variables de Ambiente
IMPRESION_DIRECTA
Esta variable retorna verdadero o 1 si se trata de un reporte definido como
impresin DIRECTA. Esta variable se utiliza cuando en el reporte si se desea saber cual
es el default de los reportes para en un mismo reporte hacer dos tipos de impresiones.
CD_DC
Esta variable retorna 0 o falso si la empresa con la que esta trabajando esta
configurada como Centro de Costo - > Departamento de los contrario retorna 1 lo que
significa que la configuracin es Departamento - > Centro de Costo.
ES_SUPERVISOR
Retorna si el usuario que ejecuta el reporte es supervisor del sistema o no.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
71
Capitulo 6
Manejo de Ciclos
Ciclos
Los ciclos son muy importantes y facilitan el trabajo, ahorrando tiempo y
espacio en cdigo. En el reporteador giro existen solo dos tipos de ciclos.
Ciclo REPITE
Este tipo de ciclo debe iniciar con la instruccin REPITE y terminar con la
instruccin HASTA seguido de una condicin lgica, esto significa que lo que esta
dentro del bloque del REPITE se va a ejecutar cuando menos una vez y hasta que la
condicin del HASTA sea verdadera.
Dentro de este bloque se puede utilizar cualquier tipo de instrucciones o
asignaciones excepto declaracin de variables.
La condicin lgica del HASTA puede contener varias condiciones lgicas
todas estas encerradas entre parntesis y separadas por un operador lgico.
Nota:
Finalmente todas las condiciones lgicas deben estar encerradas entre parntesis.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
72
Ciclo REPITE
Ejemplo:
VAR_N ( _num )
DECIMALES := 0
_num := 1
REPITE
_num := _num + 1
IMP( Nmero actual : , _num ) ;; IMPRIME
HASTA(_num > 100 )
Ciclo MIENTRAS
Este tipo de ciclo debe iniciar con la instruccin MIENTRAS seguido de una
condicin lgica y terminar con la instruccin FIN_MIENTRAS, esto significa que lo
que esta dentro del bloque se va a ejecutar siempre y cuando la condicin del
MIENTRAS sea verdadera.
Dentro de este bloque se puede utilizar cualquier tipo de instrucciones o
asignaciones excepto declaracin de variables.
La condicin lgica del MIENTRAS al igual que el REPITE puede contener varias
condiciones lgicas todas estas encerradas entre parntesis y separadas por un
operador lgico.
Ejemplo:
VAR_N ( _num )
_num := 1
MIENTRAS( _num < 100 )
_num := _num + 1
IMP( Nmero actual : , _num ) ;; IMPRIME
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
73
Ciclo MIENTRAS
A diferencia del ciclo REPITE este bloque no se ejecuta a menos que la
condicin sea valida.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
74
Capitulo 7
Uso de Condicionales
SI > FIN_SI
SI -> SI_NO -> FIN_SI
Las condicionales en el reporteador son de bastante utilidad ya que permite
hacer una disyuntiva entre una situacin. La condicional del reporteador funciona de la
misma manera que cualquier compilador, si se cumple la condicin se ejecuta lo del
primer bloque de lo contrario lo del segundo bloque, la sintaxis de esta instruccin es:
SI ( condicin )
Instrucciones
SI_NO
Instrucciones
FIN_SI
La condicin al igual que la de los ciclos MIENTRAS y REPITE puede tener varias
condiciones separadas por los operadores OR y AND o bien en espaol O e Y.
Finalmente todas las condiciones deben ir encerradas entre parntesis.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
75
Si -> FIN_SI
VAR_N ( _aux )
_aux := 0
MIENTRAS ( _aux < 100 )
_aux := _aux + 1
SI ( _aux > 50 )
IMP ( La variables aux es mayor a 50:
FIN_SI
FIN_MIENTRAS
, _aux ) ;; IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
76
Capitulo 8
Uso de SubRutinas
SubRutinas
El uso de subrutinas en el reporteador es de mucha ayuda ya que nos ahorra
tiempo, espacio y permite detectar y corregir errores ms fcilmente. La definicin de
una subrutina debe ir indicada por una instruccin de inicio y otra de fin
SUB_RUTINA nombre
FIN_SUB_RUTINA
Todas las instrucciones que estn dentro del bloque se ejecutarn cuando se
mande llamar la subrutina. Se recomienda que el nombre de la subrutina este en
minsculas para no confundir con nombres de instrucciones definidas en el
reporteador. Para mandar llamar una subrutina basta con escribir el nombre en el
lugar del cdigo en que se desea se ejecute. Dentro del bloque de la subrutina se
puede utilizar cualquier tipo de instrucciones excepto la declaracin de variables. Las
subrutinas tienen una similitud con las variables ya que si an no esta declarada la
subrutina no podemos hacer referencia a ella an cuando esta se encuentre definida
ms abajo. Dentro de una subrutina se puede a su vez mandar llamar otra subrutina.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
77
Uso de SubRutinas
Ejemplo:
VAR_N (_var )
VAR_N (_var2)
VAR_N (_total)
_var := 100
SUB_RUTINA imprime_asterisco
IMP ( COL(1), SUBTOTAL : ,
IMP ( COL(1), IVA
: ,
_total := _var2 + ( _var2 * 0.15
IMP ( COL(1), TOTAL
: ,
IMP ( COL(15), REPITETXT( *,
IMP ( COL(15), REPITETXT( *,
IMPRIME
FIN_SUB_RUTINA
_var2 := _var * 12
IMP ( DEPARTAMENTO DE COMPRAS )
IMP ( TOTAL DE COMPRAS: , _var2 )
IMPRIME
imprime_asterisco
_var2 := _var * 5
IMP ( DEPARTAMENTO DE VENTAS )
IMP ( TOTAL DE VENTAS: , _var2 )
IMPRIME
imprime_asterisco
_var2 )
;; IMPRIME
_var2 * 0.15 ) ;; IMPRIME
)
_total ) ;; IMPRIME
30 ) )
;; IMPRIME
30 ) )
;; IMPRIME
;; IMPRIME
;; IMPRIME
;; IMPRIME
;; IMPRIME
Salida:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
78
Uso de SubRutinas
DEPARTAMENTO DE COMPRAS
TOTAL DE COMPRAS: 1200.00
SUBTOTAL
IVA
TOTAL
: 1200.00
: 180.00
: 1380.00
******************************
******************************
DEPARTAMENTO DE VENTAS
TOTAL DE VENTAS: 500.00
SUBTOTAL
IVA
TOTAL
: 500.00
: 75.00
: 575.00
******************************
******************************
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
79
Capitulo 9
Manejo de Parmetros
Parmetros Generales
El reporteador giro permite pedir diferentes tipos de parmetros de manera que
podamos emitir el reporte de diferentes maneras de acuerdo a los parmetros
seleccionados.
Nota:
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
80
Parmetros Generales
El ejemplo anterior muestra los dos casos en que se puede utilizar la toma de
parmetros tanto numrico como alfanumrico, al final de la declaracin de
parmetros se utiliza la instruccin LEE_PARAMETROS que crea la ventana y muestra
los parmetros definidos.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
81
Parmetros Generales
Parmetros de Seleccin
NUEVO_PARAMETRO_SEL( Etiqueta, Valor1/Valor2/Valor3, var)
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
82
Parmetros de Seleccin
1
Valor2
Parmetros de Salida
NUEVO_PARAMETRO_SAL(Salida,PANTALLA/DISCO, var )
Este tipo de parmetro se utiliza solo para pedir la salida del reporte, esta
puede ser solo por 4 tipos que es PANTALLA, DISCO o EXCEL, para los cuales al
momento de pedir la salida mostrar un botn con un dibujo alusivo a la
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
83
Parmetros de Salida
opcin, si desea otro tipo de salida diferente a este el reporteador mostrar otro dibujo
estndar. La variable para este tipo de salida se recomienda que sea de tipo
alfanumrico. Una vez que se lean los parmetros el valor retornado se debe asignar a
la variable SALIDA que es la que determina el dispositivo por medio del cual se enva
el reporte.
Ejemplo:
84
valores vlidos, PARAMn este parmetro es opcional y se utiliza para relacionar una
campo con otro anterior mediante el indice2. Este tipo de parmetro puede utilizar de
tipo alfanumrico y tabla, si se trata de alfanumrico solo permite seleccionar un solo
valor de la lista por el contrario si la variable es de tipo tabla el compilador permite
capturar una o varias opciones, estos valores se guardan en la tabla en la columna 0 y
el rengln es el que varia, donde el rengln 0 corresponde al primer valor seleccionado
el 1 al segundo y as sucesivamente.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
85
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
86
Parmetros Fecha
NUEVO_PARAMETRO_FEC( Fecha, default, _fecha )
Este tipo de parmetro se utiliza para capturar valores de tipo fecha, donde el
segundo parmetro es la fecha por default a mostrar la cual debe estar en formato
alfanumrico, si esta se deja en blanco por omisin pone la fecha del da de hoy. Si
desea especificar una fecha tiene que ser en el formato DDMMAA. El parmetro debe
ser de tipo numrico ya que de esta forma es como se manejan las fechas.
Ejemplo:
FORMATO_FECHA := 2
NUEVO_PARAMETRO_FEC( Fecha, 010198, _fecha )
LEE_PARAMETROS
IMP ( FECHA( _fecha ) ) ;; IMPRIME
Salida:
01-01-98
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
87
Parmetros Fecha
Ejercicio:
Hacer un reporte donde en base a la fecha de hoy pida como parmetro el
nmero del mes como valor por default y en base al mes seleccionado imprimir la
fecha del primer da y el ltimo del mes. Ejemplo si hoy estamos en Septiembre por
default debe pedir el mes 9 en una captura libre e imprimir el primer da del mes y el
ltimo.
Borra Parmetros
BORRA_PARAMETROS
Esta instruccin se utiliza para eliminar del buffer los parmetros antes
utilizados esto con la finalidad de que en la ventana que se despliegan los parmetros
solo aparezcan los nuevos.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
88
Capitulo 10
Base de Datos
ABRE_BASE( base )
Esta instruccin abre la base de datos especificada como parmetro y la deja
lista para hacer uso de ella. El reportedor busca la base que se localice en el directorio
de trabajo de la empresa que esta utilizando. Puede tambin hacer referencia
directamente al la ruta y el nombre de la base. Una vez que se abre la base de datos el
apuntador de registro se coloca en el primer registro de la tabla.
Nota:
El reporteador ha sido validado para que cuando se haga referencia a un campo de una
base de datos que an esta cerrada que automticamente la abra pero se recomienda
que siempre utilice esta instruccin
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
89
CIERRA_BASE( base )
Esta instruccin es la operacin inversa a la anterior pero la diferencia es que
esta en realidad no se utiliza mucho ya que el reporteador al terminar el reporte aun
cuando la terminacin sea anormal cierra todas las bases de datos abiertas por lo que
esta instruccin se puede omitir. En ocasiones talvez requiera de cerrar la base de
datos para posteriormente abrirla y es entonces cuando puede ser til.
SIGUIENTE_REGISTRO( base )
Esta instruccin mueve el apuntador de registro al siguiente registro de la tabla.
Si la tabla se encuentra en el ltimo registro entonces la instruccin no hace nada.
REGISTRO_ANTERIOR( base )
Esta instruccin es la operacin inversa de la anterior ya que mueve el
apuntador un registro antes. Al igual que la instruccin anterior si esta se encuentra es
el primer registro y se ejecuta no genera ningn resultado.
PRIMER_REGISTRO( base )
Esta instruccin mueve el apuntador de registro al inicio de la base. Por omisin
al abrir una base de datos se coloca en el inicio de la base pero se recomienda que
despus de abrir la base se ejecute esta instruccin para asegurarnos resetear el
apuntador al inicio.
ULTIMO_REGISTRO( base )
Esta instruccin es la operacin contraria a la anterior ya que mueve el
apuntador al ltimo registro de la tabla.
FIN_BASE( base )
Esta instruccin retorna un valor boleano de verdadero o falso. Retorna
verdadero cuando la tabla se encuentra en el final de la base de datos de lo contrario
retorna 0 o falso.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
90
INICIO_BASE( base )
Esta instruccin es similar a la anterior solo que esta retorna verdadero cuando
la tabla se encuentra al inicio de la misma y falso de lo contrario.
Bueno hasta ahora se ha visto como abrir base de datos y como moverse entre
ella, pero para hacer referencia a un campo tiene que ser de la siguiente manera.
base:campo
Todos los campos de cualquier tabla pueden tanto retornar el valor que tienen
almacenado como asignarles el valor deseado, siempre y cuando sea del tipo correcto.
$aux := base:campo
base:campo := $aux
Para saber las bases de datos disponibles y sus campos puede presionar el
botn de base de datos donde podr ver todas las tablas con sus respectivos campos y
el tipo de datos asociado a cada uno de ellos, para que el editor automticamente
escriba la sintaxis del campo deseado hago doble click en el campo deseado.
Con lo anterior antes visto podemos hacer un pequeo programa que recorra
una base de datos e imprima su contenido.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
91
FORMATO_FECHA := 2
ABRE_BASE( EMPPRIN )
PRIMER_REGISTRO( EMPPRIN )
MIENTRAS( FIN_BASE( EMPPRIN ) = FALSO )
IMP ( COL(10), EMPPRIN:CLAVE )
IMP ( COL(20), FECHA( EMPRIN:INGRESO ) )
IMPRIME
SIGUIENTE_REGISTRO( EMPPRIN )
FIN_MIENTRAS
Este ejemplo sencillo recorre la base de datos EMPPRIN que se trata de los
datos principales de los trabajadores e imprime en la columna 10 la clave del
empleado y en la columna 20 la fecha de ingreso.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
92
ABRE_BASE( EMPPRIN )
SI ( TRAE_REGISTRO( EMPPRIN, 001 ) )
IMP ( Registro , EMPPRIN:CLAVE, encontrado... )
SI_NO
IMP ( Registro no encontrado... )
FIN_SI
IMPRIME
OPCIONES_LOCALIZA( 'PARCIAL;MAYUSCULAS' )
LOCALIZA_REGISTRO( 'EMPPRIN', 'NOMBREP;NOMBREN', 'PEREZ', 'JUAN' )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
93
Nota:
FORMATO_PESOS := 2
ABRE_BASE( MINIMO )
SI ( TRAE_REGISTRO_VIG( MINIMO, FECHA_HOY ) )
IMP ( Salario mnimo DF al da de hoy : , $( MINIMO:MINIMO A ) )
SI_NO
IMP ( No hay cuotas vigentes a la fecha de hoy)
FIN_SI
IMPRIME
TOTAL_REGISTROS( base )
Esta instruccin retorna el nmero de registros que posee la tabla enviada como
parmetro.
Ejemplo:
DECIMALES := 0
ABRE_BASE( EMPPRIN )
IMP ( El nmero de registros de la tabla de empleados es de : )
IMP ( TOTAL_REGISTROS( tabla ) ) ;; IMPRIME
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
94
FORMATO_FECHA := 2
ABRE_BASE( EMPPRIN )
MUESTRA_AVANCE( EMPPRIN, Tabla de Empleados )
PRIMER_REGISTRO( EMPPRIN )
MIENTRAS( FIN_BASE( EMPPRIN ) = FALSO )
IMP ( COL(10), EMPPRIN:CLAVE )
IMP ( COL(20), FECHA( EMPRIN:INGRESO ) )
IMPRIME
SIGUIENTE_REGISTRO( EMPPRIN )
FIN_MIENTRAS
Ejercicio:
Hacer un reporte que muestre la clave y nombre del empleado y que imprima la
fecha de todos sus movimientos de sueldo.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
95
Ejemplo:
FORMATO_FECHA := 2
FORMATO_PESOS := 2
ABRE_BASE( EMPPRIN )
ABRE_BASE( EMPSDO ) ;; #BASE DE SUELDOS
PRIMER_REGISTRO( EMPPRIN )
MIENTRAS( FIN_BASE( EMPPRIN ) = FALSO )
IMP( EMPPRIN:CLAVE ) ;; IMPRIME
PRIMER_REGISTRO( EMPSDO )
MIENTRAS ( FIN_BASE( EMPSDO ) = FALSO )
SI ( EMPSDO:CLAVE = EMPPRIN:CLAVE )
IMP ( COL(10), EMPSDO:TIPO )
IMP ( COL(20), FECHA( EMPSDO:FECHA ) )
IMP ( COL(40), $( EMPSDO:SDO3 ) )
IMPRIME
FIN_SI
SIGUIENTE_REGISTRO( EMPSDO )
FIN_MIENTRAS
SIGUIENTE_REGISTRO( EMPPRIN )
FIN_MIENTRAS
Este reporte en si parece una buena solucin pero si nos damos cuenta estamos
recorriendo la tabla de sueldos n veces donde n es el nmero de empleados y eso hace
el reporte de una complejidad de n*n. Este reporte con unos 100 trabajadores tardara
aproximadamente unos 40 Seg y entre mas trabajadores existan esto se disparara en
forma exponencial.
La instruccin USA_ARCHIVO nos ayuda a resolver este tipo de problemas y
adems de facilitar el trabajo lo hace ms veloz. El siguiente es el mismo ejemplo pero
utilizando la instruccin USA_ARCHIVO.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
96
FORMATO_FECHA := 2
FORMATO_PESOS := 2
ABRE_BASE( 'EMPPRIN' )
USA_ARCHIVO( 'EMPPRIN', 'EMPSDO', 'CLAVE' )
PRIMER_REGISTRO( 'EMPPRIN' )
MIENTRAS( FIN_BASE( 'EMPPRIN' ) = FALSO )
IMP( 'EMPPRIN':'CLAVE' ) ;; IMPRIME
PRIMER_REGISTRO( 'EMPSDO' )
MIENTRAS ( FIN_BASE( 'EMPSDO' ) = FALSO )
IMP ( COL(10), 'EMPSDO':'TIPO' )
IMP ( COL(20), FECHA( 'EMPSDO':'FECHA' ) )
IMP ( COL(40), $( 'EMPSDO':'SDO3' ) )
IMPRIME
SIGUIENTE_REGISTRO( 'EMPSDO' )
FIN_MIENTRAS
SIGUIENTE_REGISTRO( 'EMPPRIN' )
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
97
AGREGA_REGISTRO( base )
Esta instruccin pone la tabla en modo de insercin y deja los campos en blanco
para iniciar con la asignacin de valores. Al terminar de asignar los valores es
necesario confirmar la insercin con la instruccin
GRABA_BASE( base ).
Ejemplo:
ABRE_BASE( EMPPRIN )
AGREGA_REGISTRO( EMPPRIN )
EMPPRIN:CLAVE := 001
EMPPRIN:NOMBREN := EDUARDO
GRABA_BASE( EMPPRIN )
Al agregar registros hay que tener cuidado que no se duplique el campo llave ya
que esto produce una terminacin anormal del reporte. Para esto la solucin sera la
siguiente.
ABRE_BASE( EMPPRIN )
SI ( TRAE_REGISTRO( EMPPRIN, 001 ) = FALSO )
AGREGA_REGISTRO( EMPPRIN )
EMPPRIN:CLAVE := 001
FIN_SI
EMPPRIN:NOMBREN := EDUARDO
GRABA_BASE( EMPPRIN )
Este ejemplo verifica si existe el registro con la clave 001, si no existe lo inserta
y le asigna la clave 001 y si existe solo le asigna el valor del nombre ya que la clave ya
esta asignada. Por esta razn es por la que no existe instruccin para modificar ya que
esto es directo.
BORRA_REGISTRO( base )
Esta instruccin borra el registro al que hace referencia el apuntador de
registro. Hay que tener mucho cuidado con esta instruccin ya que una vez que se
elimina un registro no hay manera de recuperarlo. Una vez que se elimina un registro
el apuntador de registro se mueve al siguiente registro.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
98
EDITA_TABLA( base )
Esta instruccin permite editar cualquier tabla del sistema en el formato
estndar de catlogo, desde esta ventana podr agregar, modificar y borrar registros.
ABRE_BASE_SQL( SERVIDOR\BASE\TABLA )
En esta instruccin, el primer parmetro que se indica es el SERVIDOR en donde se
encuentra la instancia del SQL a la que queramos tener acceso. Se le puede indicar
con en nombre o la IP del servidor. El segundo parmetro es la Base de datos
especifica y como tercer valor, tenemos que indicarle la tabla fsica en donde est la
informacin. Un ejemplo podra ser el siguiente:
ABRE_BASE_SQL ( MAINSERVER\CONTABILIDAD\POLIZA )
PRIMER_REGISTRO ( POLIZA )
MIENTRAS ( FIN_BASE ( POLIZA ) = FALSO )
IMP ( POLIZA:NUMERO ) ;; IMPRIME
SIGUIENTE_REGISTRO ( POLIZA )
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
99
Nota:
Para poder conectarse desde el Reporteador Giro a otra base de SQL Server, se debe
agregar el inicio de sesin Supervisor_giro a la seccin de Seguridad del Administrador
Corporativo, y en el apartado de Usuarios de la base de datos que se pretende accesar.
VAR_N ( _dato )
_dato := STORED_PROCEDURE( MAINSERVER\CONTABILIDAD, act_empleados, _var=1 )
SI ( _dato = 1 )
IMP ( Se ejecuto con xito el SP ) ;; IMPRIME
FIN_SI
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
100
Consultas SQL
CONSULTAS SQL
Las consultas de SQL en el reporteador son sumamente importantes ya que la
gran mayora de reportes los utilizan debido a que ahorran tiempo de ejecucin y
facilitan la programacin del mismo.
El SQL que maneja el reporteador es el ANSI SQL por lo que se puede utilizar
cualquiera de las instrucciones que este lenguaje proporciona, aqu veremos solo las
bsicas para crear tablas que se adecuen a nuestras necesidades.
La finalidad del uso del SQL es debido a que podemos crear una consulta que
llene 100% nuestras necesidades y en base a eso crear una tabla la cual solo es
necesario recorrerla sin necesidad de hacer comparaciones en cada uno de los
registros para ver si cumple con los requisitos que solicitamos.
Lo primero que se hace para crear una consulta SQL es seleccionar los campos
que vamos a requerir o que deseamos que contenga la consulta para esto se utiliza la
instruccin SELECT, esta debe ir seguida del nombre de los campos que deseamos o
bien un * para indicar que requerimos todos.
Nota:
Cuando el nombre del campo contiene un espacio en blanco todo el campo se tiene que
encerrar con .
Ejemplo:
SELECT *
SELECT clave, feching, nombre campo
SELECT clave, nombrep || || nombrem || || nombren as nombre
En el ejemplo anterior la primera instruccin selecciona todos los campo, la
segunda solo el campo de clave y fecha de ingreso, y la tercera hace una
concatenacin de 3 campos y se van a identificar como nombre.
Posteriormente se define que tablas se van a utilizar, obviamente los campos
indicados en el SELECT deben corresponder a la tabla definida ya que de lo contrario
causa un error, la instruccin para definir las tabla es FROM la cual va seguida por una
o varias tablas separadas por ,.
Ej.
SELECT *
FROM EMPPRIN
SELECT EMPPRIN. CLAVE, EMPSDO. SDO1
FROM EMPPRIN, EMPSDO
SELECT E. CLAVE, S. SDO1
FROM EMPPRIN E, EMPSDO S
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
101
Consultas SQL
Si se utiliza mas de una tabla, la consulta realiza un producto X con cada una de
las tablas seleccionadas por lo que es necesario filtrar la tabla. Para filtrar una tabla se
utiliza la instruccin WHERE la cual puede llevar varias condiciones separadas cada
una por instrucciones AND y OR.
SELECT E. CLAVE, S. SDO1, S. TIPO
FROM EMPPRIN E, EMPSDO S
WHERE S. CLAVE = E. CLAVE AND S. TIPO = M
La instruccin WHERE puede utilizar variables que an no sabe su valor, para
esto se utilizan los :.
Ejemplo:
SELECT E. CLAVE, S. SDO1, S. TIPO. S. FECHA
FROM EMPPRIN E, EMPSDO S
WHERE S. CLAVE = E. CLAVE AND S. TIPO = M AND S. FECHA = :fecha
Finalmente la instruccin ORDER BY que se utiliza para definir el orden que
deseamos aplicar a la tabla, esta puede llevar varios ndices donde cada uno debe ir
separados por ,, por default la consulta toma los ordenes ascendentes si desea lo
contrario debe agregar la instruccin DESC despus del ndice.
Ejemplo:
SELECT E. CLAVE, S. SDO1, S. TIPO. S. FECHA
FROM EMPPRIN E, EMPSDO S
WHERE S. CLAVE = E. CLAVE AND S. TIPO = M AND S. FECHA = :fecha
ORDER BY E. CLAVE, S. FECHA DESC
El SQL tambin tiene instrucciones para agregar, modificar y borrar registros,
pero debido a que el reporteador ya posee estas funciones omitiremos estas
instrucciones.
Para aplicar todo esto en el reporteador se debe utilizar una variable de tipo
tabla en la cual debemos almacenar las instrucciones en la columna 0, para esto se
utiliza la instruccin AGREGA_VALOR_COL.
Ejemplo:
VAR_T ( &tabla )
AGREGA_VALOR_COL ( &tabla, 0, SELECT * )
AGREGA_VALOR_COL ( &tabla, 0, FROM EMPPRIN E )
AGREGA_VALOR_COL ( &tabla, 0, ORDER BY E. CLAVE )
CREA_CONSULTA( EMPPRIN, &tabla )
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
102
Consultas SQL
La instruccin CREA_CONSULTA del ejemplo anterior asigna la consulta
especificada a una tabla llamada EMPPRIN, hasta este momento an no se hace la
consulta, esta se realiza hasta el momento que hagamos referencia a un registro.
Ejemplo:
VAR_T ( &tabla )
AGREGA_VALOR_COL ( &tabla, 0, SELECT * )
AGREGA_VALOR_COL ( &tabla, 0, FROM EMPPRIN E )
AGREGA_VALOR_COL ( &tabla, 0, ORDER BY E. CLAVE )
CREA_CONSULTA( EMPPRIN, &tabla )
PRIMER_REGISTRO( EMPPRIN )
#hasta este momento se realiza la consulta.
MIENTRAS( FIN_BASE( EMPPRIN ) = FALSO )
IMP ( EMPPRIN:CLAVE ) ;; IMPRIME
SIGUIENTE_REGISTRO( EMPPRIN )
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
103
Consultas SQL
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
104
Capitulo 11
Instrucciones de Empleados
Estas instrucciones retornan informacin referente a los empleados por lo que
es necesario que tenga abierta la base EMPPRIN.
Vigencia de Trabajadores
ES_VIGENTE( fecha )
Esta instruccin retorna VERDADERO si el trabajador actual es vigente a la
fecha enviada como parmetro, de lo contrario retorna FALSO.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
105
Kardex de Sueldos
VAR_A ( $desc )
ABRE_BASE( EMPPRIN )
PRIMER_REGISTRO( EMPPRIN )
SI ( TRAE_REGISTRO( PUESTO, TRAE_DSP ( P, FECHA_HOY ) ) )
$desc := PUESTO:DESCRIPCION
SI_NO
$desc := Puesto Desconocido
FIN_SI
IMP ( El puesto del empleado al da de hoy es : , $desc ) ;; IMPRIME
TRAE_MOV_FECHA( fecha )
Esta instruccin busca el movimiento de salario vigente a la fecha enviada como
parmetro y lo pone como registro actual en la base de sueldos.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
106
Ejemplo:
ABRE_BASE ( EMPPRIN )
USA_ARCHIVO ( EMPPRIN, EMPSDO, CLAVE )
MIENTRAS ( FIN_BASE( EMPPRIN ) = FALSO )
TRAE_MOV_FECHA ( FECHA_HOY )
IMP ( El sueldo vigente del trabajador es : , $ ( EMPSDO:SDO1 ))
IMPRIME
SIGUIENTE_REGISTRO ( EMPPRIN )
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
107
Ejemplo:
Vacaciones
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
108
Ejemplo:
_ret:=0
ABRE_BASE ( EMPPRIN )
PRIMER_REGISTRO ( EMPPRIN )
MIENTRAS ( FIN_BASE ( EMPPRIN ) = FALSO )
_ret := TRAE_RETARDOS( FECHA_HOY-30, FECHA_HOY)
IMP ( Nmero de retardos en los 30 das pasados :, _ret )
IMPRIME
SIGUIENTE_REGISTRO(EMPPRIN)
FIN_MIENTRAS
_ret:=0
ABRE_BASE ( 'EMPPRIN' )
PRIMER_REGISTRO ( 'EMPPRIN' )
MIENTRAS ( FIN_BASE ( 'EMPPRIN' ) = FALSO )
_ret:=TRAE_VACACIONES( FECHA_HOY-30, FECHA_HOY, VERDADERO)
IMP ( 'Vacaciones efectivas en los 30 das pasados :', _ret )
IMPRIME
SIGUIENTE_REGISTRO('EMPPRIN')
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
109
Ejemplo:
ABRE_BASE ( 'EMPPRIN' )
PRIMER_REGISTRO ( 'EMPPRIN' )
MIENTRAS ( FIN_BASE ( 'EMPPRIN' ) = FALSO )
IMP ( 'Das inhbiles de hoy en 30 : ' )
IMP ( DIAS_INHABILES( FECHA_HOY, FECHA_HOY+30,
IMPRIME
SIGUIENTE_REGISTRO('EMPPRIN')
FIN_MIENTRAS
'EMPPRIN':'CALENDARIO', 0, 0 ))
SDO_VACACIONAL_DIAS(Fecha)
Esta funcin retorna los das de saldo vacacional a la fecha especificada. Este
saldo depende de los parmetros definidos en la opcin de configuracin de
vacaciones.
Ejemplo:
_sdo:= 0
ABRE_BASE ( 'EMPPRIN' )
PRIMER_REGISTRO ( 'EMPPRIN' )
MIENTRAS ( FIN_BASE ( 'EMPPRIN' ) = FALSO )
_sdo:=SDO_VACACIONAL_DIAS(FECHA_HOY)
IMP ( 'Saldo en das al da de hoy :', _sdo ) ;; IMPRIME
SIGUIENTE_REGISTRO('EMPPRIN')
FIN_MIENTRAS
SDO_VACACIONAL_PRIMA(Fecha)
Esta funcin retorna la prima de saldo vacacional a la fecha especificada. Este
saldo depende de los parmetros definidos en la opcin de configuracin de
vacaciones.
Vacaciones
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
110
Ejemplo:
_sdo:=0
ABRE_BASE ( 'EMPPRIN' )
PRIMER_REGISTRO ( 'EMPPRIN' )
MIENTRAS ( FIN_BASE ( 'EMPPRIN' ) = FALSO )
_sdo:=SDO_VACACIONAL_PRIMA(FECHA_HOY)
IMP ( 'Saldo en prima al da de hoy :', _sdo ) ;; IMPRIME
SIGUIENTE_REGISTRO('EMPPRIN')
FIN_MIENTRAS
SDO_VACACIONAL_X_PAGAR(Fecha)
Esta funcin retorna los das de saldo vacacional por pagar a la fecha
especificada. Este saldo depende de los parmetros definidos en la opcin de
configuracin de vacaciones.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
111
Capitulo 12
SALIDA_REPORTE ( Path )
Esta instruccin se utiliza cuando se desea exportar informacin a un archivo de
texto. Path es la ruta a la cual se mandara el archivo y el nombre con el que ser
creado.
Ejemplo:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
112
Nota:
Nota:
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
113
Nota:
Ejemplo:
EXISTE_ARCHIVO ( archivo )
Esta instruccin nos permite verificar si existe determinado archivo dentro de algn
directorio especfico. En el parmetro archivo le indicamos a la funcin la ruta en
donde posiblemente se localiza el documento.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
114
Ejemplo:
La funcin
Altas.xls
clave
nombre
0001
IKER
altas.xls
dentro de la carpeta:
rfc
DISI770829QK0
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
115
Teniendo
como
inicio
la
instruccin
EXCEL
con
el
parmetro:
AGREGA_HOJA_PLANTILLA, la cual crea una copia de nuestro archivo y lo prepara
para leerlo por Giro.
Se utiliza el parmetro TRAE_VALOR para asignar a una
variable el valor de la columna de Excel y luego se procede a la rutina de grabado en
las tablas del sistema.
Ejercicio:
Hacer un reporte que genere un archivo de texto con la clave del trabajador, el
sueldo actual, la fecha del movimiento y un aumento de sueldo del 15%.
Posteriormente hacer un reporte que lea ese archivo y agregue un nuevo registro para
cada uno de los trabajadores en el archivo con su nuevo sueldo y con fecha de 10 das
despus a la fecha de su ltima modificacin.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
116
Capitulo 13
ABRE_BASE ( 'EMPPRIN' )
SI ( TRAE_REGISTRO( 'TIPONOM', 'SEM' ) )
SI ( TRAE_REGISTRO ( 'PERIODO', 'SEM', 'TIPONOM':'ACTUAL' ) = FALSO )
TERMINA_REPORTE
FIN_SI
FIN_SI
USA_ARCHIVO( 'EMPPRIN', 'EMPNOM', 'CLAVE' )
117
catlogo de conceptos del periodo abierto y la tabla de NOMINA hace referencia a cada
uno de los registros del kardex de nmina de los empleados. Estas tabla como
cualquier otra se puede agregar y borrar registros pero se recomienda que se haga
desde el reporteador.
Una vez teniendo lista la base de nmina el sistema automticamente al
cambiar de empleado pone como activo su kardex de nmina y se puede hacer
referencia a las siguientes Instrucciones.
Capturas de Nmina
Para comprender la referencia que se hace cuando se mencionan capturas de nmina y
totales de nmina, es necesario enfatizar que en Giro cada tipo de nomina dado de
alta en el sistema, llmense nominas Semanales, Quincenales, Mensuales, etc., tiene
su catlogo propio de periodos de nmina, que es el lugar donde se calcula y se
guardan los montos a pagar al empleado.
Cada periodo de Nmina tiene sus propias frmulas con las cuales se hace posible el
clculo de la misma; cada vez que se cierra una nmina -proceso que se efecta para
pasar al siguiente periodo- las frmulas se copian en automtico. Para entrar al
cdigo de estos periodos se debe entrar al men:
Catlogos>de Nmina>Conceptos
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
118
Capturas de Nmina
y aparece la siguiente
En esta ventana del concepto , se puede observar varios campos que se pueden
acceder por medio del Reporteador Giro. Nos vamos a enfocar en la seccin de
CAPTURAS, ( abajo a la izquierda ) donde aparecen 3 campos, en el ejemplo el
primero de ellos DIAS DE SUELDO corresponde a la captura del concepto 01 CAP1,
el segundo, MONTO X SUELDO es parte de la captura 2 CAP2, y el tercero que
permanece en blanco sera la captura 3 CAP3.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
119
Capturas de Nmina
CAP1( clave_concepto )
CAP2( clave_concepto )
CAP3( clave_concepto )
Estas instrucciones pueden utilizarse para que nos retorne el valor almacenado
en la captura seleccionada del concepto indicado en la clave o bien puede utilizarse
para asignar el valor a almacenar en la captura del concepto.
_aux := CAP1(01)
CAP2(05) := _aux
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
120
Capturas de Nmina
TOTAL( clave )
Es similar a las anteriores solo que esta hace referencia al total del concepto.
Con esta instruccin podemos hacer uso del monto calculado en el proceso de la
nmina que es en si, el que se despliega en la mayora de reportes y recibos del
trabajador.
CAP1C( clave_concepto )
CAP2C( clave_concepto )
CAP3C( clave_concepto )
Estas instrucciones son similares a las anteriores solo que estas almacenan
valores alfanumricos.
CAP1C(02) := Hola
$aux := CAP1C(02)
Ejemplo :
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
121
Instrucciones Especiales
PON_TOTAL_0
Esta instruccin pone el TOTAL de todos los conceptos del kardex del empleado
seleccionado en 0.
PON_CAPTURAS_0
Esta instruccin pone las capturas CAP1, CAP2, CAP3 de todos los conceptos del
Krdex del empleado seleccionado en 0.
Estas dos instrucciones hacen cambios en el kardex de nmina del empleado pero
estos cambios no toman efecto hasta que se hace el grabado de la base de nmina.
GRABA_BASE( EMPNOM )
Nota:
CONCEPTO_CAPTURADO( CONCEPTO )
Esta instruccin retorna verdadero si el concepto al que hacemos referencia si
existe dentro del kardex del empleado.
CAPTURA_CONCEPTO( CONCEPTO )
Esta instruccin crea el concepto dentro del kardex del empleado para
posteriormente poder asignar valores a sus capturas.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
122
Kardex de Nmina
Krdex de Nmina
Los kardex de nmina son tiles para llevar subtotales. Los kardex son en si
tablas donde se almacena los conceptos y totales de los mismos. Por omisin siempre
existe un kardex creado que es el GENERAL que implcitamente se utiliza con cada
trabajador. Para crear un kardex se utiliza la siguiente instruccin.
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
123
Kardex de Nmina
Ejemplo:
VAR_T ( &tabla )
_cont := 0
CREA_KARDEX( 'UNO' )
CREA_KARDEX( 'DOS' )
CREA_KARDEX( 'TOTAL' )
SUB_RUTINA imprime_tabla
IMPRIME_TABLA ( &tabla , 5 , 10 , 0 , 0 , 0 , 30 , 50 , 55 , 0 , 0 , 0 , 75 , 0 , 96 , 0 , 0 , 0 , 116 )
FIN_SUB_RUTINA
SI ( TRAE_REGISTRO ( 'TIPONOM', 'QUI' ) )
SI ( TRAE_REGISTRO ( 'PERIODO', 'QUI', 'TIPONOM':'ACTUAL' ) ) ;; FIN_SI
FIN_SI
USA_ARCHIVO ( 'EMPPRIN', 'EMPNOM', 'CLAVE' )
PRIMER_REGISTRO ( 'EMPPRIN' )
MIENTRAS ( FIN_BASE ( 'EMPPRIN' ) = FALSO )
SI ( TOTAL_PERCEPCIONES > 0 )
USA_KARDEX( 'GENERAL' )
SI ( _cont = 0 )
ACUMULA_TOTALES ( 'UNO' )
SI_NO
ACUMULA_TOTALES ( 'DOS' )
_cont := -1
FIN_SI
ACUMULA_TOTALES ( 'TOTAL' )
IMP ( COL(1), 'EMPPRIN':'CLAVE'
'EMPPRIN':'NOMBREN' ) ;; IMPRIME
TABULA_KARDEX_NOMINA( &tabla, 12 )
imprime_tabla
IMPRIME
_cont := _cont + 1
FIN_SI
SIGUIENTE_REGISTRO ( 'EMPPRIN' )
FIN_MIENTRAS
IMPRIME
IMP ( 'TOTALES UNO: ' ) ;; IMPRIME
USA_KARDEX( 'UNO' )
TABULA_KARDEX_NOMINA( &tabla, 12 )
imprime_tabla
IMPRIME
IMPRIME
COL(10),
'EMPPRIN':'NOMBREP'
'
'
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
124
Kardex de Nmina
TOTAL_PERCEPCIONES
Esta instruccin retorna el total de percepciones hasta ese momento en el
kardex actual.
TOTAL_DEDUCCIONES
Esta instruccin retorna el total de deducciones hasta ese momento en el
kardex actual.
TOTAL_NEGATIVO
Retorna verdadero si el total las percepciones menos las deducciones es
negativo.
Acumulados de Nmina
Solo existen dos instrucciones para hacer referencia a los acumulados, pero
para esto es necesario que establezca la relacin entre el archivo de acumulados y la
base de empleados utilizando la instruccin USA_ARCHIVO.
125
Acumulados de Nmina
ENE, FEB, MAR, ABR, MAY, JUN, JUL, AGO, SEP, OCT, NOV, DIC.
Una variante que tiene esta instruccin es que Mes puede ser tambin :
BIMESTRE1,
BIMESTRE2,
BIMESTRE3,
BIMESTRE4,
BIMESTRE6, SEMESTRE1, SEMESTRE2, ANUAL, ESPECIAL,
AGUINALDO.
BIMESTRE5,
FINIQUITO,
ACUM_ANUAL ( CONCEPTO )
Ejemplo:
FORMATO_PESOS := 2
DECIMALES:= 2
ABRE_BASE( EMPPRIN )
USA_ARCHIVO ( EMPPRIN, EMPACUM, CLAVE )
PRIMER_REGISTRO( EMPPRIN )
MIENTRAS ( FIN_BASE ( EMPPRIN ) = FALSO )
SI ( ACUM_MENSUAL ( ENE, 01 ) <> 0 )
IMP ( COL(1), EMPPRIN:CLAVE )
IMP ( COL(10), DER( $(ACUM_MENSUAL(ENE,01)), 10) )
IMPRIME
FIN_SI
SIGUIENTE_REGISTRO( EMPPRIN )
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
126
Acumulados de Nmina
Ejemplo:
VAR_N ( _acum )
FORMATO_PESOS := 2
DECIMALES:= 2
ABRE_BASE( EMPPRIN )
USA_ARCHIVO ( EMPPRIN, EMPACUM, CLAVE )
PRIMER_REGISTRO( EMPPRIN )
MIENTRAS ( FIN_BASE ( EMPPRIN ) = FALSO )
SI ( TRAE_REGISTRO ( EMPACUM, EMPPRIN:CLAVE, 01 ) )
SI ( 'EMPACUM':'ENE' <> 0 )
_acum := EMPACUM:ENE
_acum := _acum + 1000
EMPACUM:ENE := _acum
GRABA_BASE( EMPACUM )
IMP ( COL(1), EMPPRIN:CLAVE )
IMP ( COL(10), DER( $(ACUM_MENSUAL(ENE,01)), 10) )
IMPRIME
FIN_SI
FIN_SI
SIGUIENTE_REGISTRO( EMPPRIN )
FIN_MIENTRAS
Copyright 2003. Todos los derechos reservados. (Copia fiel del original )
127