Subido por Jorge Espinoza

acl intermedio

Anuncio
PLAN DE PROFESIONALIZACIÓN DE LA ASF
PROGRAMA ANUAL DE RUTAS (PAR) 2015
ACL INTERMEDIO
(ACL: Audit Command Language)
Lenguaje de Comandos de Auditoria
Unidad General de Administración
Instituto de Capacitación y Desarrollo en Fiscalización Superior
Agosto de 2015
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Objetivo.................................................................................................................................... 5
Introducción ............................................................................................................................. 5
La Auditoría Superior de la Federación busca proporcionar herramientas que ayude en el
proceso de revisiones diarias de los fiscalizadores de la ASF.................................................. 5
Lección 1: Comandos para el Análisis de datos ....................................................................... 6
Comando estadísticas .......................................................................................................... 6
Reutilización de comandos ................................................................................................... 7
Comando perfil ..................................................................................................................... 9
Comando estratificar ............................................................................................................ 9
Comando clasificar ............................................................................................................. 11
Comando histograma ......................................................................................................... 15
Lección 2: Concentración de datos ........................................................................................ 18
Comando resumir ............................................................................................................... 18
Comando generar tablas cruzadas ..................................................................................... 20
Lección 3: Integridad de datos ............................................................................................... 23
Integridad de la Información ............................................................................................... 23
Manejo de datos errados .................................................................................................... 23
Datos inválidos ................................................................................................................... 23
Comando verificar .............................................................................................................. 23
Análisis de Información Operativa ...................................................................................... 25
Comando examinar secuencia ........................................................................................... 25
Comando faltantes ............................................................................................................. 26
Comando buscar duplicados .............................................................................................. 29
Lección 4: Análisis de datos con fechas ................................................................................. 31
Comparación de fechas ...................................................................................................... 33
Cálculo de días de antigüedad ........................................................................................... 35
Comando antigüedad ......................................................................................................... 37
2
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Lección 5: Manejo de funciones en ACL ................................................................................ 39
Reglas generales funciones ............................................................................................... 39
Funciones matemáticas ...................................................................................................... 40
ABSOLUTE() .................................................................................................................. 40
MAXIMUM() .................................................................................................................... 41
MINIMUM() ..................................................................................................................... 42
ROUND() ........................................................................................................................ 42
Funciones fecha / hora ....................................................................................................... 43
AGE().............................................................................................................................. 43
CTOD() ........................................................................................................................... 44
DATE()............................................................................................................................ 46
TIME( ) ............................................................................................................................ 46
Funciones de conversión .................................................................................................... 47
DEC().............................................................................................................................. 47
STRING() ........................................................................................................................ 48
VALUE() ......................................................................................................................... 49
Funciones de cadena ......................................................................................................... 50
AT()................................................................................................................................. 50
CLEAN() ......................................................................................................................... 51
EXCLUDE() .................................................................................................................... 52
FIND() ............................................................................................................................. 53
INCLUDE()...................................................................................................................... 53
LENGTH( ) ...................................................................................................................... 54
LTRIM( ) ......................................................................................................................... 54
TRIM() ............................................................................................................................ 55
ALLTRIM( ) ..................................................................................................................... 55
3
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
REMOVE( ) ..................................................................................................................... 55
SUBSTRING( )................................................................................................................ 57
UPPER() ......................................................................................................................... 57
Funciones de acceso a bajo nivel ....................................................................................... 58
FILESIZE( ) ..................................................................................................................... 58
FTYPE() .......................................................................................................................... 59
RECLEN( ) ...................................................................................................................... 59
RECNO() ........................................................................................................................ 60
TEST() ............................................................................................................................ 61
Lección 6: Exportar datos ...................................................................................................... 62
Comando exportar a otra aplicación ................................................................................... 62
Exportar Todos los Campos ............................................................................................... 62
Exportar Campos Seleccionados........................................................................................ 64
Bibliografía ............................................................................................................................. 67
4
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Objetivo
Aprender las facilidades del software de auditoría ACL para el análisis de datos y el
diseño e implementación de pruebas de auditoría.
Introducción
Este es el segundo curso de la herramienta CAATT (Computer Assisted Audit Tools
and Techniques) más ocupada por los auditores a nivel mundial llamada ACL. Después
de haber trabajado con la herramienta, es importante aprender nuevas funcionalidades
que te ayudarán a agilizar tus procesos de Análisis Electrónico de Datos.
Una de las ventajas que tiene el programa de análisis, es que cuentan con funciones
internas que nos permiten acelerar o hacer cálculos que con los comandos básicos son
difíciles de implementar, pero lo importante es conocer que existen dichas funciones,
conocer para que se aplica, y cuáles son las reglas para utilizarlas.
La Auditoría Superior de la Federación busca proporcionar herramientas que ayude
en el proceso de revisiones diarias de los fiscalizadores de la ASF.
5
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Lección 1: Comandos para el Análisis de
datos
Comenzaremos el curso con comandos que nos entregarán información estadística de
los campos tipo numéricos y de fecha, pero también aprenderemos como podemos
realizar concentrados de información, que nos permitan tener un entendimiento general
de cómo se comporta una tabla especifica.
Comando estadísticas
El comando Estadísticas es de gran ayuda porque te ayuda a encontrar anomalías en tu
información numérica, y de esta manera facilita tus análisis o fiscalizaciones.
Abre la tabla Transabril.
Digamos que requieres obtener las estadísticas de los campos Monto y Fecha_Trans
Para lograr esto, debes seguir los siguientes pasos:
1. Selecciona Estadísticas de la barra de herramientas con el botón Analizar.
Aparecerá la ventana de diálogo Estadísticas.
2. Selecciona los campos que deseas analizar (en este caso, el campo Monto y el campo
Fecha_Transaccion) y un clic en Aceptar.
El resultado se desplegará en la ventana de resultado.
En dicha ventana se podrá ver la siguiente información:
6
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Dar un clic en la Tachuela, para fijar el resultado.
Podemos condicionar el comando Estadísticas de igual forma que otros comandos como
Contar registros… y Totalizar campos…
Reutilización de comandos
En la reutilización de comandos abriremos el Log dando un clic en la pestaña
correspondiente del navegador del proyecto. El Log nos muestra las acciones y
comandos que hemos realizado desde el inicio del proyecto.
7
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Por ejemplo si queremos repetir el comando para los valores positivos mayores que 100
de los montos. Dentro del Log, dar doble clic sobre el comando STATISTICS, esto
mostrará el resultado del comando.
En la ventana con el resultado, da doble clic sobre la línea del comando STATISTICS
ON....
En la ventana del comando, da un clic en el botón Si...
Con el cursor en el recuadro de expresión, selecciona Monto del recuadro de campos.
Selecciona el operador y teclee 100 (Esto nos permite filtrar los valores positivos menores
o igual a 100).
Da un clic Aceptar dos veces y se mostrará el siguiente resultado.
8
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comando perfil
Este comando sirve para obtener información relevante de los campos numéricos
seleccionados, no es posible ejecutarlo para campos de fecha. La información que nos
entrega el comando son: total de dicho campo, valor absoluto, valor mínimo y valor
máximo. Estos valores, de forma interna el ACL los almacena en variables para utilizarlos
en otros comandos como Estratificar e Histograma, es posible emplear dichas
variables.
1. Para acceder selecciona la opción Perfil... del menú Estadístico dentro del menú
Analizar. La ventana de diálogo Perfil aparece
2. En la lista de campos del perfil, selecciona el campo deseado (Monto en nuestro
caso) y da un clic en el botón Aceptar
3. El resultado será el siguiente
Comando estratificar
Este comando es muy útil cuando deseamos concentrado por rangos u observar la
información numérica de una tabla en forma rápida, pues no se requiere ordenar la tabla
ni indexarla. El comando suma los registros cuyos campos numéricos caen en cada uno
de los intervalos especificados, los cuales pueden ser fijos o libres, dependiendo de sus
necesidades.
Imagina que deseas obtener un resumen en 10 intervalos del campo Monto, de la tabla
Trans_abril.
1. Debes ir al menú Analizar
9
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
2. Selecciona la opción Estratificar /ó el botón Estratificar. La ventana de diálogo
Estratificar aparecerá
3. Selecciona Monto en el combo a Estratificar en...; en Acumular campos...,
selecciona Monto
Nota que como valor mínimo aparece el valor mínimo del perfil anterior por omisión, lo
mismo que en el valor máximo, esto se debe a que usted ya generó estas variables al
ejecutar el comando Perfil. El número de intervalos por omisión es 10, pero puedes
cambiar el valor si lo deseas, de hecho puedes definir cuáles serán sus rangos en el
cuadro de Libre.
4. Da un clic en Aceptar. El resultado se despliega en la ventana de resultado.
10
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Examinando la ventana, observas que, de izquierda a derecha, tienes los rangos que
manejaste en ACL (dichos intervalos los calculo automáticamente al dividir el valor total
del campo Monto en 10 intervalos), en seguida tienes el número de registros que caen
entre dichos rangos para el campo Monto y posteriormente el porcentaje del número de
registros con respecto del total de registros.
Comando clasificar
El comando Clasificar se usa para resumir datos de texto de una tabla rápidamente. Este
comando cuenta los registros que caen dentro de cada clase de un campo definido como
caracteres y puede acumular los totales de campos numéricos para cada valor diferente.
Este comando es similar al comando Estratificar, es decir, la tabla no necesita estar
ordenada. Clasificar permite producir una nueva tabla con los datos clasificados, o
podemos simplemente ver los resultados en pantalla.
Cuando quieres clasificar la tabla Trans_abril sobre el campo Descripción para obtener
los totales de montos en cada cliente
1. Presiona el botón
2. Selecciona del combo Clasificar en.., el campo Descripción
11
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
3. En la lista de Campos de subtotales.., selecciona el campo Monto
Podemos mandar los resultados a pantalla a través de la ventana del último resultado o
bien mandarlos a una tabla, para ello deberá seleccionar en la pestaña Salida, la opción
Archivo como salida y teclear el nombre del archivo deseado junto al botón Nombre, en
la pestaña de Salida
12
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
13
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Cuando el resultado se manda a pantalla, se tiene la opción de graficar el comando, para
lograr esto basta dar un clic sobre la Pestaña de Gráfico que se encuentra en la parte
inferior izquierda de la pantalla de resultado
14
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comando histograma
Un histograma es el equivalente gráfico del comando Estratificar que aplica solo a
campos numéricos o al comando Clasificar que aplica solo a campos de texto. Ya que el
comando Histograma es posible ejecutarlo para campos alfanuméricos o numéricos.
ACL despliega gráficamente el número de registros que caen dentro de un valor o
categoría. La diferencia es que solo mostrará el número de registros y no calcula los
totales, para usarlo:
1. Selecciona la tabla a usar Trans_abril. Ejecuta el comando Perfil del menú
Analizar, sobre el campo Monto
2. Selecciona de la barra de herramientas el botón Histograma. La ventana de
diálogo aparece
3. En el combo Histograma en… selecciona el campo Monto
Nota que de nuevo se toman por defecto el valor de las variables generadas por el
comando Perfil.
En la pestaña Más, normalmente tiene opciones para configurar, por principio de cuenta
el Ámbito nos permite restringir el alcance de que registros queremos analizar, de forma
predeterminada siempre será la opción Todos lo que indica que debe tomar toda la tabla
o los registros que están filtrados en el momento de ejecución del comando. Estas
opciones están en la mayoría de los comandos de ACL.
15
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Además las opciones:
Suprimir Otros se refiere a no imprimir datos fuera del mínimo y máximo
establecido, solo se activa cuando se ejecuta sobre un campo numérico (existe
también en el comando Estratificar)
Columnas nos permite establece el número de caracteres a lo ancho que se
generarán solo cuando la salida se configura para un archivo de texto (por defecto
el valor es de 78)
Salto, te permite seleccionar un campo de texto, para que se calcule el comando
Histograma, por cada valor diferente del campo seleccionado como Salto
4. Da un clic en el botón Aceptar
Si la salida se hace a pantalla se creara una tabla con los datos obtenidos del comando.
Obviamente la mejor opción es visualizar el gráfico en la pantalla.
16
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
La salida gráfica que tiene permite filtrar los registros que cumplen los criterios de cada
valor graficado.
17
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Lección 2: Concentración de datos
Comando resumir
El resumir información puede hacerse de dos maneras:
Si se está trabajando con tablas pequeñas y sin ordenar, lo más adecuado es usar el
comando Clasificar. Por tablas pequeñas se refiere a aquellas que contienen hasta
10,000 clases.
Una estimación del espacio requerido es a razón de 2MB de memoria RAM por cada
1,000 clases. O sea que para 10,000 clases se requieren 20 MB de memoria RAM
Cuando se trabaja con tablas más grandes, es necesario usar el comando Resumir,
en cuyo caso no tenemos ningún límite en cuanto al número de valores de texto o
de fechas.
Supongamos que queremos obtener un resumen del campo Clase de la tabla Inventario
y que los campos que deseamos resumir son Existencia y Valor Mercado. Es decir,
deseamos obtener un resumen por clasificación del producto, de la cantidad y del valor
en mercado de los productos.
1. Abre la tabla Inventario
2. Selecciona Resumir... del menú Analizar
3. En la lista de campos Resumir sobre..., selecciona Clase y Localidad
4. En la lista de Acumular campos..., selecciona el campo Costo Unitario
18
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
5. En la pestaña Salida, selecciona Archivo y teclea Resumen_Inventario en el
recuadro de Nombre...
6. Da un clic Aceptar
ACL creará un registro para cada Clase y Localidad diferente con sus campos
especificados acumulados. También ACL nos da el número de registros que caen en esa
categoría.
19
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comando generar tablas cruzadas
En ACL, existe un comando que nos permite generar un concentrado similar a la tabla
dinámica, este comando solo funciona sobre campos de texto y campos numéricos, en su
caso requeriremos utilizar funciones para convertir campos de fecha en campos de texto.
Las zonas similares a la tabla dinámica en Excel, es Filas, Columnas y Datos.
El comando Tabla Cruzada, analiza campos de caracteres colocándolos en filas y
columnas. Al crear una Tabla Cruzada de campos de caracteres, se pueden elaborar
varios resúmenes, explorar áreas de interés y sumar campos numéricos. Puede utilizar
Tabla Cruzada para elaborar resultados en forma de archivo, tabla o gráfico. Similar a las
tablas dinámicas en Excel
La Tabla Cruzada agrega como última columna el número de registros de una tabla, abre una
columna para cada valor diferente de columna, calcula subtotales para los campos numéricos de cada
valor de fila de cada valor de columna y totaliza las cantidades en cada valor de columna.
Por ejemplo, en la tabla Inventario tiene una columna del Mes_Ejercicio. Se necesita realizar un
concentrado por cada valor de Cve_Estacion mostrando en cada columna el monto correspondiente
de cada mes de ejercicio diferente. Seguir los pasos que se muestran a continuación:
1. Abre la tabla Inventario
2. En el menú Analizar, selecciona Generar tablas cruzadas... o da un clic en el botón
3. En lo que respecta a Filas... elige Localidad, en Columnas selecciona Clase y acumula
el campo Costo Unitario
20
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
4. Da un clic en la pestaña Salida, para generar una tabla de salida la cual se llamará
TC_Inventario. Da un clic en Aceptar
Este arreglo de la información permite ejecutar comandos sobre las columnas resultantes de manera
eficiente. Por ejemplo, el comando Estadística.
1. Ejecuta el comando Estadísticas
2. Ingresa en el botón Estadísticas en.. , debes seleccionar todos los campos con el botón
Agregar todos
3. La ventana de resultados de Estadísticas te muestra en el resultado por cada uno de los
campos
21
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
22
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Lección 3: Integridad de datos
Integridad de la Información
Uno de los pasos importantes antes de iniciar el análisis electrónico de datos, es
importante verificar que la información no contengan datos inválidos en las tablas o en su
caso no tomar en cuenta dichos registros o realizar una revisión física de esos registros.
Los datos errados se pueden deber a errores en la captura, o errores al generar el
archivo de datos, por lo que es importante saber que existe un comando en el ACL, que
te permitirá tener un manejo adecuado antes de iniciar el análisis.
Manejo de datos errados
En ocasiones es válido utilizar campos calculados utilizando funciones con la finalidad de
depurar los datos erróneos, en caso de que se traten de errores bien identificados, pero
debemos aclarar que esos campos, NO modificarán al archivo original, y es importante
identificar el origen del problema, ya que puede ser una desviación.
Abre la tabla Origen_Erroneo, la cual contiene detalles de facturas de productos
vendidos. Hay siete campos definidos en esta tabla.
Datos inválidos
Cada campo tiene asignado un tipo de dato que describe su contenido. Los datos
inválidos en un campo son datos que no concuerdan con el tipo de dato asignado al
campo. Algunos ejemplos son caracteres no imprimibles en un campo de caracteres,
datos no numéricos en un campo numérico, o blancos en un campo tipo PACKED, entre
otros.
Comando verificar
El comando Verificar... utiliza las descripciones en la tabla, como criterio para verificar la
validez de los datos en los campos especificados.
Vamos a verificar todos los campos de datos definidos en la definición de la tabla
reporte_inventario.
23
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
1. Selecciona Verificar... del menú Datos
2. Da un clic en el botón Verificar campos...
3. Da un clic en el botón Agregar todos y un clic en Aceptar y nuevamente en
Aceptar
ACL reporta 10 errores de validez, en cada una de ellas te muestra el número de
registro y el nombre del campo donde se presenta el error.
24
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Análisis de Información Operativa
Los comandos que veremos a continuación, solo sirven para bases de datos que cumplen
con dos condiciones: cuente con un número consecutivo y dicho consecutivo tenga el
control la entidad a fiscalizar.
Comando examinar secuencia
La información ordenada, es muy útil para identificar datos que se repiten o faltantes o
fuera de secuencia, pues nos puede guiar a errores en la tabla, o para simplemente ver si
están o no en la forma esperada. El comando Examinar la Secuencia... es muy útil para
validar que la información se creó de manera consecutiva y no se “maquillo el archivo”.
Abre la tabla reporte_inventario, es un archivo donde vienen importes que se recibieron
a diferentes empleados.
Selecciona Examinar la secuencia... del menú Analizar. En la ventana de Secuencia
en…, selecciona el campo Cust_no.
Da un clic en el botón de Aceptar.
Cuando revisamos la secuencia es recomendable realizar las siguientes validaciones:
El campo que tiene el número del documento
Utilizando el número del documento y la fecha de la operación
Utilizando la fecha de operación y el número del documento
25
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comando faltantes
Permite identificar la documentación faltante, proporciona las siguientes opciones para
mostrar los resultados. Es recomendable ocuparlo solamente con el campo donde viene
el número consecutivo.
1. Listar los intervalos faltantes: especifica una lista donde te notifica los intervalos
de faltantes en vez de cada elemento faltante. Te muestra una lista de los valores
de los campos clave a ambos lados del faltante
2. Elementos faltantes: cuando no sobrepasa el rango establecido. Especifica que
la lista de salida mostrará una lista de cada elemento faltante. Si el tamaño de los
faltantes es menor o igual que el Límite de elementos, aparecerá una lista con
todos los elementos faltantes. Si el faltante es mayor, en la lista sólo aparecen la
primera y la última clave faltante
3. Listar todos los elementos faltantes
Selecciona el comando Buscar Faltantes... del menú Analizar, la caja de diálogo
aparecerá.
En la lista de Faltantes en…, selecciona el campo Transaccion_no.
Para el primer caso, ACL trae predeterminada esta opción. Da un clic en Aceptar, valida
que la salida es a Pantalla. El resultado es el siguiente:
26
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Para observar el resultado cuando se muestran los Elementos faltantes, reutiliza el
comando. Selecciona ahora la opción Elementos faltantes.
Automáticamente se habilitará la caja de edición de texto que contiene un número 5 que
se refiere al Número máximo de elementos faltantes que se mostrarán, si los
elementos faltantes exceden a este número, por ejemplo si son 6, únicamente se
mostrará el intervalo
Da un clic en Aceptar.
27
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Es importante observar que hay 174 intervalos, lo que significa que el número de
elementos faltantes fue de 428089. Para poder observar todos los elementos faltantes,
hay que modificar el número máximo de éstos a observar escribiendo el total de registros
de la tabla.
Es decir siempre es recomendable seleccionar esta opción y el número que debemos
poner es el total de los registros, con lo que podemos estar seguros que nos dará como
resultado todos los documentos faltantes.
28
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comando buscar duplicados
Selecciona la opción Buscar duplicados... del menú Analizar, la ventana de diálogo
aparecerá
En la ventana de campos Duplicados en…, selecciona el campo Documento. En la
ventana Listar campos… agrega todos los campos con el botón Agregar todos. Valida
que este activo la opción Preordenar. Clic en Aceptar
Envié el resultado a Pantalla. Se generará un reporte conteniendo los 154 duplicados
encontrados, reportándonos, el detalle de los registros duplicados en función al campo
Transacción_no.
29
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
30
Lección 4: Análisis de datos con fechas
El formato de entrada de fechas puede ser de cualquier largo. ACL interpreta formatos
de fechas como sigue:
AA Año 01- 99
AAAA Año 1900 - 2078
MM Mes 01 - 12
MMM Mes Ene - Dic
DD Día 01 - 31
DDD Día 001 - 366
Todos los demás caracteres son tratados como relleno. Ejemplos de caracteres de
relleno incluyen / como en 11/30/2002 (MM/DD/AAAA), o los espacios en blanco y
comas en Nov 28, 1992 (MMM DD, AAAA).
Los formatos de caracteres usados para entrada deben ser idénticos, a los campos de
fecha que trae la tabla, de lo contrario ACL no interpretara correctamente la fecha lo que
resulta en un valor cero (01/01/00) para el campo.
Las fechas de los archivos se definen como un campo Date, cuando usted crea la
definición de la tabla. Cuando seleccionas el tipo de dato Date, debes decirle a ACL
como está el formato de fecha de cada campo en el archivo.
Veamos el formato de las fechas almacenadas en la tabla Cobranza.
1. Abre la tabla Cobranza y selecciona del menú Edición, el comando Formato de
Tabla...
2. En la lista de campos selecciona Fecha_Factura y da doble clic
Vemos que el campo está definido con formato AAAAMMDD, lo que significa que la
fecha 30 de Noviembre del 2010 aparece como 20101130 en el archivo. Nosotros
debemos indicarle al ACL, como están almacenadas las fechas, desde que se define el
formato de tabla de los campos de datos.
3. Oprime
para cerrar la caja de diálogo del Formato de fecha
El cambiar un formato de fecha errado se hace dando doble clic en el campo y editando.
Oprime el botón
para aceptar la nueva definición.
ACL almacena los campos de fechas como la diferencia en días de la fecha con
respecto al 1 de enero de 1900. Cuando un campo es definido como tipo Date, ACL
internamente lo convierte en un número que usa para todas las operaciones sobre el
campo. Si los datos en el campo son inválidos,
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
el resultado es cero y resulta en una fecha 00/00/00. ACL maneja fechas desde enero 1,
1900 hasta diciembre 31, 2095.
La forma en que ACL despliega las fechas en las vistas, reportes y en la pantalla es
distinta de como es definida y como la almacena internamente.
El formato en que ACL despliega las fechas en las vistas, reportes y en la pantalla,
depende de las opciones... del menú herramientas, en la pestaña fecha el combo
Formato. El formato especificado en Preferencias... permanece en efecto hasta que
termines la sesión de ACL a menos que hayamos oprimido el botón Aceptar... de la caja
de diálogo de Opciones.
Por ejemplo para que las fechas aparezcan con la forma MMM DD,AAAA.
1. Selecciona Opciones... del menú Herramientas.
2. Selecciona la pestaña Fecha.
3. En la caja de texto de Formato de muestreo de fecha teclea MMM DD,AAAA.
4. Clic en Aceptar
32
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comparación de fechas
Podemos comparar fechas, comparando el valor de un campo de fecha en el archivo de
datos con una constante de fecha.
Imagina que quieres enlistar de la tabla Cobranza, todos los registros del archivo que
tienen una Fecha de vencimiento anterior a 1 julio de 2000.
1. Selecciona Extraer datos... del menú Datos.
2. Da un clic en la opción Campos
3. Da un clic en el botón de Extraer campos..., da un clic en Agregar todos y luego
da un clic en Aceptar
4. Da un clic en el botón Si...
5. Selecciona el campo con doble clic en FechaVto
6. En la lista de operadores da un clic a
7. Presiona el botón Fecha... y selecciona la fecha 1 de Julio de 2000
8. Da un clic en Aceptar para cerrar el Constructor de expresiones
9. En la caja de En... teclea Cobranza antes de julio 2000
33
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
10. Da un clic en Aceptar
La nueva tabla contiene sólo los elementos con fecha de vencimiento anterior al 1 de
julio de 2000.
34
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Cálculo de días de antigüedad
A menudo usamos fechas para determinar la antigüedad de las transacciones. La
función AGE() calcula el número de días entre dos fechas que usted especifica. Si no se
especifica una segunda fecha, AGE( ) usa la fecha del sistema.
Por ejemplo podemos usar AGE( ) para comparar transacciones de cuentas por cobrar
con la fecha de fin de año para calcular la antigüedad al cierre de año.
Si queremos extraer el número de cuenta, importe y fecha de la factura de todas las
transacciones con antigüedad de más de 180 días a la fecha de cierre 31 de diciembre
de
2000 de la tabla Cobranza.
1. Selecciona Extraer datos... del menú Datos
2. Da un clic en la opción Campos
3. En la lista de campos a extraer da un clic en Cliente, luego oprime la tecla Ctrl,
da un clic a Importe y luego a Fecha_Vto
4. Da un clic al botón Si...
5. En la lista de funciones da doble clic en AGE()
6. Con el cursor entre los paréntesis de AGE(), coloca el campo Fecha_Vto,
selecciona la fecha `20001231` y fuera del paréntesis escribe > 180, la función
quedara así: AGE(Fecha_Vto,`20001231`) > 180
7. Da un clic en Aceptar para cerrar el Constructor de expresiones
8. En la caja de En… teclea Cobranza mayor 180 dias
9. De un clic Aceptar
ACL abre la tabla y muestra las 262 facturas con antigüedad mayor a 180 días al cierre
del año fiscal.
35
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Para identificar transacciones que caen entre 0 - 29 días, 30 - 59 días y 60 - 89 días,
construir las siguientes expresiones en la tabla Cobranza:
Agregue los tres campos a la vista y verifique el resultado
36
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Comando antigüedad
El comando Antigüedad se usa para producir un resumen de datos por rangos, en base
al rango de días de antigüedad que tiene determinado el campo tipo fecha.
Por ejemplo, si queremos saber la antigüedad que tienen las facturas de nuestra tabla
Cobranza.
1. Abre la tabla Cobranza
2. Da un clic en el botón
aparecerá
en la barra de herramientas. La caja de diálogo
3. Selecciona Fecha_Vto en el combo Antigüedad en…, que es la fecha de
vencimiento
4. En el combo de Fecha de corte selecciona el 31 de Diciembre de 2000
5. En los campos de subtotales, selecciona el campo Importe. En la sección de
períodos de expiración, aparecen por defecto 0, 30, 60, 90,120 y 10000 que
representan los días que han pasado con respecto a la fecha de corte
6. Presione el botón Aceptar
ACL despliega el reporte en forma semejante a como lo desplegó en los comandos que
hemos manejado anteriormente. Este comando también muestra una pestaña donde
visualizamos el grafico.
37
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Muchos de los elementos en la tabla de transacciones, son notas de crédito, pagos u
otros tipos de transacciones. En este caso sólo queremos ver la antigüedad de las
facturas (es decir el tipo de transacción IN). Añadiremos un filtro local al comando que
acabamos de procesar.
1. En la pestaña Texto, da doble clic sobre el nombre del comando AGE ON...
2. En el recuadro de Si..., teclea la expresión Tipo_Doc = “IN”
3. Da un clic en Aceptar.
ACL muestra un sumario de la antigüedad que incluye sólo facturas, agrupadas
conforme al período de antigüedad
38
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Lección 5: Manejo de funciones en ACL
Reglas generales funciones
En matemáticas una función es una regla que asigna a cada elemento x de un conjunto
A exactamente un elemento, llamado F(x), de un conjunto B. En nuestro caso las
funciones nos ayudan a interactuar con los datos de las tablas.
Los parámetros son los valores que requiere la función, cabe señalar que existen
parámetros opcionales y que se representan por los caracteres “<” y “>”. Cada parámetro
puede ser de un tipo o más de un tipo de datos.
Cuando escribimos más de un parámetro utilizamos el carácter llamado separador de
listas, que en nuestro caso es el carácter de la coma “,”, en ocasiones algunos usuarios
lo configuran como punto y coma “;”.
Las expresiones y campos calculados se basan principalmente en los diferentes tipos de
Funciones.
Las funciones se podrán utilizar desde la ventana de Constructor de Expresiones. La
opción de Pegar parámetros copia al seleccionar la función, los parámetros en el
cuadro de expresión, por lo que se recomienda deshabilitar dicha opción y solo pasará la
función sin los parámetros
39
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Existen diferentes tipos de funciones que podemos auxiliarnos de ellas para ampliar
nuestros análisis, a continuación veremos las funciones más utilizadas en el ACL, y
ejemplos de donde los podemos implementar dichas funciones
Funciones matemáticas
ABSOLUTE()
ABS( ) devuelve el valor absoluto de una expresión numérica.
Utiliza ABS( ) para determinar el valor absoluto de una población antes de generar
un muestreo aleatorio.
Formato de función:
ABS(número)
La función ABS( ) devuelve el valor absoluto de una expresión numérica
especificada.
Ejemplos:
40
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
ABS(-7.2) = 7.2
ABS(88.2) = 88.2
ABS(5) = 5
Para crear un campo que sea la diferencia entre dos campos: Cantidad1 y
Cantidad2, especifica:
ABS(Cantidad1 - Cantidad2)
MAXIMUM()
MAXIMUM( ) o MAX( ) devuelve el mayor de dos números.
MAXIMUM( ) es la función opuesta de la función MINIMUM( ).
Formato de función:
MAXIMUM(N1, N2)
Si N1 es mayor que N2, MAXIMUM( ) devuelve N1. De lo contrario, devuelve N2.
Nota: “En la mayoría de las funciones o expresiones, si la cantidad de decimales
de los parámetros de ambos números es diferente, el resultado se ajusta al que
tiene el mayor número de decimales”.
Ejemplos:
MAX(4, 7) = 7
MAX(7.5, 4) = 7.5
MAX(7, 4.55) = 7.00
Si tiene una tabla de cuentas vencidas, para crear un campo llamado:
Vencimiento_de_interes
que contenga un valor mínimo de $1.00, especifique:
MAX(BALANCE * ANNUAL_RATE, 1.00)
Si el saldo multiplicado por el tipo de interés es inferior a un peso, tomará el valor
de 1.00. De lo contrario, MAX( ) devuelve el importe del interés calculado.
41
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
MINIMUM()
MINIMUM( ) o MIN( ) muestra el menor de dos números especificados.
MINIMUM( ) es la función opuesta de la función MAXIMUM( ).
Formato de función:
MINIMUM(N1, N2)
Si N1 es menor que N2, MINIMUM( ) devuelve N1. De lo contrario, devuelve N2.
Ejemplos:
MIN(4, 7) = 4
MIN(7.5, 4) = 4.0
MIN(7, 4.55) = 4.55
En la tabla de Inventarios, para crear un campo que contenga el valor más bajo
del Costo y del Precio de venta, especifica:
MIN(Costo, Precio_venta)
ROUND()
ROUND( ) devuelve un número entero redondeado de una expresión numérica o
valor de campo.
Utilice ROUND( ) cuando deseas redondear una expresión al número entero más
cercano.
Formato de función:
ROUND(número)
ROUND( ) devuelve un número igual a una expresión numérica o valor de campo
redondeado al número entero más cercano. Esta función redondea de 0.5 hacia
arriba en una unidad.
Esta función DEC(Número, 0) = ROUND (Número).
Ejemplos:
ROUND(7.2) = 7
ROUND(7.5) = 8
42
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
ROUND(-7.5) = - 8
Para crear un campo que sea igual al saldo redondeado al valor más cercano en
pesos, escribe:
ROUND(Saldo)
Funciones fecha / hora
AGE()
AGE( ) devuelve la antigüedad, en días, de una fecha especificada comparada con
una fecha de corte especificada. Utiliza AGE( ) cuando compares dos fechas para
determinar cuentas vencidas o para llevara a cabo análisis por antigüedad de
balances.
Formato de función:
AGE(date <,fecha_de_corte_aaaammdd>)
AGE( ) devuelve un valor numérico que denota la diferencia de antigüedad en días
entre dos fechas. Cuando omites el segundo parámetro, ACL utiliza la fecha de
sistema actual. Sin embargo, cuando incluyes el segundo parámetro, ACL calcula
la antigüedad relativa a los fines de año fiscal u otras fechas de corte.
Independientemente del formato en el que se almacena un campo de fecha,
cuando se usan constantes, la constante debe ser:
Una cadena de caracteres en la forma “AAMMDD” o “AAAAMMDD”.
Una constante de fecha en la forma “AAMMDD” o “AAAAMMDD”.
Una expresión o campo de fecha ACL válida.
Las fechas anteriores a la fecha de corte devuelven un valor positivo. Las fechas
posteriores a la fecha de corte devuelven un valor negativo.
Las fechas aceptables van desde el 1 de enero de 1900 al 31 de diciembre de
9999.
Esta función es utilizada por el comando Antigüedad, en donde utiliza como
segundo parámetro la Fecha de corte.
43
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Ejemplos:
Suponiendo que la fecha actual del sistema es el 1 de enero de 2006:
AGE(`051220`) = 12
AGE(`20060108`) = -7
AGE(`20051220`, `060101`) = 12
AGE(Fecha) = 42
AGE(Fecha,`051230`) = 27
Para extraer el nombre, la cantidad y la fecha de la factura de todos los elementos
de más de 180 días (por ejemplo al final del año fiscal), la expresión será:
AGE(Fecha, `20051231`) > 180
CTOD()
CTOD( ) convierte una expresión de caracteres o numérica en una expresión de
fecha válida.
Utiliza CTOD( ) para crear una fecha a fin de compararla con valores de campo de
fecha, especialmente si la fecha no es una constante. Por ejemplo, para identificar
todas las fechas antes de una fecha determinada, puedes utilizar la prueba:
DATE < CTOD(año+mes+día)
Nota: “ACL utiliza como fecha inicial el 1 de enero de 1900 para determinar el valor
de fecha adecuado”.
Formato de función:
CTOD(campo <,"formato_fecha">)
La función CTOD( ) (abreviatura de "carácter a fecha") convierte cadenas de
caracteres o valores numéricos en fechas válidas. CTOD( ) es la función estándar
que utiliza otro software. A diferencia de otros paquetes de software, ACL también
convierte las expresiones numéricas en fechas.
Si el primer parámetro es un número, internamente lo convierte en una cadena
antes de la conversión.
44
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Se supone que el primer parámetro se almacena como "AAAAMMDD" o
"AAMMDD". Si no lo es, ACL le permite que especifique un formato de cadena
opcional. Es recomendable que uses SIEMPRE el formato, para minimizar el riesgo
de que el ACL no identifique correctamente la fecha.
Por ejemplo, para convertir a la fecha juliana con el formato "AADDD", especifica:
CTOD(Fecha, "AADDD")
Nota: “La cadena de formato tiene predeterminado el mismo formato que
Configurar fecha y el tipo de datos de fecha. Dado que la cadena de formato es
en realidad una cadena de caracteres, más que una fecha, deberá estar entre
comillas dobles o simples según corresponda, no entre comillas invertidas”.
Ejemplo:
Suponga que tienes una tabla de Cobranza que incluye un campo de Fecha de
vencimiento denominado Vencimiento.
Deseas visualizar todas las transacciones con fecha de vencimiento anterior al 1 de
julio de 2005. Para hacerlo, debe comparar el campo vencimiento con el valor 1 de
julio de 2005.
Dado que ACL interpreta el campo Vencimiento como un número único, no
puedes compararlo con 07/01/05 ni 050701. Debes convertir 1 de julio de 2005 en
otro número.
Para hacerlo, utilice la condición o un filtro de la siguiente manera:
Vencimiento < CTOD(050701, “AAMMDD”)
Todas estas expresiones devuelven el valor 31 de diciembre de 2005:
CTOD("051231")
CTOD(311205, "DDMMAA")
CTOD("20051231")
CTOD("051231", "AAMMDD")
CTOD("311205", "DDMMAA")
CTOD(051231)
CTOD(05365, "AADDD")
CTOD("31/12/2005", "DD/MM/AAAA")
Suponiendo un formato de presentación de fecha MM/DD/AA:
CTOD("051220") = "12/20/05"
CTOD("Dic2005", "MMMDDAA") = "12/20/05"
45
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
DATE()
DATE( ) convierte una expresión de fecha, la fecha actual del sistema o un valor de
campo de fecha en una cadena de caracteres que representa la fecha.
Utiliza DATE( ) cuando necesites mostrar la fecha actual como una cadena.
Formato de función:
DATE(<fecha>)
Si no se proporciona un parámetro, se convierte la fecha del sistema.
La fecha se devuelve como cadena de caracteres de 12 bytes en el formato
especificado por configurar fecha. Si SET DATE especifica un formato inferior a 12
bytes, el valor devuelto se completa con espacios en blanco.
Ejemplos:
Utilizando la configuración de fecha MM/DD/AA, con una fecha de sistema 22 de
noviembre de 2011 y un valor de campo de fecha 31 de diciembre de 2008:
DATE( ) = "11/22/11 "
DATE(Fecha) = "12/31/08 "
TIME( )
TIME( ) devuelve la hora y fecha del reloj del sistema.
Utiliza TIME( ) para determinar la hora actual o la duración de tareas específicas.
Formato de función:
TIME( )
TIME( ) devuelve la hora según el reloj del sistema con el formato HH:MM:SS,
como una cadena de ocho caracteres de longitud. Su valor no se ve afectado por el
contenido del campo ni del registro.
Ejemplo:
TIME( ) = "15:38:52"
Otro ejemplo más complejo: queremos determinar el tiempo transcurrido para un
comando, puede convertir los resultados de esta función a una cantidad de
46
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
segundos antes de que comience el comando, repetir el proceso cuando se
complete y restar ambos valores, como se detalla a continuación:
H = TIME()
H1
=
VALUE(SUB(H,1,2),0)*3600
+
VALUE(SUB(H,4,2),0)*60
+
VALUE(SUB(H,7,2),0)
H = TIME()
H2
=
VALUE(SUB(H,1,2),0)*3600
+
VALUE(SUB(H,4,2),0)*60
+
VALUE(SUB(H,7,2),0)
SEGUNDOS = H2-H1
Estos cálculos toman partes separadas de la hora y calculan la cantidad de
segundos a partir de la medianoche antes y después de las operaciones.
Funciones de conversión
DEC()
DEC( ) le permite especificar el número de posiciones decimales para redondear
una expresión numérica o un valor de campo. Se utiliza cuando deseas ajustar los
lugares decimales en cálculos matemáticos o cuando deseas redondear un
resultado a una cantidad especificada de lugares decimales.
Formato de función:
DEC(número, decimales)
Donde número representa un campo numérico, valor o expresión.
DEC( ) ajusta la cantidad de decimales en número a la cantidad especificada por
los decimales. Si la cantidad de decimales se reduce, ACL redondea el resultado.
No puedes utilizar la función DEC( ) después de un cálculo a fin de revertir el
redondeo.
Por ejemplo:
DEC(3/2, 4) = 1.0000, no 1.5000
DEC(3.00/2, 4) = 1.5000
47
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
La cantidad de decimales es una constante y no puede modificarla durante el
procesamiento.
Ejemplos:
DEC(7, 2) = 7.00
DEC(7.5647, 3) = 7.565
Para calcular el interés diario a seis posiciones decimales del campo Tasa_anual,
especifica:
DEC(Tasa_anual, 6) / 365
STRING()
STRING( ) convierte una expresión numérica o valor de campo en una cadena de
caracteres.
Utiliza STRING( ) para convertir una expresión numérica o valor de campo a
formato de caracteres para su uso como campo clave en un comando ACL, como
Resumir o Unir.
Formato de función:
STRING(número, longitud <,formato>)
STRING( ) convierte la expresión numérica o valor de campo en una cadena de
una longitud especificada en longitud. La cadena resultante tendrá un signo menos
si el número es negativo y el mismo número de posiciones decimales que el
número (a menos que el formato óptimo especifique lo contrario, como se detalla a
continuación).
Puede especificar un formato numérico opcional, como un tercer parámetro para
darle formato al resultado numérico de la función. Asegúrese de que se trate de
una expresión de caracteres válida.
Si la cadena resultante es más corta que la longitud, se agregan campos iniciales.
Si la cadena resultante es más larga que la longitud, los caracteres iniciales se
truncan sin notificación comenzando con el signo menos, si los hubiere.
Ejemplos:
STRING( 125.2, 7) = " 125.2"
STRING(-125.2, 4) = "25.2"
48
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
STRING(-125.2, 7) = " -125.2"
Esto ejemplos ilustran el uso del parámetro de formato numérico opcional:
STRING(-125.2, 10, "(9,999.99)") = " (125.20)"
STRING(-125.2, 6, "(9,999.99)") = "25.20)"
Para crear un campo que convierta el campo Costo en una cadena para que
pueda utilizarse como un campo clave, especifica:
STRING(Costo, 8)
VALUE()
VALUE( ) convierte una expresión de caracteres o un campo en un equivalente
numérico.
Utiliza VALUE( ) si necesitas convertir una expresión de caracteres o un valor de
campo en un formato numérico para su uso en comandos de ACL.
VALUE( ) devuelve el equivalente numérico de una expresión de caracteres o valor
de campo con un número especificado de posiciones decimales. Si el ajuste de
decimales resulta en una pérdida de decimales, el resultado se redondea.
VALUE( ) acepta números en cualquier formato. Puede utilizar cualquier formato
numérico aceptado por el tipo de datos de impresión, tal como signos de
puntuación, signos iniciales o finales y paréntesis como entradas.
Si una cadena como "123" no contiene decimales, ACL considerará el número
como un entero. Por ejemplo, al convertir VALUE("123", 2), al especificar dos
posiciones decimales, ACL interpreta "123" como 123.00 y no 1.23.
Formato de función:
VALUE(cadena, decimales)
En donde el parámetro decimales es una constante numérica que no puede
cambiar de registro a registro.
Ejemplos:
VALUE("123.4-" , 3) = -123.400
VALUE("$123.456" , 2) = 123456.00
VALUE("77.45CR" , 2) = -77.45
VALUE(" (123,456.78)" , 0) = -123457
49
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Funciones de cadena
AT()
AT( ) devuelve la posición de una cadena de caracteres en otra cadena de
caracteres. Debes especificar en qué ocurrencia de la cadena debe buscarse.
Devuelve un valor de cero si no encuentra la cadena.
La mayoría de las aplicaciones que se ocupan solamente de si una cadena se
encuentra presente, la función FIND( ) es la alternativa más sencilla. AT( ) es
necesaria si necesitas la ubicación de la cadena o si estás buscando ocurrencias
múltiples.
Utiliza AT( ) para buscar un valor en particular en un campo de texto libre (como
una descripción, nombre o dirección).
Formato de función:
AT(Ocurrencia, Cadena, Campo de Caracteres)
Ocurrencia: Específica qué ocurrencia de la cadena debe buscarse
Cadena Especifica: La cadena de caracteres que debe buscarse
Campo_Caracteres: Especifica la cadena de caracteres que debe buscarse
AT() busca cadenas dentro de otra cadena, y devuelve la ubicación de la cadena
buscada.
AT() puede interpretarse como "¿en qué posición se encuentra el enésimo
incidente de la cadena A en la cadena B?".
AT( ) distingue entre mayúsculas y minúsculas, por lo tanto, "a" no es igual a "A." Si
está buscando valores en datos conteniendo mayúsculas y minúsculas, considere
la posibilidad de convertir los datos a mayúsculas, con la función UPPER( ).
Ejemplos:
AT( 1, "ABC", "ABCDEFG") = 1
AT( 2, "ABC", "ABCDEFGABCDEFG") = 8
AT( 2, "A", "ABCDEFGH") = 0
50
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
AT( 3, "ABC", "ABCDEFGABCDEFG") = 0
Para extraer todos los registros en los que la dirección contiene "Insurgentes",
especifique esta función como una condición IF mientras utiliza la extracción de
registros:
AT(1, "INSURGENTES", UPPER(Dirección)) > 0
La función UPPER( ) se utiliza para que la búsqueda no distinga entre mayúsculas
y minúsculas. Si la expresión AT( ) devuelve un valor mayor que cero, se encontró
"Insurgentes" en el campo Dirección y se extrae el registro.
Este ejemplo también encuentra "Av. Insurgentes" y "Calle insurgentes" Para ser
más específico, se puede incluir un espacio en blanco después de "Insurgentes".
Para contar la cantidad de registros de una tabla en la que el campo Nombre
contiene "Eva", utiliza esta función como una condición IF durante el recuento de
registros:
AT(1, "Eva", Nombre) > 0
O si los datos contienen tanto mayúsculas como minúsculas, especifica:
AT(1, "EVA", UPPER(Nombre) ) > 0
CLEAN()
CLEAN( ) busca todos los caracteres no válidos de una cadena y los reemplaza,
junto con todos los caracteres subsiguientes, por espacios en blanco.
Utiliza CLEAN( ) para asegurar que los campos que contiene datos no válidos se
impriman correctamente. También puedes utilizar CLEAN( ) para aislar partes de
un campo, como el apellido en un campo de cliente que incluye el nombre y
apellido del cliente.
Formato de función:
CLEAN(cadena <, caracteres_no_válidos_extra>)
La función CLEAN( ) examina un campo o una cadena de caracteres de izquierda
a derecha y busca los caracteres no válidos. Si encuentra un carácter, a partir de
esa posición CLEAN( ) remplaza el carácter no válidos y el resto de la cadena con
espacios en blanco.
51
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
El segundo parámetro opcional caracteres_no_válidos_extra le permite
especificar valores de caracteres adicionales que deben considerarse no válidos a
los fines de la prueba. Debes ingresar los valores para este parámetro entre
comillas.
Puedes aplicar la función CLEAN( ) automáticamente a todos los campos de
caracteres activando la opción datos no válidos en blanco. Selecciona
Herramientas en la barra de menús y elije Opciones, haz clic en la pestaña
Numérico y selecciona la casilla de verificación datos no válidos en blanco.
Ejemplos:
CLEAN("ABC%DEF" , "%") = "ABC "
CLEAN("1234.56,111,2" , "," ) = "1234.56 "
En el siguiente ejemplo, # representa datos de carácter no válidos:
CLEAN("DOE, JOHN##102891231" ) = "DOE, JOHN "
CLEAN("DOE, JOHN##102891231", "," ) = "DOE "
EXCLUDE()
EXCLUDE( ) devuelve una cadena de longitud variable, excluyendo del resultado
los caracteres que especifique.
EXCLUDE( ) es la función opuesta a INCLUDE( ).
Formato de función:
EXCLUDE(cadena, caracteres_para_excluir)
EXCLUDE( ) devuelve una cadena que contenga los caracteres en cadena,
excluyendo los caracteres de caracteres_para_excluir, en el mismo orden en el
que aparecen en la cadena.
Ejemplos:
EXCLUDE("123 cualquier calle", "0123456789") = " cualquier calle"
Para eliminar una barra diagonal y un signo numérico del campo Producto,
especifica:
EXCLUDE(Producto, "/#")
52
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
FIND()
Utiliza la función FIND( ) para buscar cualquier cadena de caracteres dentro de un
campo especificado. La función FIND( ) no distingue mayúsculas de minúsculas
(encuentra ambas). FIND( ) devuelve Verdadero si encuentra la cadena.
La función FIND( ) ha sido diseñada para encontrar caracteres múltiples en un
campo o registro. Esta función indicará verdadero cuando encuentre un equivalente
hexadecimal o un carácter ASCII o EBCDIC.
Formato de función:
FIND(cadena <, campo>)
FIND( ) busca la cadena en el campo especificado por el campo. Si omites el
campo, FIND( ) busca la cadena en todo el registro.
Ejemplos:
FIND("Cancino", Apellido)
FIND("Cancino")
Para buscar en el campo ciudad las empresas ubicadas en Campeche, utilice el
siguiente filtro de expresiones en la vista:
FIND("Campeche", Ciudad)
Si deja el parámetro de campo en blanco, la función FIND( ) buscará la cadena de
caracteres en todo el registro.
Por ejemplo, para buscar la palabra "Campeche" en cualquier lugar del registro,
utilice el siguiente filtro de expresiones en la vista:
FIND("Campeche")
INCLUDE()
INCLUDE( ) devuelve una cadena de longitud variable, incluyendo sólo los
caracteres especificados en el resultado.
INCLUDE( ) es la función opuesta a la función EXCLUDE( ).
Formato de función:
INCLUDE(cadena, “caracteres_para_incluir”)
INCLUDE( ) devuelve una cadena que consiste sólo de aquellos caracteres de la
cadena que aparecen en caracteres_para_incluir, en el mismo orden en el que
aparecen en la cadena.
Ejemplos:
53
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
INCLUDE("Oso # 40 Piso 1", "0123456789") = "401"
Para crear un campo que conserve sólo los dígitos del campo Abc, especifique:
INCLUDE(Abc,"0123456789") = “Abc”
LENGTH( )
LENGTH( ) devuelve la longitud de una cadena especificada.
Formato de función:
LENGTH(cadena)
LENGTH( ) cuenta el número de caracteres en cadena y devuelve ese número.
Nota: “ACL cuenta los espacios en blanco finales en la longitud. Si no deseas que
se cuenten los espacios en blanco finales, utiliza la función TRIM( ) para eliminar
los espacios en blanco finales”.
Por definición, la longitud de un campo de caracteres es siempre constante.
Ejemplos:
LENGTH("ABCDE ") = 6
Para crear un campo que tenga la longitud del campo Nombre excluyendo los
espacios en blanco finales, especifique:
LENGTH(TRIM(Nombre))
LTRIM( )
LTRIM( ) devuelve una cadena de longitud variable con espacios en blanco
iniciales eliminados.
LTRIM( ) elimina cualquier espacio en blanco inicial de una cadena.
Formato de función:
LTRIM(cadena)
La cadena se copia al resultado y los espacios en blanco iniciales se ignoran.
Ejemplos:
LTRIM(" AB C ") = "AB C "
LTRIM("ABC") = "ABC"
LTRIM(" A ") = "A "
54
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
TRIM()
TRIM( ) devuelve una cadena de longitud variable con espacios en blanco finales
eliminados.
TRIM( ) es similar a la función LTRIM( ), pero elimina los espacios finales de la
cadena.
Formato de función:
TRIM(cadena)
El valor de la cadena se copia al resultado y los espacios en blanco finales se
ignoran.
Ejemplos:
TRIM("AB C ") = "AB C"
TRIM("ABC") = "ABC"
TRIM(" A ") = " A"
ALLTRIM( )
ALLTRIM( ) devuelve una cadena de longitud variable con espacios en blanco
iniciales y finales eliminados.
Formato de función:
ALLTRIM(cadena)
Ejemplos:
ALLTRIM("AB C ") = "AB C"
ALLTRIM("ABC") = "ABC"
ALLTRIM(" A ") = "A"
Para concatenar el nombre y los apellidos especifica:
ALLTRIM(Nombre) + ' '
ALLTRIM(Apellido_Materno)
+
ALLTRIM(Apellido_Paterno)
+
'
'
+
REMOVE( )
REMOVE( ) elimina caracteres no deseados de una cadena de caracteres o valor
de campo.
55
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Utiliza REMOVE( ) para normalizar los campos de datos que no tienen un formato
coherente, como por ejemplo, los campos de direcciones. También puede utilizar
esta función para eliminar la puntuación u otra información no válida de campos
con una mala edición.
Es posible que necesites REMOVE( ) antes de ejecutar los comandos Ordenar y
Unir para regularizar estos datos para el formateo o la equivalencia duplicada.
Esta función fue sustituida por las funciones INCLUDE( ) y EXCLUDE( ). Aún está
disponible en la versión actual para compatibilizar con las versiones anteriores de
ACL.
Formato de función:
REMOVE(cadena, “caracteres_válidos”)
La función REMOVE( ) elimina caracteres no deseados de una cadena y retiene
solamente los caracteres_válidos especificados.
Es similar en intención a la función CLEAN( ), pero su funcionamiento es muy
diferente. CLEAN( ) completa el resto del campo con espacios en blanco, mientras
que REMOVE( ) mueve los caracteres válidos a la izquierda del campo y retiene su
orden y agrega espacios en blanco al resultado final sea igual a la cadena.
Asumiendo que tiene una tabla de transacción de inventario, en que el número del
producto, Número_producto, no tiene el contenido de campo limpio. Debe ordenar
la tabla en base a números de producto similares. La tabla puede contener
"AB/123Q", "AB123 Q" y "AB 123-Q", y todos ellos hacen referencia al mismo
producto, pero se clasifican de manera muy distinta. La función REMOVE( ) permite
normalizar el campo para que el comando Ordenar puede actuar correctamente,
convirtiendo cada uno de los ejemplos anteriores en "AB123Q".
Ejemplos:
REMOVE("ABC 123 XX4" , "ABC123" ) = "ABC123 "
REMOVE("zABC 123 XX4", "ABCX123" ) = "ABC123XX "
REMOVE("ABC 123 XX4" , "1234567890") = "1234 "
Para crear un campo para ordenar o equiparar que contiene sólo los números del
campo número de producto, especifica:
REMOVE(Número_producto,"0123456789")
56
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
SUBSTRING( )
SUBSTR( ) devuelve una sub-cadena de una expresión de caracteres o de un valor
de campo.
Utiliza SUBSTR( ) para aislar una parte de una expresión de caracteres o un valor
de campo. Formato de función:
SUBSTRING(cadena, inicio, longitud)
SUBSTR( ) devuelve una sub-cadena de la expresión de caracteres o valor de
campo cadena.
Inicio: especifica la posición inicial en la cadena.
Longitud: especifica la longitud del resultado en caracteres.
Ejemplos:
SUBSTR("ABCDEF", 2, 3) = "BCD"
Para extraer el año de un campo de caracteres que contiene una fecha con el
formato “MM/DD/AAAA”, especifica:
SUBSTR(DATE, 7, 4)
UPPER()
UPPER( ) convierte todos los caracteres alfabéticos de una expresión o valor de
campo a mayúsculas.
Utiliza UPPER( ) cuando busques datos escritos con mayúsculas y minúsculas
combinadas o sin especificar.
Formato de función:
UPPER(cadena)
La función UPPER( ) convierte todos los caracteres alfabéticos en la cadena a
mayúsculas. Todos los caracteres no alfabéticos no sufren cambios.
PROPER( ) convierte los caracteres alfabéticos de mayúscula a minúscula y
LOWER( ) convierte los caracteres alfabéticos a minúscula.
Ejemplos:
UPPER("ABC") = "ABC"
UPPER("abc 123 DEF") = "ABC 123 DEF"
UPPER("AbCd 12") = "ABCD 12"
Si deseas analizar la capitalización, puede identificar a todos los clientes con
apellido "Camacho" especificando:
UPPER(APELLIDO) = "CAMACHO"
57
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Funciones de acceso a bajo nivel
FILESIZE( )
FILESIZE( ) devuelve el tamaño de un archivo.
Utiliza FILESIZE( ) para determinar el tamaño de un archivo en bytes o si el archivo
existe. La función FILESIZE( ) devuelve el tamaño de un archivo en bytes ó -1 si el
archivo no existe.
Normalmente, esta función se utiliza para detectar la existencia de un archivo para
controlar la ejecución de un Script o para utilizar el tamaño devuelto para algún
cálculo útil.
Formato de función:
FILESIZE(nombre_archivo)
Nombre_archivo es el nombre del archivo cuyo tamaño se desea determinar. Si el
archivo está en el mismo directorio que el proyecto de ACL, no es necesario
especificar la ruta de acceso completa. Para archivos en otros directorios, ingresa
una ruta relativa como Abc\Xyz.fil o una ruta absoluta como c:\Abc\Xyz.fil.
Ejemplos:
Para ejecutar el Script XYZ sólo si existe el archivo Abc.fil:
DO XYZ IF FILESIZE("Abc.fil") > 0
Si el archivo cuyo tamaño que deseas conocer, no está en el mismo directorio que
el proyecto ACL, debes de incluir la ruta de acceso relativa o una ruta de acceso
absoluta al archivo.
FILESIZE("c:\Directorio\Subdirectorio\Abc.fil")
Para ver el tamaño de Abc.fil, utilice el comando CALCULATE en el registro de
comandos.
CALCULATE FILESIZE("Demo.fil")
58
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
FTYPE()
FTYPE( ) devuelve un valor para identificar un tipo de campo u otro elemento.
Utilice FTYPE( ) para detectar los tipos de datos mientras ejecuta un Script.
Formato de función:
FTYPE("cadena_de_nombre_de_campo")
Si cadena_de_nombre_de_campo es el nombre del campo actual, el valor que
devuelve es C (carácter), N (numérico), L (lógico), o D (fecha) en mayúscula.
Si cadena_de_nombre_de_campo es el nombre de una variable, el valor que
devuelve es c (carácter), n (numérico), l (lógico), o d (fecha) en minúscula.
Si cadena_de_nombre_de_campo es el nombre de un Script, se devuelve b. De
manera similar, FTYPE( ) devuelve y para una tabla, a para un área de trabajo, i
para un índice y r para un reporte.
Si cadena_de_nombre_de_campo no es ninguno de los anteriores, el valor
devuelto es I (Indefinido).
Si cadena_de_nombre_de_campo es el nombre de un campo, variable o script,
asegúrese de especificarlo entre comillas simples o dobles.
FTYPE( ) funciona solamente con los nombres de elementos o campos, no con su
contenido.
Ejemplos:
Si Letra es un campo de caracteres y Número es un campo numérico:
FTYPE(Letra) = "C"
FTYPE(Número) = "N"
Si tiene una aplicación estándar que utiliza el campo Cantidad para calcular
totales, tal vez desee asegurarse de que haya realmente un campo Cantidad y que
sea numérico antes de iniciar la aplicación estándar.
La siguiente línea de comando se ejecuta solamente si Cantidad es un campo
numérico:
DO Script_1 IF FTYPE(Cantidad) = "N"
RECLEN( )
RECLEN( ) devuelve la longitud del registro actual. Utiliza RECLEN( ) para detectar
registros cortos o registros de una longitud en particular. Resulta de gran utilidad
59
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
con archivos CR/LF (impresión de imagen), dado que proporciona una manera
sencilla de examinar la longitud de los registros.
Formato de función:
RECLEN( )
RECLEN( ) devuelve la longitud del registro actual.
Para obtener información sobre como determinar el número de registro actual,
consulta la función RECNO( ).
Para registros de longitud fija, el resultado es una constante (la longitud del
registro). Y los registros de longitud variable, debes cambiar el resultado para cada
uno de los registros.
Ejemplo:
Para extraer todos los registros en los que la longitud es de 110 (suponiendo que
éste es el tipo de registro que le interesa), especifica:
RECLEN( ) = 110
RECNO()
RECNO( ) devuelve el número de registro lógico actual, contando desde 1.
Utiliza RECNO( ) para enviar los números de registro a una tabla o para determinar
la ubicación relativa de un registro determinado en una tabla.
Formato de función:
RECNO( )
RECNO( ) devuelve el número de registro lógico actual Si la tabla no se encuentra
indexada, RECNO( ) comienza con el valor 1 y va aumentando de a uno para cada
registro de la tabla. Los números de registros lógicos y físicos son idénticos.
Si la tabla se encuentra indexada, RECNO( ) se maneja de manera similar, pero en
orden lógico, no físico. Si se utilizan los comandos SEEK o FIND, el número de
registro se restablece en 1 después de que se ejecutan estos comandos. Ejemplo:
Si seleccionamos el registro 99:
RECNO( ) = 99
60
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
TEST()
TEST( ) devuelve Verdadero si un texto especificado comienza en una ubicación
de byte especificada dentro de un registro, de lo contrario, TEST( ) devuelve Falso.
TEST( ) se utiliza automáticamente cuando crea un filtro en la ficha Agregar un
nuevo filtro de datos de la ventana Formato de tabla.
Formato de función:
TEST(ubicación_de_byte, cadena)
TEST( ) examina un registro para ver si la cadena de caracteres comienza en la
posición especificada en ubicación_del_byte.
De ser así, TEST( ) devuelve Verdadero. De lo contrario, devuelve Falso, aún si la
cadena aparece en otra ubicación en la línea.
Los parámetros en TEST( ) distinguen mayúsculas y minúsculas. La especificación
"DEPTO" no encuentra "Depto." Si existe una posibilidad que el tamaño se
encuentre combinado, utilice en primer lugar la función UPPER( ) para convertir
todos los caracteres en mayúsculas.
Si la cadena no es una expresión de carácter, debe tratarlo como una cadena de
caracteres delimitándola con comillas.
Ejemplos:
Dado un registro que contenga:
Departamento: Marketing
....|....1....|....2....|....3....|
TEST(5, "Departamento") = T
TEST(6, "Departamento") = F
TEST(5, "DEPARTMENT") = F
Para crear un filtro que identifique los encabezados de página, especifica:
TEST(1, "Página:")
61
Lección 6: Exportar datos
Comando exportar a otra aplicación
Si quieres usar los datos de ACL en algún otro programa. Cuando quieras exportar los
datos a un procesador de palabras para producir cartas de confirmación de saldos, o
quizás necesites pasar la información a una hoja de cálculo para producir gráficos muy
atractivos.
El comando Exportar a otra Aplicación... se puede usar como una herramienta de
conversión, tomando los datos de un programa y produciendo un archivo en un formato
de otro programa.
Exportar ofrece dos modos para exportar datos: desde Campos o desde Vista.
1. Opción Campos: para seleccionar campos, crear expresiones y seleccionar el
orden de los campos para el archivo de exportación. Todos los campos de la tabla
y de las tablas relacionadas pueden exportarse
2. Opción Vista: para exportar únicamente los campos de la vista actual en el orden
en que se visualizan. La mayoría de las tablas exportadas conservan los títulos de
columna de la vista
Exportar Todos los Campos
Trabajaremos con la tabla Inventarios, abre esta tabla.
1. Selecciona Exportar a otra Aplicación... del menú Datos. Aparece la ventana de
diálogo Exportar.
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
2. Da un clic en el botón de Exportar campos...
3. Da un clic en Agregar todos.
4. Da un clic Aceptar.
5. En Exportar como selecciona Excel.
6. En el recuadro de En... escribe INVENTARIO.
7. Da un clic en Aceptar. ACL crea el archivo que ahora está listo para ser usado en
Excel.
8. Minimiza el software de ACL.
9. Abre Excel.
10. En el menú Archivo, selecciona Abrir, ir al directorio
C:\ASF\ACL_02_Intermedio\
en donde ACL acabas de crear el archivo.
63
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Exportar Campos Seleccionados
Exportaremos solo algunos datos para ser usados en un archivo dBase.
1. Abre nuevamente la tabla Inventarios
2. Selecciona Exportar a otra Aplicación... del menú Datos
3. En el combo de campos que aparecen en Exportar campos..., da un clic en
Codigo. Con la tecla Ctrl oprimida da un clic en Clase, Descripción, CostoUnit
y Preciovta
4. En Exportar como selecciona dBase III Plus
5. En el recuadro de En... escribe Inventario DBase.
6. Da un clic en Aceptar
Ahora bien, supongamos que se desea agregar en un documento de Word todos
aquellos registros de la tabla Cobranza que tiene más de 59 días de antigüedad.
1. Abre la tabla Cobranza
2. Selecciona la opción Antigüedad del menú Analizar. Ejecuta el comando sobre
el campo Fecha_Vto, la fecha de corte es el 31 de diciembre de 2000 y los
periodos de expiración son 0 y 59. Da doble clic en la etiqueta que dice >59, en la
columna Días cuando se muestre el resultado, con la finalidad de activar solo la
cobranza con más de 59 días de antigüedad
3. Selecciona el comando Exportar a otra Aplicación... del menú Datos
4. Da un clic en Cliente sin dejar de presionar la tecla Ctrl, FechaFac, FechaVto y
Importe
5. En el combo Exportar como selecciona la opción Archivo comb. Word
64
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
6. En el recuadro de En... escribe Cobranza mayor a 59 dias
7. Da un clic Aceptar
Abre el Word, en seguida abre el archivo que se acaba de generar. La ruta de
almacenamiento de éste es la misma del proyecto ACL. El archivo lucirá de la
siguiente forma:
Selecciona todo el texto, con ayuda de las teclas Ctrl + E. Abrimos la pestaña Insertar
de la cinta de opciones. Seleccionar del combo Tabla en el grupo Tablas, la opción
Convertir texto en tabla..., aparece una ventana donde de forma automática
configurará la tabla solo debemos seleccionar el botón Aceptar.
Para eliminar las comillas de cada una de las celdas, seleccionamos la pestaña Inicio de
la cinta de opciones, dentro del grupo Edición seleccionamos la opción Reemplazar...
en el combo Buscar: escribe el símbolo de las dobles comillas y en el recuadro de
Reemplazar con: no escribas nada. Presiona el botón Reemplazar todos. A
continuación aparecerá la siguiente ventana.
65
Herramientas para apoyar el trabajo de fiscalización.- ACL Intermedio
Auditoría Superior de la Federación
Presiona el botón de Aceptar, luego el que tiene la leyenda Aceptar y por último
Cancelar.
66
Bibliografía
http:www.acl.com
Fraud Detection - Using Data Analysis Techniques to Detect Fraud – David G.
Coderre
Normas Internacionales de Auditoría emitidas por IFAC (International Federation of
Accountants) 15 y 16
Norma ISA 401 sobre Sistemas de Información por Computadora
SAS 94
Norma SAP 1009
Descargar