0% encontró este documento útil (0 votos)
86 vistas

Scripting Guide PDF

Este documento proporciona una guía detallada sobre la creación de scripts en ACL, incluyendo conceptos básicos, tipos de datos, estructuras de control, funciones principales y una descripción de cada comando de ACL. La guía contiene tablas de contenido detalladas y secciones sobre diferentes temas para ayudar a los usuarios a aprender y utilizar el lenguaje de scripts de ACL.

Cargado por

Esteban Ovando
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas

Scripting Guide PDF

Este documento proporciona una guía detallada sobre la creación de scripts en ACL, incluyendo conceptos básicos, tipos de datos, estructuras de control, funciones principales y una descripción de cada comando de ACL. La guía contiene tablas de contenido detalladas y secciones sobre diferentes temas para ayudar a los usuarios a aprender y utilizar el lenguaje de scripts de ACL.

Cargado por

Esteban Ovando
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 898

Referencia de la creación de

scripts de ACL

Versión: 13
Publicado: jueves, 21 de junio de 2018

© ACL Services Ltd. 2017


Tabla de contenidos

Tabla de contenidos
Tabla de contenidos 3
Guía de inicio 13
Conceptos básicos de la creación de scripts de ACL 14
Comentarios 19
Tipos de datos 21
Expresiones 22
Definición de campos calculados con expresiones 24
Funciones 26
Variables 28
Estructuras de control 30
Agrupación y bucles 33
Treinta funciones principales de ACL 41
Comandos 53
Comando ACCEPT 54
Comando ACCESSDATA 59
Comando ACTIVATE 65
Comando AGE 67
Comando APPEND 72
Comando ASSIGN 79
Comando BENFORD 82
Comando CALCULATE 85
Comando CLASSIFY 87
Comando CLOSE 92
Comando COMMENT 94
Comando COUNT 96
Comando CREATE LAYOUT 98
Comando CROSSTAB 100
Comando CVSEVALUATE 104
Comando CVSPREPARE 108
Comando CVSSAMPLE 112

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 3 de 898
Tabla de contenidos

Comando DEFINE COLUMN 115


Comando DEFINE FIELD 118
Comando DEFINE FIELD . . . COMPUTED 125
Comando DEFINE RELATION 131
Comando DEFINE REPORT 134
Comando DEFINE TABLE DB 135
Comando DEFINE VIEW 138
Comando DELETE 140
Comando DIALOG 144
Comando DIRECTORY 152
Comando DISPLAY 157
Comando DO REPORT 162
Comando DO SCRIPT 163
Comando DUMP 165
Comando DUPLICATES 167
Comando ESCAPE 171
Comando EVALUATE 173
Comando EXECUTE 177
Comando EXPORT 185
Comando EXTRACT 193
Comando FIELDSHIFT 198
Comando FIND 201
Comando FUZZYDUP 203
Comando GAPS 208
Comando GROUP 212
Comando HELP 219
Comando HISTOGRAM 220
IF 224
Comando IMPORT ACCESS 226
Comando IMPORT DELIMITED 229
Comando IMPORT EXCEL 237
Comando IMPORT GRCPROJECT 243
Comando IMPORT GRCRESULTS 248

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 4 de 898
Tabla de contenidos

Comando IMPORT LAYOUT 255


Comando IMPORT ODBC 257
Comando IMPORT PDF 260
Comando IMPORT PRINT 269
Comando IMPORT SAP 278
Comando IMPORT XBRL 285
Comando IMPORT XML 290
Comando INDEX 295
Comando JOIN 297
Comando LIST 303
Comando LOCATE 306
Comando LOOP 309
Comando MERGE 311
Comando NOTES 315
Comando NOTIFY 317
Comando OPEN 320
Comando PASSWORD 323
Comando PAUSE 325
Comando PRINT 327
Comando PROFILE 329
Comando QUIT 331
Comando RANDOM 332
Comando RCOMMAND 335
Comando REFRESH 342
Comando RENAME 346
Comando REPORT 348
Comando RETRIEVE 352
Comando SAMPLE 354
Comando SAVE 363
Comando SAVE LAYOUT 365
Comando SAVE LOG 370
Comando SAVE TABLELIST 372
Comando SAVE WORKSPACE 374

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 5 de 898
Tabla de contenidos

Comando SEEK 376


Comando SEQUENCE 378
Comando SET 381
Comando SIZE 391
Comando SORT 396
Comando STATISTICS 401
Comando STRATIFY 405
Comando SUMMARIZE 410
Comando TOP 417
Comando TOTAL 418
Comando VERIFY 420
Funciones 423
Función ABS( ) 424
Función AGE( ) 425
Función ALLTRIM( ) 430
Función ASCII( ) 432
Función AT( ) 434
Función BETWEEN( ) 437
Función BINTOSTR( ) 445
Función BIT( ) 447
Función BLANKS( ) 449
Función BYTE( ) 451
Función CDOW( ) 453
Función CHR( ) 456
Función CLEAN( ) 458
Función CMOY( ) 460
Función COS( ) 463
Función CTOD( ) 465
Función CTODT( ) 471
Función CTOT( ) 476
Función CUMIPMT( ) 481
Función CUMPRINC( ) 483
Función DATE( ) 485

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 6 de 898
Tabla de contenidos

Función DATETIME( ) 489


Función DAY( ) 494
Función DBYTE( ) 497
Función DEC( ) 499
Función DHEX( ) 501
Función DICECOEFFICIENT( ) 503
Función DIGIT( ) 509
Función DOW( ) 511
Función DTOU( ) 514
Función EBCDIC( ) 517
Función EFFECTIVE( ) 519
Función EOMONTH( ) 521
Función EXCLUDE( ) 524
Función EXP( ) 526
Función FILESIZE( ) 528
Función FIND( ) 530
Función FINDMULTI( ) 534
Función FREQUENCY( ) 538
Función FTYPE( ) 540
Función FVANNUITY( ) 543
Función FVLUMPSUM( ) 547
Función FVSCHEDULE( ) 550
Función GETOPTIONS( ) 552
Función GOMONTH( ) 554
Función HASH( ) 557
Función HEX( ) 562
Función HOUR( ) 564
Función HTOU( ) 567
Función INCLUDE( ) 569
Función INSERT( ) 571
Función INT( ) 573
Función IPMT( ) 574
Función ISBLANK( ) 576

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 7 de 898
Tabla de contenidos

Función ISDEFINED( ) 578


Función ISFUZZYDUP( ) 580
Función LAST( ) 585
Función LEADING( ) 587
Función LENGTH( ) 589
Función LEVDIST( ) 591
Función LOG( ) 595
Función LOWER( ) 597
Función LTRIM( ) 599
Función MAP( ) 601
Función MASK( ) 605
Función MATCH( ) 607
Función MAXIMUM( ) 615
Función MINIMUM( ) 618
Función MINUTE( ) 621
Función MOD( ) 624
Función MONTH( ) 626
Función NOMINAL( ) 629
Función NORMDIST( ) 631
Función NORMSINV( ) 633
Función NOW( ) 634
Función NPER( ) 635
Función OCCURS( ) 638
Función OFFSET( ) 640
Función OMIT( ) 642
Función PACKED( ) 646
Función PI( ) 648
Función PMT( ) 650
Función PPMT( ) 653
Función PROPER( ) 655
Función PROPERTIES( ) 657
Función PVANNUITY( ) 661
Función PVLUMPSUM( ) 664

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 8 de 898
Tabla de contenidos

Función PYDATE( ) 667


Función PYDATETIME( ) 669
Función PYLOGICAL( ) 671
Función PYNUMERIC( ) 673
Función PYSTRING( ) 675
Función PYTIME( ) 677
Función RAND( ) 679
Función RATE( ) 681
Función RDATE( ) 684
Función RDATETIME( ) 687
Función RECLEN( ) 690
Función RECNO( ) 691
Función RECOFFSET( ) 693
Función REGEXFIND( ) 695
Función REGEXREPLACE( ) 703
Función REMOVE( ) 711
Función REPEAT( ) 714
Función REPLACE( ) 716
Función REVERSE( ) 720
Función RJUSTIFY( ) 721
Función RLOGICAL( ) 722
Función RNUMERIC( ) 725
Función ROOT( ) 728
Función ROUND( ) 730
Función RSTRING( ) 732
Función RTIME( ) 735
Función SECOND( ) 738
Función SHIFT( ) 741
Función SIN( ) 743
Función SOUNDEX( ) 745
Función SOUNDSLIKE( ) 749
Función SPLIT( ) 752
Función STOD( ) 756

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 9 de 898
Tabla de contenidos

Función STODT( ) 760


Función STOT( ) 765
Función STRING( ) 769
Función SUBSTR( ) 772
Función TAN( ) 775
Función TEST( ) 777
Función TIME( ) 779
Función TODAY( ) 784
Función TRANSFORM( ) 785
Función TRIM( ) 787
Función UNSIGNED( ) 789
Función UPPER( ) 791
Función UTOD( ) 793
Función VALUE( ) 797
Función VERIFY( ) 800
Función WORKDAY( ) 802
Función YEAR( ) 806
Función ZONED( ) 808
Función ZSTAT( ) 811
Estudios analíticos 814
Scripts de estudios analíticos 815
Etiquetas y encabezados de estudios analíticos 818
ANALYTIC 821
FILE 823
TABLE 825
FIELD 827
PARAM 829
PASSWORD 839
DATA 841
RESULT 843
PUBLISH 846
Desarrollo de estudios analíticos 847
Agregar encabezados de estudios analíticos 851

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 10 de 898
Tabla de contenidos

Mejores prácticas para el desarrollo de estudios analíticos 853


Empaquetamiento de las aplicaciones de análisis 857
Aplicación de análisis de ejemplo 860
Apéndice 865
Requisitos del sistema 866
Instalación de ACL para Windows 869
Configuración de Python para uso con ACL 871
Comparación entre las ediciones Unicode y no Unicode 873
Convertir estudios analíticos a Unicode 874
Comprobación de la compatibilidad con Unicode 877
Ejecución de scripts de R en el Servidor de AX 880
Ejecución de scripts de Python en el Servidor de AX 885
Códigos de error del Motor de AX 890
Palabras clave reservadas 897

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 11 de 898
Guía de inicio

Guía de inicio

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 13 de 898
Guía de inicio

Conceptos básicos de la creación de scripts de ACL


ACLScript es un lenguaje de comandos que permite programar y automatizar los comandos de ACL. La
estructura y los componentes de ACLScript son simples pero muy potentes.
Nota
Si es la primera vez que creará scripts, considere visitar Academia ACL para obtener
capacitación básica antes de leer este contenido. Si desea obtener información sobre cur-
sos para la creación de scripts y el uso de ACL Analytics, visite accounts.aclgrc.com.

Comandos
Cada línea de un script ejecuta un comando de ACLScript y comienza con el nombre del comando. Un
comando es una instrucción para ejecutar una operación en ACL.
El nombre del comando va seguido de uno o más parámetros que se especifican como nombre_del_pará-
metro valor_del_parámetro.
Consejo
Según el comando, algunos parámetros son obligatorios y otros, opcionales. No es nece-
sario que especifique los parámetros opcionales. Si se los omite, el comando se ejecuta
sin ellos. Sin embargo, si omite un parámetro obligatorio, ACL utiliza el valor pre-
determinado para ese parámetro.

Ejemplo de uso del comando CLASSIFY


El siguiente ejemplo muestra el comando CLASSIFY junto con los siguientes parámetros:
l ON: especifica qué campo de la tabla se debe utilizar para la clasificación
l SUBTOTAL: especifica campos opcionales para calcular el subtotal en la salida
l TO: especifica la tabla donde escribir los resultados del comando CLASSIFY
Observe cómo cada parámetro va seguido de uno o más valores del parámetro:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 14 de 898
Guía de inicio

Notas importantes sobre la sintaxis de los comandos


l la primera palabra de una línea de script debe ser el nombre de un comando
l en la mayoría de los comandos, el orden de los parámetros que se incluyen después del nombre del
comando no es importante
l la mayoría de los comandos requieren que abra la tabla de destino antes de ejecutar el comando,
estos comandos deben ir precedidos de OPEN nombre_de_la_tabla

Comentarios
Como en cualquier lenguaje de scripts, en ACLScript puede agregar comentarios usando la palabra
claveCOMMENT. Utilice los comentarios para que el código sea más fácil de comprender y para comu-
nicarse con cualquier persona que intente leer, utilizar o comprender su script. ACLScript admite dos tipos
de comentarios:
l comentarios de una sola línea: se ignora todo el texto que sigue a COMMENT hasta llegar al final
de la línea
l bloques de comentario de varias líneas: comienzan con COMMENT y se ignora cada una de las
líneas siguientes hasta llegar a la palabra clave END o una línea en blanco
Si desea obtener más información y ejemplos, consulte "Comentarios" en la página 19.

Tipos de datos
ACLScript admite cuatro tipos de datos básicos:
l lógicos: el tipo de datos más sencillo. Los datos lógicos expresan un valor de verdad que es ver-
dadero o falso.
l numéricos: contienen dígitos del 0 al 9 y pueden tener un signo negativo y un separador decimal
l carácter: una serie de uno o más caracteres
l fechahora: un valor de fecha, fechahora u hora expresado en un formato admitido
En ACL cada tipo de datos se trata de manera diferente y se puede usar en distintos comandos y funciones.
Si desea obtener más información acerca de los tipos de datos, consulte "Tipos de datos" en la página 21.

Expresiones
Una expresión es cualquier declaración que tenga un valor. La forma más sencilla de expresión es un lite-
ral, como 2 o "prueba"; sin embargo, las expresiones suelen aparecer como cálculos y pueden ser tan com-
plejas como cualquier combinación permitida de operadores, condiciones, funciones y valores que
podamos imaginar:

((2 + (3 - 2)) * 2) > ROOT(9;0)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 15 de 898
Guía de inicio

Las expresiones se suelen usar en ACL para completar campos calculados o como entrada para la lógica
condicional. Si desea obtener más información sobre las expresiones, consulte "Expresiones" en la
página 22.

Funciones
Las funciones son rutinas incorporadas que aceptan una cantidad determinada de parámetros y devuel-
ven un valor único. Utilice las funciones para manipular el contenido de los campos y las variables que se
utilizan en los comandos.
Nota
Las funciones no modifican los datos del campo sino que generan y devuelven un nuevo
valor sobre la base de un cálculo o un algoritmo que utiliza los datos del campo o varia-
bles como datos de entrada. Utilice el valor que devuelve la función como entrada para un
comando.
Las funciones comienzan con el nombre de la función, seguido de un paréntesis de apertura, una lista de
0 o más valores separados por un punto y coma que se se pasan a la función como argumentos, y un
paréntesis de cierre.

Ejemplo
La función BETWEEN(valor; mín; máx) tiene tres argumentos y devuelve verdadero si el valor cae dentro
del rango o falso si cae fuera del rango:
l valor: la expresión o el campo que se debe probar
l mín: el mínimo del rango
l máx: el máximo del rango

BETWEEN(importe; 500; 5000)

Si desea obtener más información acerca de las funciones, consulte "Funciones" en la página 26.

Variables
Las variables son una ubicación de almacenamiento temporal para un valor. Las variables tienen un iden-
tificador asociado que le permite hacer referencia al valor almacenado en la memoria de su computadora
y trabajar con él.
ACLScript utiliza el comando ASSIGN para crear una variable y asignarla a un valor al mismo tiempo:

ASSIGN v_age_in_years = 3

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 16 de 898
Guía de inicio

Para que resulte más simple, puede omitir la palabra clave ASSIGN; sin embargo, se utiliza
ASSIGN implícitamente y se ejecuta el mismo comando:

v_age_in_years = 3

Nota
ACLScript no admite valores en blanco. Todas las variables deben tener un valor asociado
de uno de los tipos de datos admitidos. El interpretador de scripts evalúa el tipo de datos uti-
lizando el formato de datos y el calificador que usted utiliza para asignarle el valor. Si desea
obtener más información, consulte "Tipos de datos" en la página 21.

Utilizar variables
Una vez que se crea una variable, puede hacer referencia a ella en cualquier lugar en el que haga refe-
rencia a nombres de campos o variables. También puede reasignarle un nuevo valor utilizando el comando
ASSIGN.

EXTRACT RECORD TO 'result.fil' IF age > v_age_in_years


v_age_in_years = 5

También puede utilizar la interpolación de cadenas o el reemplazo de variables para incluir una variable en
un literal de cadena encerrando el nombre de la variable entre los caracteres %. Cuando ACL detecta una
variable reemplazada, reemplaza el marcador con su valor correspondiente:

ASSIGN v_table = erp_data


OPEN %v_table%

Si desea obtener más información acerca de las variables, consulte "Variables" en la página 28.

Estructuras de control
Una estructura de control es un componente de un script que decide qué dirección seguir según pará-
metros determinados. ACLScript ofrece tanto estructuras de bucle como de lógica condicional.

Lógica condicional
ACLScript implementa la lógica condicional como un comando IF y como un parámetro opcional en muchos
comandos del lenguaje.
Consejo
El comando IF se utiliza para controlar si un comando se ejecuta o no, mientras que el pará-
metro IF se utiliza para decidir con qué registros de una tabla se ejecuta un comando.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 17 de 898
Guía de inicio

IF

IF v_recuento > 10 CLASSIFY ON núm_cliente

Parámetro IF

CLASSIFY ON núm_cliente IF estado = 'NY'

Bucle
El comando LOOP proporciona la estructura de control de bucle en ACLScript. Este comando procesa las
instrucciones dentro del bucle mientras que la expresión de la prueba de control sea verdadera.
Si desea obtener más información acerca de las estructuras de control, consulte "Estructuras de control"
en la página 30

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 18 de 898
Guía de inicio

Comentarios
Como en un lenguaje de scripts, en ACLScript puede agregar comentarios usando la palabra
claveCOMMENT. Utilice los comentarios para que el código sea más fácil de comprender y para comu-
nicarse con cualquier persona que intente leer, utilizar o comprender su script.

Tipos de comentarios
ACLScript admite dos tipos de comentarios:
l comentarios de una sola línea: se ignora todo el texto que sigue a COMMENT hasta llegar al final
de la línea
l bloques de comentario de varias líneas: comienzan con COMMENT y se ignora cada una de las
líneas siguientes hasta llegar a la palabra clave END o una línea en blanco

Comentarios de una sola línea


Utilice comentarios de una sola línea para describir los pasos individuales de su script o para describir las
variables:

COMMENT *** la fecha de inicio para el período de análisis


v_fecha_de_inicio = `20170701`

Bloques de comentarios de varias líneas


Utilice bloques de comentarios de varias líneas para describir scripts o secciones de scripts.

COMMENT
**********************
Esta sección del script prepara los datos para la importación
**********************
END

Bloques de comentario de encabezado


Es una práctica recomendable incluir, al principio de cada script, un bloque de comentario de encabezado
que contenga información del script clave:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 19 de 898
Guía de inicio

COMMENT
************************************************************
*** Nombre del script: {ID_App}{Nombre del script}
***Parámetros: {Descripción detallada}
***Salida: {Describir los parámetros}
*** Escrito por: {Nombre}, ACL Services, {Mes AAAA}
*** Modificado por: {Nombre}, ACL Services, finalidad y lógica del script
*** Versión: 1.1.1 {ver_app.ver_script.defecto.fix}
************************************************************
END

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 20 de 898
Guía de inicio

Tipos de datos
ACLScript admite cuatro tipos básicos de datos: lógicos, numéricos, de caracteres y de fechahora.

Tipo Descripción Límite Calificador Ejemplos

Carácter Una serie de uno o más caracteres 32.767 Comillas comunes o o 'Pedro Pérez'
bytes comillas simples o "Pedro Pérez"

Numérico Los valores numéricos contienen dígitos 22 dígitos Sin calificador o 100
del 0 al 9 y pueden tener un signo nega- o -5
tivo y un separador decimal. o 5,01
o 22222,1232

Fechahora Un valor de fecha, fechahora u hora o Mínim- o Comillas inver- o `20160101`


expresado en un formato admitido. o= tidas o `141231`
1900- o 't' inicial o un o `t2359`
01-01 espacio en o `20141231T23595-
o Máxim- blanco para los 9`
o= valores de hora o `20141231
9999- 235959`
12-31

Lógico El tipo de datos más sencillo. Los datos o T Sin calificador ASSIGN v_truth = 5 > 4
lógicos expresan un valor de verdad que o F se evalúa como T
es verdadero o falso.
Los operadores de comparación, como
'=', '>' y '<', devuelven valores lógicos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 21 de 898
Guía de inicio

Expresiones
Una expresión es cualquier declaración que tenga un valor. La forma más sencilla de expresión es un lite-
ral; sin embargo, las expresiones pueden ser tan completas como cualquier combinación permitida de
operadores, condiciones, funciones y valores que podamos imaginar.

Componentes de una expresión


Valores literales
Un valor literal es un valor escrito exactamente como debe ser interpretado, como el literal de caracteres
'mi valor'. Si desea obtener información acerca de estos literales, consulte "Tipos de datos" en la página
precedente.

Operadores
Los operadores son símbolos que le indican al interpretador de scripts que realice una evaluación arit-
mética, de cadena, de comparación o lógica de los valores especificados:

Tipo de operador en orden de prio-


ridad Operadores en orden de prioridad Ejemplos

Paréntesis o () especifica prioridad (5 + 3) * 2


o () operador de función

Unario o NO lógico v_truth = NOT (3 < 2)


o - negación

Aritmética o ^ potenciación 1+5-3*2


o * multiplica, / divide
o + suma, - resta
Nota
Todos los operadores
multiplicadores tienen la
misma prioridad y se eva-
lúan de izquierda a dere-
cha.
Todos los operadores de
suma tienen la misma
prioridad y se evalúan de
izquierda a derecha.

Cadena + concatena "Este es" + " mi script"

Comparativa o < menor que IF importe <> 100

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 22 de 898
Guía de inicio

Tipo de operador en orden de prio-


ridad Operadores en orden de prioridad Ejemplos

o > mayor que


o = igualdad
o > = mayor que o igual a
o < = menor que o igual a
o < > no igual
Nota
Todos los operadores
comparativos tienen la
misma prioridad y se eva-
lúan de izquierda a dere-
cha.

Lógica binaria o AND o & IF importe > 5 AND importe < 10


o OR o |

Funciones
Las expresiones se evalúan utilizando los valores que devuelven las funciones. Las funciones se ejecutan
con la prioridad más elevada de cualquier componente de la expresión. Si desea obtener más información
acerca de las funciones, consulte "Funciones" en la página 26.

Expresiones de ejemplo
Evalúa en 6
(2 + (3 - 2)) * 2

Evalúa en verdadero
((2 + (3 - 2)) * 2) > ROOT(9;0)

Evalúa en 'Tutorial de ACLScript'


'Tutorial' + 'de' + 'AC ' + 'LScript'

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 23 de 898
Guía de inicio

Definición de campos calculados con expresiones


Utilice campos calculados para crear campos de datos adicionales en la tabla actualmente abierta con
una expresión. Un campo calculado es un campo que se anexa a una tabla abierta y se completa con el
valor de la expresión especificada.

Sintaxis del campo calculado


DEFINE FIELD nombre COMPUTED expresión

l nombre: el nombre del campo calculado que se va a generar


l expresión: el cálculo o cómputo que se utiliza para generar el valor del campo

Ejemplo de campo calculado


DEFINE FIELD c_nombre_completo COMPUTED nombre + ' ' + apellido

Consejo
Coloque el prefijo c_ a los campos calculados a fin de identificarlos como calculados en
lugar de datos de origen sin modificar.

Definición de valores de campos calculados condicionales


También puede utilizar condiciones con los campos calculados para definir el valor para los distintos
casos:

DEFINE FIELD c_total COMPUTED

importe * ca_tasa_impuesto IF estado = 'CA'


importe * ny_tasa_impuesto IF estado = 'NY' OR estado = 'NJ'
importe * tasa_general

Cuando la primera expresión condicional se evalúa como verdadera, se utiliza el valor especificado para
ese caso. En este ejemplo, importe * tasa_general es el valor predeterminado que se utiliza cuando nin-
guna de las expresiones condicionales se evalúa como verdadera.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 24 de 898
Guía de inicio

Nota
Debe agregar una línea vacía entre el comando de la línea y las condiciones, a menos que
incluya los parámetros IF , WIDTH, PIC o AS en el comando DEFINE FIELD. Si desea
obtener más información, consulte "Comando DEFINE FIELD . . . COMPUTED" en la
página 125.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 25 de 898
Guía de inicio

Funciones
Las funciones son rutinas incorporadas que aceptan una cantidad determinada de parámetros y devuel-
ven un valor único. Utilice las funciones para manipular el contenido de los campos y las variables que se
utilizan en los comandos.
Nota
Las funciones no modifican los datos del campo sino que generan y devuelven un nuevo
valor sobre la base de un cálculo o un algoritmo que utiliza los datos del campo o varia-
bles como datos de entrada. Utilice el valor que devuelve la función como entrada para un
comando.

Sintaxis de las funciones


Las funciones comienzan con el nombre de la función, seguido de un paréntesis de apertura, una lista de
0 o más valores separados por un punto y coma que se se pasan a la función como argumentos, y un
paréntesis de cierre.

Ejemplo
La función BETWEEN(valor; mín; máx) tiene tres argumentos y devuelve verdadero si el valor cae dentro
del rango o falso si cae fuera del rango:
l valor: la expresión o el campo que se debe probar
l mín: el mínimo del rango
l máx: el máximo del rango

BETWEEN(importe; 500; 5000)

Argumentos de las funciones


Un argumento de una función es un valor de entrada específico que se pasa a la función.
Los argumentos de las funciones se pasan a las funciones a través de una lista de argumentos. Se trata
de una lista de expresiones, variables o valores literales que se evalúan en valores del tipo de datos del
parámetro. Si desea obtener más información acerca del trabajo con tipos de datos, consulte "Tipos de
datos" en la página 21.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 26 de 898
Guía de inicio

Nota
Si su proyecto trabaja con formatos de números europeos o si está escribiendo scripts que
se pueden utilizar en otras regiones, separe los argumentos de las funciones con un carác-
ter de espacio en lugar de una coma, aunque esté pasando un valor numérico con signo.
Las funciones que aceptan valores numéricos con signos necesitan un delimitador explí-
cito.

Comparación entre funciones y comandos


La diferencia entre comandos y funciones es sutil pero crucial para el uso de ACLScript:

Funciones Comandos

Utilice campos, valores o registros como entrada y genere Utilice tablas como entrada y genere nuevos registros y
un nuevo valor para devolverlo. tablas.

Se utilizan en expresiones, campos calculados, valores Se utilizan para analizar datos, importar datos o generar
de parámetros de comandos, variables y filtros para ayu- resultados.
dar a modificar la ejecución del comando.

No puede ser un paso independiente en un script. Puede ser un paso independiente en un script.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 27 de 898
Guía de inicio

Variables
Las variables son una ubicación de almacenamiento temporal para un valor. Las variables tienen un iden-
tificador asociado que le permite hacer referencia al valor almacenado en la memoria de su computadora
y trabajar con él.

Cómo funcionan las variables en ACLScript


Creación de una variable y asignación de un valor
ACLScript utiliza el comando ASSIGN para crear una variable y asignarla a un valor al mismo tiempo:

ASSIGN v_age_in_years = 3

Para que resulte más simple, puede omitir la palabra clave ASSIGN; sin embargo, se utiliza
ASSIGN implícitamente y se ejecuta el mismo comando:

v_age_in_years = 3

Nota
ACLScript no admite valores en blanco. Todas las variables deben tener un valor aso-
ciado de uno de los tipos de datos admitidos. El interpretador de scripts evalúa el tipo de
datos utilizando el formato de datos y el calificador que usted utiliza para asignarle el
valor. Si desea obtener más información, consulte "Tipos de datos" en la página 21.

Utilizar variables
Una vez que se crea una variable, puede hacer referencia a ella en cualquier lugar en el que haga refe-
rencia a nombres de campos o variables. También puede reasignarle un nuevo valor utilizando el
comando ASSIGN.

EXTRACT RECORD TO 'result.fil' IF age > v_age_in_years


v_age_in_years = 5

También puede utilizar la interpolación de cadenas o el reemplazo de variables para incluir una variable
en un literal de cadena encerrando el nombre de la variable entre los caracteres %. Cuando ACL detecta
una variable reemplazada, reemplaza el marcador con su valor correspondiente:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 28 de 898
Guía de inicio

ASSIGN v_table = erp_data


OPEN %v_table%

Tipos de variables
ACL utiliza los siguientes tipos de variables:
l Variables generadas por el sistema: se crean automáticamente después de ejecutar un comando
l Variables permanentes: permanecen en la memoria de la computadora hasta que se las elimina y
continúan allí incluso después de cerrar el proyecto de ACL
Nota
Para definir una variable permanente, coloque un guion bajo '_' delante del
identificador: _v_nombre_compañía = 'Acme'.
l Variables de la sesión: permanecen en la memoria de su computadora hasta que las elimina o
hasta que se cierra el proyecto de ACL

Identificadores de las variables


Los identificadores de las variables distinguen entre mayúsculas y minúsculas y siguen determinadas con-
venciones relacionadas con el tipo de variable:
l los identificadores de variables generados por el sistema utilizan solo
mayúsculas: OUTPUTFOLDER
l los identificadores de variables permanentes deben tener un prefijo '_': _v_permanente
l los identificadores de variables de sesión utilizan el formato v_nombrevariable por convención, pero
esta convención no es obligatoria

Visualización de los valores de las variables


Durante el desarrollo o la depuración de los scripts, puede resultar útil hacer un seguimiento de los valores
de las variables a medida que se ejecuta el script. Para capturar los valores de las variables en el archivo de
log del script, utilice el comando DISPLAY:

DISPLAY v_antigüedad_en_años

Cuando el script se encuentra con este comando, lo escribe en el archivo de log. Para ver el valor de la
variable en esta etapa de la ejecución del script, haga clic en la entrada del log.
Consejo
También puede usar las variables para ayudar a depurar insertando puntos de quiebre en
el script e inspeccionando los valores de las variables en la ficha Variables del Navegador.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 29 de 898
Guía de inicio

Estructuras de control
Una estructura de control es un componente de un script que decide qué dirección seguir según pará-
metros determinados. ACLScript ofrece tanto estructuras de bucle como de lógica IF condicional.

Lógica condicional con IF


ACLScript implementa la lógica condicional como un comando IF y como un parámetro opcional en
muchos comandos del lenguaje:
l el command: controla si se ejecuta un comando o no
l el parameter: decide en qué registros de una tabla se ejecutan los comandos

El comando IF
Al utilizar el comando IF, usted especifica una expresión condicional seguida del comando que se debe
ejecutar si la expresión se evalúa como verdadera:

IF v_recuento > 10 CLASSIFY ON núm_cliente

Esta estructura condicional controla qué código se ejecuta, para que usted pueda usar el comando
IF cuando desee procesar una tabla completa sobre la base de la expresión de prueba. Si la expresión se
evalúa como verdadera, el comando se ejecuta con todos los registros de la tabla. Si desea obtener más
información acerca del comando IF, consulte "IF" en la página 224.

Parámetro IF
Muchos comandos aceptan un parámetro IF opcional, que puede utilizar para filtrar los registros con los
que se ejecuta el comando:

CLASSIFY ON núm_cliente IF estado = 'NY'

Cuando se ejecuta esta instrucción, el script clasifica todos los registros de la tabla en los que el valor del
campo estado es 'NY'.

Bucle
El comando LOOP
El comando LOOP proporciona la estructura de control de bucle en ACLScript.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 30 de 898
Guía de inicio

Nota
El comando LOOP se debe ejecutar dentro del comando GROUP, no puede ejecutarse de
modo independiente.
El comando procesa las instrucciones dentro del bucle mientras que la expresión WHILE sea verdadera:

ASSIGN v_recuento = 10
GROUP
LOOP WHILE v_recuento > 0
v_total = v_total + importe
v_recuento = v_recuento - 1
END
END

Esta estructura se repite 10 veces y agrega el valor del campo importe a la variable v_total. Al final de cada
repetición, la variable v_recuento se reduce en 1 y después se prueba en la expresión WHILE. Una vez que
la expresión se evalúa como falsa, se completa el bucle y el script avanza.
Cuando se completa el bucle, v_total contiene la suma de los 10 campos importe de los registros.
Si desea obtener más información acerca de los bucles, consulte "Comando LOOP" en la página 309.

LOOPING con un subscript
A veces, el comando LOOP no ofrece la función de bucle exacta que usted necesita. En este caso, puede
invocar un script de ACL independiente para ejecutar un bucle utilizando el comando DO SCRIPT: DO
SCRIPT Nombre_del_script WHILE Prueba_condicional.
Puede utilizar uno de los siguientes métodos comunes para controlar cuándo finaliza el bucle:
l bandera: el bucle continúa hasta que la variable de bandera lógica se ajuste en FALSE
l contador: el bucle continúa hasta que una variable que se incrementa o decrece cruza un umbral con-
dicional
Si desea obtener más información acerca de la invocación de subscripts, consulte "Comando DO SCRIPT"
en la página 163.

Ejemplo
Necesita importar todos los archivos CSV de la carpeta C:\data a su proyecto. Puede usar el comando
DIRECTORY para obtener una lista de archivos de la carpeta; sin embargo, no puede usar el comando
IMPORT dentro de la estructura GROUP. Necesita una manera alternativa de realizar bucles a lo largo de
la tabla que crea DIRECTORY.
Para lograrlo, cree un script principal que realice lo siguiente:
1. Ejecute el comando DIRECTORY y guarde los resultados en una tabla.
2. Obtenga la cantidad de registros de la tabla para usar como un contador.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 31 de 898
Guía de inicio

3. Invoque un subscript una vez por cada registro de la tabla para ejecutar el comando IMPORT en el
registro actual.

Script principal

COMMENT Script principal

DIRECTORY "C:\data\*.csv" TO T_Tabla_a_aplicar_bucle


OPEN T_Tabla_a_aplicar_bucle
COUNT
v_Núm_registros = COUNT1
v_Recuento = 1
DO SCRIPT Importar_subscript WHILE v_Recuento <= v_Núm_registros

Subscript de importación

COMMENT Importar_subscript

OPEN T_Tabla_a_aplicar_bucle
LOCATE RECORD v_Recuento

COMMENT aquí va el código para importar el archivo CSV en el registro...

ASSIGN v_Recuento = v_Recuento + 1

Las variables se comparten entre todos los scripts que se ejecutan en el proyecto; por lo tanto, el script
principal invoca al subscript hasta que el valor de v_Recuento supera el valor de v_Núm_registros. Cada
vez que se ejecute el subscript, se incrementa v_Counter.
Esta estructura le permite invocar el comando IMPORT para cada registro mientras aplica el bucle a la
tabla. Cuando se complete el script principal, habrá importado todos los archivos CSV desde la carpeta
C:\data.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 32 de 898
Guía de inicio

Agrupación y bucles
Los comandos GROUP y LOOP ofrecen dos maneras de ejecutar una serie de comandos de manera rei-
terada. GROUP realiza una sola repetición de uno o más comandos con cada registro. LOOP realiza varias
repeticiones de una serie de comandos con un solo registro y solo se puede usar dentro de un bloque
GROUP.

Un ejemplo sencillo de GROUP


Usted tiene una tabla de datos de facturas denominada Trans_Cp. Con esta información, necesita calcular
un total acumulado de importes de facturas:

Número_pro- Nombre_pro- Ciudad_pro- Número_ Fecha_ Importe_ Costo_


veedor veedor veedor factura factura factura Cantidad unitario

11663 More Power Los Angeles 5981807 2000-11- 618,30 90 6,87


Industries 17

13808 NOVATECH Des Moines 2275301 2000-11- 6705,12 976 6,87


Wholesale 17

12433 Koro Inter- Sheveport 6585673 2000-11- 7955,46 1158 6,87


national 17

Para calcular este importe, utiliza el comando GROUP. Dentro de cada repetición de GROUP, usted:
1. Calcula el total acumulado del registro actual.
2. Extrae el número, el importe, la fecha y el total acumulado de las facturas a la tabla de resultados.

OPEN Trans_Cp

COMMENT ajuste el valor inicial del total acumulado en cero


ASSIGN v_total_acumulado = 0,00

COMMENT repita en cada registro de la tabla y después calcule y extraiga el total acumulado
GROUP
ASSIGN v_total_acumulado = v_total_acumulado + Importe_factura
EXTRACT Número_factura; Importe_factura; Fecha_factura; v_total_acumulado AS "Total acu-
mulado" TO resultados1
END

Cuando se ejecuta el script, los comandos dentro del bloque GROUP se procesan en cada registro de la
tabla, de arriba hacia abajo, y se calcula y extrae el total acumulado. Si pudiéramos observar el comando
GROUP a medida que se ejecuta, se vería de este modo:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 33 de 898
Guía de inicio

La primera iteración de GROUP: total acumulado = 0,00 + 618,30


El comando GROUP agrega el importe de la factura del primer registro al total acumulado inicial de 0,00 y
extrae los campos a la tabla de resultados:

Número_pro- Nombre_pro- Ciudad_pro- Número_ Fecha_ Importe_ Costo_


veedor veedor veedor factura factura factura Cantidad unitario

11663 More Power Los Angeles 5981807 2000-11- 618,30 90 6,87


Industries 17

13808 NOVATECH Des Moines 2275301 2000-11- 6705,12 976 6,87


Wholesale 17

12433 Koro Inter- Sheveport 6585673 2000-11- 7955,46 1158 6,87


national 17

La segunda iteración de GROUP: total acumulado = 618,30 + 6705,12


El comando GROUP agrega el importe de la factura del segundo registro al nuevo total acumulado de
618,30 y extrae los campos a la tabla de resultados:

Número_pro- Nombre_pro- Ciudad_pro- Número_ Fecha_ Importe_ Costo_


veedor veedor veedor factura factura factura Cantidad unitario

11663 More Power Los Angeles 5981807 2000-11- 618,30 90 6,87


Industries 17

13808 NOVATECH Des Moines 2275301 2000-11- 6705,12 976 6,87


Wholesale 17

12433 Koro Inter- Sheveport 6585673 2000-11- 7955,46 1158 6,87


national 17

Tercera iteración de GROUP: total acumulado = 7323,42 + 7955,46


El comando GROUP agrega el importe de la factura del tercer registro al nuevo total acumulado de
7323,42 y extrae los campos a la tabla de resultados:

Número_pro- Nombre_pro- Ciudad_pro- Número_ Fecha_ Importe_ Costo_


veedor veedor veedor factura factura factura Cantidad unitario

11663 More Power Los Angeles 5981807 2000-11- 618,30 90 6,87


Industries 17

13808 NOVATECH Des Moines 2275301 2000-11- 6705,12 976 6,87


Wholesale 17

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 34 de 898
Guía de inicio

Número_pro- Nombre_pro- Ciudad_pro- Número_ Fecha_ Importe_ Costo_


veedor veedor veedor factura factura factura Cantidad unitario

12433 Koro Inter- Sheveport 6585673 2000-11- 7955,46 1158 6,87


national 17

Tabla de resultados final


Una vez que el comando GROUP haya procesado el registro final de la tabla, usted tendrá la siguiente tabla
de resultados:

Número_factura Importe_factura Fecha_factura Total_acumulado

5981807 618,30 2000-11-17 618,30

2275301 6705,12 2000-11-17 7323,42

6585673 7955,46 2000-11-17 15278,88

Manejo de diferentes casos con GROUP IF


Con la misma tabla Trans_Cp que antes, usted necesita calcular los totales acumulados de tres tipos de fac-
turas:
l Valor elevado (mayor que o igual a 1000,00)
l Valor medio (entre 100,00 y 1000,00)
l Valor bajo (menos que 100,00)
El comando GROUP proporciona una estructura IF/ELSE para manejar los diferentes casos. Usted pro-
porciona las expresiones condicionales para la prueba y, si un registro se evalúa como verdadero, se eje-
cutan los comandos dentro del bloque.

Cómo se prueban los casos


Los casos se prueban de arriba hacia abajo y un registro solo puede ser procesado por un bloque
IF/ELSE. El primer caso que se evalúa como verdadero para el registro es el que lo procesa:
1. Cuando GROUP procesa el primer registro, vuelve a probarlo con la primera condición IF (Importe_
factura >= 1000). Si esta condición se evalúa como verdadera, se ejecuta el código de este caso y no
se prueba ningún otro.
2. Si el primer caso se evalúa como falso, se prueba la siguiente condición ELSE IF (Importe_factura
>= 100). Del mismo modo, si esta condición se evalúa como verdadera, se ejecuta el código de este
caso y no se prueba ningún otro.
3. Por último, si ninguno de los caos IF o ELSE IF se evalúa como verdadero, el registro se procesa con
el caso predeterminado del bloque ELSE.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 35 de 898
Guía de inicio

Nota

Si un registro se evalúa como verdadero para más de un caso, el registro solo es pro-
cesado por el primer bloque IF/ELSE que lo prueba. Los registros nunca son procesados
por más de un bloque IF/ELSE en un comando GROUP.

OPEN Trans_Cp

COMMENT ajuste los valores iniciales para los totales acumulados


ASSIGN v_total_acumulado_alto = 0,00
ASSIGN v_total_acumulado_medio = 0,00
ASSIGN v_total_acumulado_bajo = 0,00

COMMENT use GROUP IF para ejecutar diferentes comandos ASSIGN y EXTRACT según el
importe de la factura
GROUP IF Importe_factura >= 1000
ASSIGN v_total_acumulado_alto = v_total_acumulado_alto + Importe_factura
EXTRACT Número_factura; Importe_factura; Fecha_factura; v_total_acumulado_alto AS "Total acu-
mulado" TO resultados_alto
ELSE IF Importe_factura >= 100
ASSIGN v_total_acumulado_medio = v_total_acumulado_medio + Importe_factura
EXTRACT Número_factura; Importe_factura; Fecha_factura; v_total_acumulado_medio AS "Total
acumulado" TO resultados_medio
ELSE
ASSIGN v_total_acumulado_bajo = v_total_acumulado_bajo + Importe_factura
EXTRACT Número_factura; Importe_factura; Fecha_factura; v_total_acumulado_bajo AS "Total
acumulado" TO resultados_bajo
END

Al ejecutar el script, el comando GROUP prueba el importe de la factura de cada registro. Según el


importe, el registro se utiliza para actualizar uno de los tres totales acumulados (bajo, medio o alto) y se
generan tres tablas de resultados.

LOOP dentro de un comando GROUP


Al usar GROUP para procesar los registros de una tabla, puede usar un comando LOOP para ejecutar
una serie de comandos varias veces en un único registro. LOOP es una segunda repetición que ocurre
dentro de la repetición de GROUP y se ejecuta hasta que una condición de prueba que usted especifica
se evalúa como falsa.

Uso de LOOP para dividir un campo


Usted tiene la siguiente tabla que contiene datos de facturas y necesita aislar información específica para
los importes de facturas por departamento. Una factura puede estar relacionada con más de un

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 36 de 898
Guía de inicio

departamento, y los códigos de los departamentos se almacenan en un formato delimitado por comas en la
tabla:

Número_proveedor Número_factura Fecha_factura Importe_factura Código_departamento

11663 5981807 2000-11-17 618,30 CCD,RDR

13808 2275301 2000-11-17 6705,12 CCD

12433 6585673 2000-11-17 7955,46 CCD,LMO,RDR

Para extraer los importes de las facturas por departamento, usted:


1. Utiliza un comando GROUP para procesar la tabla registro por registro.
2. Calcula la cantidad de departamentos (n) asociados con cada registro.
3. Utilice el comando LOOP para repetir n veces en el registro a fin de extraer los datos de cada depar-
tamento asociado con el registro.
Nota
Debe incrementar la variable v_recuento dentro de LOOP. Si no lo hace, la prueba
WHILE siempre se evalúa como verdadera y el script entra en un bucle infinito. Puede
incluir el comando SET LOOP en sus scripts para evitar estos bucles infinitos. Si desea
obtener más información, consulte "Comando SET" en la página 381.

COMMENTuse GROUP para contar las comas en cada campo del código de departamento como una
manera de identificar cuántos departamentos están asociados con el registro"LOOP" en cada registro
por cada código del campo, con la extracción de cada código a su propio registro ENDGROUP v_
recuento_departamentos = OCCURS(Código_departamento;',') v_recuento = 0 LOOP WHILE v_
recuento <= v_recuento_departamentos v_dept = SPLIT (Código_departamento; ','; (v_recuento + 1))
EXTRACT FIELDS Número_factura; Importe_factura; v_dept AS "Departamento" TO resultado1 v_
recuento = v_recuento + 1 END END

Cuando se ejecuta el script, los comandos dentro del bloque GROUP se procesan en cada registro de la
tabla, de arriba hacia abajo. Para cada registro, el comando LOOP se repite en el registro una vez por
código de departamento en la lista delimitada por comas y, a continuación, extrae un registro. Si pudié-
ramos observar los comandos GROUP y LOOP a medida que se ejecutan, se verían de este modo:

Primera reiteración de GROUP: 2 repeticiones de LOOP


Número_proveedor Número_factura Fecha_factura Importe_factura Código_departamento

11663 5981807 2000-11-17 618,30 CCD,RDR

13808 2275301 2000-11-17 6705,12 CCD

12433 6585673 2000-11-17 7955,46 CCD,LMO,RDR

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 37 de 898
Guía de inicio

Para el primer registro de la tabla, el valor de v_recuento_departamentos es 1; por lo tanto, LOOP se


repite dos veces:
1. Para la primera repetición del LOOP:
l v_recuento = 0

l v_dept = CCD

Se extrae el siguiente registro y el valor de v_recuento se incrementa a 1; por lo tanto, se vuelve a


repetir LOOP:

5981807 618,30 CCD

2. Para la segunda repetición de LOOP:


l v_recuento = 1

l v_dept = RDR

Se extrae el siguiente registro y el valor de v_recuento se incrementa a 2; por lo tanto, no se vuelve


a repetir LOOP y el comando GROUP pasa al siguiente registro:

5981807 618,30 RDR

Segunda reiteración de GROUP: 1 repetición de LOOP


Número_proveedor Número_factura Fecha_factura Importe_factura Código_departamento

11663 5981807 2000-11-17 618,30 CCD,RDR

13808 2275301 2000-11-17 6705,12 CCD

12433 6585673 2000-11-17 7955,46 CCD,LMO,RDR

Para el segundo registro de la tabla, el valor de v_recuento_departamentos es 0; por lo tanto, LOOP se


repite una vez:
l v_recuento = 0
l v_dept = CCD
Se extrae el siguiente registro y el valor de v_recuento se incrementa a 1; por lo tanto, no se vuelve a repe-
tir LOOP y el comando GROUP pasa al siguiente registro:

2275301 6705,12 CCD

Primera reiteración de GROUP: 3 repeticiones de LOOP


Número_proveedor Número_factura Fecha_factura Importe_factura Código_departamento

11663 5981807 2000-11-17 618,30 CCD,RDR

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 38 de 898
Guía de inicio

Número_proveedor Número_factura Fecha_factura Importe_factura Código_departamento

13808 2275301 2000-11-17 6705,12 CCD

12433 6585673 2000-11-17 7955,46 CCD,LMO,RDR

Para el tercer registro de la tabla, el valor de v_recuento_departamentos es 2; por lo tanto, LOOP se repite
tres veces:
1. Para la primera repetición de LOOP:
l v_recuento = 0

l v_dept = CCD

Se extrae el siguiente registro y el valor de v_recuento se incrementa a 1; por lo tanto, se vuelve a


repetir LOOP:

6585673 7955,46 CCD

2. Para la segunda repetición de LOOP:


l v_recuento = 1

l v_dept = LMO

Se extrae el siguiente registro y el valor de v_recuento se incrementa a 2; por lo tanto, se vuelve a


repetir LOOP:

6585673 7955,46 LMO

3. Para la tercera repetición de LOOP:


l v_recuento = 2

l v_dept = RDR

Se extrae el siguiente registro y el valor de v_recuento se incrementa a 3; por lo tanto, no se vuelve a


repetir LOOP y el comando GROUP llega al final de la tabla:

6585673 795546 RDR

Tabla de resultados final


Una vez que el comando GROUP procesó cada registro de la tabla y que el comando LOOP se haya repe-
tido para todos los códigos de departamentos, usted tendrá la siguiente tabla de resultados:

Número_factura Importe_factura Departamento

5981807 618,30 CCD

5981807 618,30 RDR

2275301 6705,12 CCD

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 39 de 898
Guía de inicio

Número_factura Importe_factura Departamento

6585673 7955,46 CCD

6585673 7955,46 LMO

6585673 7955,46 RDR

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 40 de 898
Guía de inicio

Treinta funciones principales de ACL


Las treinta funciones principales en ACLScript son útiles para una serie de tareas diferentes. Utilice estas
funciones de manera regular para preparar, analizar, convertir y unificar los datos de sus scripts.

Eliminar los espacios iniciales y finales


Los campos de caracteres de las tablas de ACL suelen contener espacios al principio o al final debido a que
el ancho de los campos tiene una longitud fija. Cuando necesite realizar una operación utilizando los datos
de un campo de caracteres, puede quitar estos espacios para que la cadena contenga únicamente los
datos reales.

ALLTRIM( )
Devuelve una cadena con los espacios iniciales y finales eliminados de la cadena de entrada.
Nota
Es una práctica recomendable utilizar ALLTRIM() en cualquier campo de caracteres que
esté utilizando como entrada para otra función de manera que los espacios al principio o el
final no afecten el valor que se devuelve.

Ejemplo
El campo Número_de_proveedor contiene el valor " 1254". Debe quitar este espacio adicional del
Número_de_proveedor para poder unificar el campo con datos de otra tabla.

COMMENT devuelve "1254"


ALLTRIM(Número_de_proveedor)

Sincronización de mayúsculas y minúsculas


La comparación de cadenas en ACL distingue entre mayúsculas y minúsculas; por lo tanto, resulta útil uni-
ficar las mayúsculas y minúsculas de todos los datos de un campo antes de realizar una comparación,
unión o relación utilizando los datos.

UPPER( )
Devuelve una cadena con los caracteres alfabéticos convertidos en mayúsculas.

Ejemplo
El campo Apellido contiene el valor "Smith". Debe pasar este valor a mayúsculas para compararlo con el

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 41 de 898
Guía de inicio

valor en mayúsculas de otra tabla.

COMMENT devuelve "SMITH"


UPPER(Apellido)

LOWER( )
Devuelve una cadena con caracteres alfabéticos convertidos en minúsculas.

Ejemplo
El campo Apellido contiene el valor "Smith". Debe pasar este valor a minúsculas para compararlo con el
valor en minúsculas de otra tabla.

COMMENT devuelve "smith"


LOWER(Apellido)

PROPER( )
Devuelve una cadena donde el primer carácter de cada palabra está en mayúsculas y el resto de los
caracteres, en minúsculas.

Ejemplo
El campo Apellido contiene el valor "smith". Necesita mostrarlo como un nombre propio en la salida.

COMMENT devuelve "Smith"


PROPER(Apellido)

Cálculo y separación de cadenas


Cuando necesite extraer un segmento de datos de una cadena más extensa o probar información de la
cadena, como su longitud o su contenido, utilice las siguientes funciones.

SUBSTR( )
Devuelve una subcadena especificada de una cadena.

Ejemplo
El campo Código_de_cuenta_GL contiene el valor "001-458-873-99". Debe extraer los primeros tres
bytes o caracteres de la cadena.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 42 de 898
Guía de inicio

COMMENT devuelve "001"


ASSIGN v_pos_inicial = 1
ASSIGN v_largo = 3
SUBSTR(Código_de_cuenta_GL; v_pos_inicial; v_largo)

LAST( )
Devuelve una cantidad específica de caracteres del final de una cadena.

Ejemplo
El campo Código_de_cuenta_GL contiene el valor "001-458-873-99". Debe extraer los últimos dos bytes o
caracteres de la cadena.

COMMENT devuelve "99"


ASSIGN v_cant_caracteres = 2
LAST(Código_de_cuenta_GL; v_cant_caracteres)

SPLIT( )
Devuelve un segmento especificado de una cadena.

Ejemplo
El campo Código_de_cuenta_GL contiene el valor "001-458-873-99". Debe extraer el segundo segmento
del código de la cadena.

COMMENT devuelve "458"


ASSIGN v_delimitador = "-"
ASSIGN v_núm_segmento = 2
SPLIT(Código_de_cuenta_GL; v_delimitador; v_núm_segmento)

AT( )
Devuelve un número que especifica el lugar de inicio de una incidencia particular de una subcadena dentro
de un valor de caracteres.

Ejemplo
El campo Código_de_cuenta_GL contiene el valor "001-458-873-99". Debe determinar la posición de byte
inicial del valor "458" para probar si el segundo segmento del código de GL es "458" (posición inicial "5").

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 43 de 898
Guía de inicio

COMMENT devuelve "5"


ASSIGN v_occurrencia = 1
ASSIGN v_subcadena = "458"
AT(v_occurrencia; v_subcadena; Código_de_cuenta_GL)

OCCURS( )
Devuelve un recuento del número de veces que aparece una subcadena en un valor de caracteres espe-
cificado.

Ejemplo
El campo Código_de_cuenta_GL contiene el valor "001-458-873-99". Debe determinar que el código de
GL tiene el formato correcto asegurándose de que los datos contengan los tres caracteres de guion.

COMMENT devuelve "3"


ASSIGN v_subcadena = "-"
OCCURS(Código_de_Cuenta_GL; v_subcadena)

LENGTH( )
Devuelve la cantidad de caracteres de una cadena.

Ejemplo
El campo Código_de_cuenta_GL contiene el valor "001-458-873-99". Debe determinar que el código de
GL tiene el formato correcto asegurándose de que los datos contengan 14 caracteres.

COMMENT devuelve "14"


LENGTH(Código_de_cuenta_GL)

Conversión de tipos de datos


Según el origen de los datos y las declaraciones de importación que produjeron la tabla de ACL, es posi-
ble que tenga que convertir los valores de un campo de un tipo de datos a otro para que sea posible la ope-
ración. Por ejemplo, para realizar un cálculo aritmético en los datos que se importaron como caracteres
("12345"), debe convertirlos en datos numéricos.

STRING( )
Convierte un valor numérico en una cadena de caracteres.

Ejemplo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 44 de 898
Guía de inicio

El campo Importe_factura contiene el valor 12345,67. Debe convertir este valor en datos de carácter.

COMMENT devuelve "12345,67"


ASSIGN v_largo_cadena = 8
STRING(Importe_factura; v_largo_cadena)

VALUE( )
Convierte una cadena de caracteres en un valor numérico.
Consejo
VALUE() se usa frecuentemente con ZONED() para agregar ceros al inicio.

Ejemplo
El campo Importe_factura contiene el valor "12345,67". Debe convertir este valor en datos numéricos.

COMMENT devuelve 12345,67


VALUE(Importe_factura)

CTOD( )
Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer la fecha del
valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abreviatura de la expresión
"Carácter a fecha", en inglés.

Ejemplo
El campo Fecha_de_envío contiene el valor "Abril 25, 2016". Debe convertir estos datos en datos de
fechahora.

COMMENT devuelve `20160425`


ASSIGN v_formato_fecha = "mmm dd, aaaa"
CTOD(Fecha_de_envío; v_formato_fecha)

DATE( )
Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una cadena de carac-
teres. También puede devolver la fecha actual del sistema operativo.

Ejemplo
El campo Fecha_de_envío contiene el valor `20160425`. Debe convertir este valor en datos de carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 45 de 898
Guía de inicio

COMMENT devuelve "04/25/2016"


ASSIGN v_formato_fecha = "MM/DD/AAAA"
DATE(Fecha_de_envío; v_formato_fecha)

Agregar ceros al principio


Convierta los datos numéricos en datos de carácter y agregue ceros al principio de la salida cuando nece-
site unificar campos que requieren ceros al principio.

ZONED( )
Convierte datos numéricos en datos de caracteres y agrega ceros a la izquierda de los datos de salida.

Ejemplo
El campo Número_de_empleado contiene el valor "254879". Debe convertir el valor en una cadena de 10
dígitos con ceros al principio.
Sugerencia

Debe utilizar la función VALUE() para convertir el carácter en datos numéricos antes de
utilizar el numérico como entrada para ZONED().

COMMENT devuelve "0000254879"


ASSIGN v_largo_cadena = 10
ASSIGN v_cant_decimales = 0
ZONED(VALUE(Número_de_empleado; v_cant_decimales); v_largo_cadena)

BINTOSTR( )
Devuelve datos de caracteres Unicode convertidos a partir de datos de caracteres ZONED o EBCDIC.
Abreviatura de “Binario a cadena”, en inglés.
Nota
Solamente edición Unicode. Para ediciones que no son de Unicode, vea ZONED() arriba.

Ejemplo
El campo Número_de_empleado contiene el valor "254879". Debe convertir el valor en una cadena de 10
dígitos con ceros al principio.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 46 de 898
Guía de inicio

Sugerencia

Debe utilizar la función VALUE() para convertir el carácter en datos numéricos antes de uti-
lizar el numérico como entrada para ZONED(). A continuación, utilice BINTOSTR() para
convertir los datos ASCII devueltos por ZONED() a Unicode.

COMMENT devuelve "0000254879"


ASSIGN v_largo_cadena = 10
ASSIGN v_cant_decimales = 0
ASSIGN v_tipo_cadena = "A"
BINTOSTR(ZONED(VALUE(Número_de_empleado; v_cant_decimales); v_largo_cadena); v_tipo_
cadena)

Extracción de partes de un valor de fechahora


Utilice estas funciones para aislar y extraer componentes específicos de un valor de fechahora.

MONTH( )
Extrae el mes de una fecha o fechahora especificada y lo devuelve como un valor numérico (1 a 12).

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer el mes como datos de
carácter con un cero al principio.

COMMENT devuelve "08"


ASSIGN v_largo_cadena = 2
ZONED(MONTH(Fecha_de_transacción); v_largo_cadena)

DAY( )
Extrae el día del mes a partir de una fecha o fechahora especificada y la devuelve como un valor numérico
(1 a 31).

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer el día como datos de
carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 47 de 898
Guía de inicio

COMMENT devuelve "15"


ASSIGN v_largo_cadena = 2
STRING(DAY(Fecha_de_transacción); v_largo_cadena)

YEAR( )
Extrae el año de una fecha o fechahora especificada y lo devuelve como un valor numérico con el formato
YYYY.

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer el año como un
valor numérico.

COMMENT devuelve 2016


YEAR(Fecha_de_transacción)

HOUR( )
Extrae la porción de la hora de una hora o fechahora especificada y la devuelve como un valor numérico,
con un formato de 24 horas.

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer las horas como un
valor numérico.

COMMENT devuelve 10
HOUR(Fecha_de_transacción)

MINUTE( )
Extrae los minutos de una hora o fechahora especificada y la devuelve como un valor numérico.

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer los minutos como
un valor numérico.

COMMENT devuelve 2
MINUTE(Fecha_de_transacción)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 48 de 898
Guía de inicio

SECOND( )
Extrae los segundos de una hora o fechahora especificada y la devuelve como un valor numérico.

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer los segundos como
un valor numérico.

COMMENT devuelve 52
SECOND(Fecha_de_transacción)

CDOW( )
Devuelve el nombre del día de la semana de una fecha o fechahora especificada. Abreviatura de la expre-
sión "Día de la semana en caracteres", en inglés.

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer el nombre del día
como datos de carácter.

COMMENT devuelve "Mon"


CDOW(Fecha_de_transacción; 3)

CMOY( )
Devuelve el nombre del mes de una fecha o fechahora especificada. Abreviatura de la expresión "Mes del
año en caracteres", en inglés.

Ejemplo
El campo Fecha_de_transacción contiene el valor `20160815 100252`. Debe extraer el nombre del mes
como datos de carácter.

COMMENT devuelve "Aug"


CMOY(Fecha_de_transacción; 3)

Manipulación de las cadenas


Quita o reemplaza segmentos de campos de caracteres utilizando estas funciones.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 49 de 898
Guía de inicio

INCLUDE( )
Devuelve una cadena que incluye solo los caracteres especificados.

Ejemplo
El campo Domicilio contiene el valor "12345 ACL Services Ltd.". Debe extraer el número del domicilio y
excluir el nombre de la compañía.

COMMENT devuelve "12345"


ASSIGN v_caracteres_a_devolver = "0123456789"
INCLUDE(Domicilio; v_caracteres_a_devolver)

EXCLUDE( )
Devuelve una cadena que excluye los caracteres especificados.

Ejemplo
El campo Domicilio contiene el valor "12345 ACL Services Ltd.". Debe extraer el nombre de la compañía y
excluir el número del domicilio.

COMMENT devuelve "ACL Services Ltd."


ASSIGN v_caracteres_a_excluir = "0123456789"
EXCLUDE(Domicilio; v_caracteres_a_excluir)

REPLACE( )
Reemplaza todas las instancias de una cadena de caracteres especificada por una nueva cadena de
caracteres.

Ejemplo
El campo Domicilio contiene el valor "12345 Acme&Sons". Debe reemplazar el carácter "&" por la palabra
" and ".

COMMENT devuelve "12345 Acme and Sons"


ASSIGN v_carácter_destino = "&"
ASSIGN v_carácter_reemplazo = " and "
REPLACE(Domicilio; v_carácter_destino; v_carácter_reemplazo)

OMIT( )
Devuelve una cadena con una o varias subcadenas especificadas eliminadas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 50 de 898
Guía de inicio

Ejemplo
El campo Domicilio contiene el valor "12345 Fake St". Debe extraer el domicilio sin el sufijo St.

COMMENT devuelve "12345 Fake"


ASSIGN v_caracteres_a_omitir = "St"
OMIT(Domicilio; v_caracteres_a_omitiir)

REVERSE( )
Devuelve una cadena con los caracteres en orden inverso.

Ejemplo
El campo Línea_de_reporte contiene el valor "001 Corrección 5874,39 CR ". Debe revertir este valor y omi-
tir los espacios al principio o al final.

COMMENT devuelve "RC 93.4785 noitcerroC 100"


REVERSE(ALLTRIM(Línea_de_reporte))

BLANKS( )
Devuelve una cadena que contiene un determinado número de espacios en blanco.

Ejemplo
Debe crear un campo calculado para un nombre de región sobre la base de un valor en el campo código_
de_región. Debe asegurarse de que el valor predeterminado que especifique al final del comando sea al
menos tan extenso como el valor de entrada más extenso.

COMMENT BLANKS devuelve una cadena de 8 caracteres " "


ASSIGN v_largo = 8
DEFINE FIELD región COMPUTED

"Southern" IF código_de_región = 1
"Northern" IF código_de_región = 2
"Eastern" IF código_de_región = 3
"Western" IF código_de_región = 4
BLANKS(v_largo)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 51 de 898
Comandos

Comandos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 53 de 898
Comandos

Comando ACCEPT
Crea un cuadro de diálogo que les pide interactivamente a los usuarios uno o más valores de entrada
para el script. Cada valor de entrada se almacena en una variable de caracteres con nombre.
Nota
No es seguro usar el comando ACCEPT para introducir contraseñas. Por el contrario,
debe usar "Comando PASSWORD" en la página 323.
El comando ACCEPT no se admite en los estudios analíticos del Servidor de AX.
Puede crear un cuadro de diálogo interactivo más avanzado con el "Comando DIALOG"
en la página 144.

Sintaxis
ACCEPT {mensaje_texto <FIELDS categoría_elemento_lista_tipos> TO nombre_variable} <...n>

Parámetros
Nombre Descripción

men- La etiqueta que se muestra en el cuadro de diálogo utilizado para pedir información de entrada. Debe ser
saje_ una variable de caracteres o una cadena entre comillas.
texto
Al introducir varios mensajes, puede separarlos con comas. El uso de comas facilita la lectura del script,
pero no es un requisito obligatorio:

ACCEPT "Especifique una fecha de inicio:" TO v_fecha_inicio; "Especifique una fecha de fina-
lización:" TO v_fecha_finalización

FIELDS En lugar de un cuadro de texto, crea una lista desplegable de los elementos del proyecto para la entrada
cate- de información del usuario. El usuario puede seleccionar un solo elemento del proyecto, campo o varia-
goría_ ble de la lista.
ele-
categoría_elemento_proyecto especifica qué tipos de elementos aparecen en la lista. Por ejemplo, si
mento_
especifica xf, se muestran todas las tablas del proyecto en la lista. Encierre categoría_elemento_proyecto
pro-
entre comillas:
yecto
opcio- FIELDS "xf"
nal

Para conocer los códigos que se utilizan para especificar las categorías, consulte "Códigos de las cate-
gorías de elementos del proyecto" en la página 57.
Puede especificar más de un código en el mismo mensaje, pero no puede mezclar elementos de pro-
yecto, campos o variables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 54 de 898
Comandos

Nombre Descripción

TO nom- El nombre de la variable de caracteres que se utilizará para almacenar la entrada del usuario. Si la varia-
bre_ ble no existe, se crea.
variable
Si la variable ya existe, se muestra su valor actual en el cuadro de diálogo como valor predeterminado.
Nota
No puede utilizar caracteres que no pertenezcan al alfabeto inglés, tales como é, en los
nombres de variables que se utilizarán para la sustitución de variables. Si utiliza este
tipo de caracteres en los nombres de las variables, el script no se podrá ejecutar.
El comando ACCEPT crea únicamente variables de caracteres. Si necesita introducir
otro tipo de datos, debe convertir la variable de caracteres al tipo necesario en un pro-
cesamiento posterior dentro de un script. Si desea obtener más información, consulte
"Tipo de datos de entrada" en la página 58.

Ejemplos
Petición al usuario para que seleccione la tabla de ACL que desea abrir.
Necesita un cuadro de diálogo que le pide al usuario que seleccione el nombre de la tabla que se abrirá. A
continuación, el script abre la tabla seleccionada por el usuario:

ACCEPT "Seleccione la tabla que se abrirá:" FIELDS "xf" TO v_nombre_tabla


OPEN %v_nombre_tabla%

Los signos de porcentaje son obligatorios porque indican que el nombre de la tabla que se abrirá está alma-
cenado en la variable v_nombre_tabla. Si se omiten los signos de porcentaje, el script intenta abrir una
tabla denominada "v_nombre_tabla".

Uso de varios cuadros de diálogo para reunir la información necesaria


Puede crear un cuadro de diálogo independiente para cada valor que debe introducir el usuario del script.
Debe utilizar una sola cadena de mensaje en cada instancia del comando ACCEPT. El script genera cua-
dros de diálogo independientes para especificar cada uno de los siguientes datos:
l un nombre de tabla
l un campo sobre el cual extraer muestras
l un intervalo de muestreo
l un valor de inicio aleatorio

ACCEPT "Ingresar el nombre de la tabla que desea analizar" TO v_nombre_tabla


OPEN %v_nombre_tabla%
ACCEPT "Seleccionar el campo para la muestra" FIELDS "N" TO v_campo_para_muestra
ACCEPT "Ingresar el intervalo de muestra" TO v_intervalo_muestra

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 55 de 898
Comandos

ACCEPT "Ingresar el valor inicial aleatorio" TO v_valor_inicial_aleatorio


SAMPLE ON %v_campo_para_muestra% INTERVAL v_intervalo_muestra FIXED v_valor_inicial_
aleatorio RECORD TO Muestra_salida OPEN

Cuando se ejecuta el script


1. El primer cuadro de diálogo solicita el nombre de la tabla.
2. El segundo cuadro de diálogo, con FIELDS "N", solicita una selección de campos de una lista des-
plegable de campos numéricos.
3. El tercer cuadro de diálogo solicita el valor del intervalo.
4. El cuarto cuadro de diálogo solicita el valor inicial aleatorio.

Uso de un solo cuadro de diálogo con varios mensajes para reunir la información necesaria
Usted desea crear un cuadro de diálogo único para todos los valores que debe introducir el usuario del
script.
Utiliza varios mensajes separados por punto y coma en el comando ACCEPT para solicitarle al usuario
varios valores de información de entrada. El mismo cuadro de diálogo contiene solicitudes de la fecha de
inicio y la fecha de finalización de un intervalo de fechas:

ACCEPT "Especifique una fecha de inicio:" TO v_fecha_inicio; "Especifique una fecha de fina-
lización:" TO v_fecha_finalización

Observaciones
Interactividad
Use ACCEPT para crear un script interactivo. Cuando se procesa el comando ACCEPT, el script se
detiene y aparece un cuadro de diálogo que le pide al usuario información de entrada que ACL utilizará en
el procesamiento subsiguiente.
Puede crear cuadros de diálogo separados que soliciten información de a un elemento por vez o crear un
cuadro de diálogo que solicite múltiples elementos.

Comparación entre DIALOG y ACCEPT


El comando DIALOG le permite crear un cuadro de diálogo interactivo más avanzado que puede tener
uno o más de los siguientes tipos de controles:
l cuadro de texto
l casilla de verificación
l botones de radio

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 56 de 898
Comandos

l lista desplegable de valores personalizados


l lista de elementos del proyecto
Además, cuenta con la flexibilidad de personalizar el formato del cuadro de diálogo. Si desea obtener más
información, consulte "Comando DIALOG" en la página 144.

Códigos de las categorías de elementos del proyecto


Utilice los siguientes códigos para especificar la categoría del elemento del proyecto que se debe mostrar
en una lista desplegable.

Categorías de proyectos

Código Categoría

xf Tablas

xb Scripts

xi Índices

xr Vistas y reportes

xw Áreas_de_trabajo

Categorías de campos

Código Categoría

C Campos de caracteres

N Campos numéricos

D Campos de fechahora

L Campos lógicos

Categorías de variables

Código Categoría

c Variables de caracteres

n Variables numéricas

d Variables de fechahora

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 57 de 898
Comandos

Código Categoría

l Variables lógicas

Tipo de datos de entrada


ACCEPT almacena la entrada del usuario en una o más variables de caracteres. Si necesita información
numérica o de fechahora, puede utilizar las funciones VALUE( ) o CTOD( ) para convertir el contenido de
una variable de caracteres en un valor numérico o de fechahora:

SET FILTER TO BETWEEN(%v_campo_fecha%, CTOD(%v_fecha_inicio%), CTOD(%v_fecha_


finalización%))

En el ejemplo, las fechas de inicio y finalización de este filtro se almacenan como valores de caracteres.
Se deben convertir en valores de fecha para ser utilizadas en un campo de fecha con el tipo de datos
Fechahora.
Al encerrar el nombre de la variable entre signos de porcentaje (%), se reemplaza el nombre de la varia-
ble por los valores de caracteres de la variable. A continuación, la función CTOD( ) convierte el valor de
caracteres en un valor de fecha.

Posición del comando ACCEPT


Es recomendable, de ser posible, colocar todos los comandos ACCEPT al inicio de un script. Si solicita
todas las entradas al comienzo, el script se puede ejecutar sin obstáculos una vez que el usuario ingresa
la información necesaria.
Nota
No puede usar el comando ACCEPT dentro del comando GROUP.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 58 de 898
Comandos

Comando ACCESSDATA
Importa datos de una variedad de orígenes de datos compatibles con ODBC.
El comando toma la forma de ACCESSDATA64 o ACCESSDATA32; todo depende de si usted está
usando un controlador ODBC de 64 bits o de 32 bits.

Sintaxis
{ACCESSDATA64 | ACCESSDATA32} {CONNECTOR | ODBC {"Controlador"|"Dsn"|"Archivo"}}
NAME valor <USER id_usuario> <PASSWORD núm | PROMPT_PASSWORD> TO nombre_tabla
CHARMAX longitud_campo_máx MEMOMAX longitud_campo_máx <ALLCHARACTER> SOURCE
(configuración_conexión)
SQL_QUERY
(sintaxis_SQL)
) END_QUERY

Parámetros
Nombre Descripción

CONNECTOR | ODBC {"Con- El tipo de conexión ODBC que desea realizar:


trolador"|"Dsn"|"Archivo"} o CONNECTOR: conectar con un conector de datos nativo de ACL
o ODBC "Controlador": conectar usando un controlador de ODBC para Windows ins-
talado en su computadora
o ODBC "Dsn": conectar utilizando un DSN (nombre de origen de datos) guardado
en su computadora
o ODBC "Archivo": conectar utilizando un archivo DSN (un archivo .dsn guardado)

NAME valor El nombre del conector de datos de ACL, el controlador de ODBC o el DSN.
Por ejemplo:
o NAME "Amazon Redshift"
o NAME "Microsoft Access Driver (*.mdb, *.accdb)"
o NAME "My Excel DSN"
o NAME "excel.dsn"

USER id_usuario La identificación de usuario para los orígenes de datos que requieren una ID de usua-
rio.
opcional

PASSWORD núm | PROMPT_ Para orígenes de datos que requieren una contraseña:
PASSWORD o PASSWORD núm: utilice la definición de contraseña numerada.
opcional o PROMPT_PASSWORD: muestra una solicitud de contraseña

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 59 de 898
Comandos

Nombre Descripción

La solicitud de contraseña también permite cambiar el id_usuario.


Si utiliza PASSWORD núm, debe especificar una definición de contraseña creada
previamente. Si desea obtener más información, consulte "Comando PASSWORD"
en la página 323 y "Comando SET" en la página 381.
Consejo
El uso del comando PASSWORD junto con PASSWORD núm es simi-
lar al uso de PROMPT_PASSWORD. Ambos enfoques solicitan una
contraseña al usuario. PROMPT_PASSWORD tiene la ventaja de per-
mitir la actualización del id_usuario.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.

CHARMAX longitud_campo_ La longitud máxima en caracteres de cualquier campo en la tabla de ACL que se ori-
máx gina como datos de carácter en el origen desde el cual está realizando la impor-
tación.
El valor predeterminado es 50. Los datos que superen la longitud de campo máxima
se truncan al importarlos a ACL.

MEMOMAX longitud_campo_ La longitud máxima en caracteres para los campos de texto, nota o memo que está
máx importando.
El valor predeterminado es 100. Los datos que superen la longitud de campo
máxima se truncan al importarlos a ACL.

ALLCHARACTER Asigne automáticamente el tipo de datos de Carácter a todos los campos importados.
opcional Una vez que los datos se encuentran en ACL, puede asignarles diferentes tipos de
datos, como Numéricos o Fechahora, a los campos y especificar los detalles de for-
mato.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 60 de 898
Comandos

Nombre Descripción

Consejo
ALLCHARACTER es útil si está importando una tabla que contiene
valores de identificación numéricos. Puede usar ALLCHARACTER
para impedir que ACL asigne automáticamente los tipos de datos
Numéricos a valores que deberían usar el tipo de datos de Carácter.

SOURCE configuración_cone- La configuración de la conexión (cadena de conexión) necesaria para conectarse al


xión origen de datos.

SQL_QUERY (sintaxis_SQL) La declaración de importación de SQL.


END_QUERY
Todo lo que se encuentre dentro de los paréntesis forma parte de la consulta de SQL
y debe ser válido para SQL.

Ejemplos
Importación de datos mediante un conector de datos ACL nativo
Necesita importar datos desde el servicio de datos en la nube Amazon Redshift. Para hacerlo, usted utiliza
el conector de datos de ACL para Amazon Redshift:

ACCESSDATA64 CONNECTOR NAME "Amazon Redshift" USER "Usuario_ACL" PROMPT_


PASSWORD TO "historial_autorización.FIL" CHARMAX 50 MEMOMAX 100
SOURCE( bool-
sas-
cha-
r=0-
;ca-
che-
size-
=100-
;da-
taba-
se=-
usage;-
decla-
refetchmode=0;maxbytea=255;maxlongvarchar=8190;maxvarchar=255;port=5439;servername=acl_
tes-
t.a-
clgr-
c.co-
m;singlerowmode=1;sslmode=require;textaslongvarchar=0;usemultiplestatments=0;useunicode=1)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 61 de 898
Comandos

SQL_QUERY(
SELECT
"historial_autorización"."organización" AS "organización",
"historial_autorización"."correo_electrónico_usuario" AS "correo_electrónico_usuario",
"historial_autorización"."id_plan" AS "id_plan",
"historial_autorización"."fecha_desde" AS "fecha_desde",
"historial_autorización"."fecha_hasta" AS "fecha_hasta"
FROM
"prm"."historial_autorización" "historial_autorización"
) END_QUERY

Importación de datos con un controlador ODBC de Windows


Necesita importar datos desde una base de datos de Microsoft Access. Para hacerlo, utiliza el controlador
ODBC de Windows para conectarse a MS Access y completa la importación:

ACCESSDATA32 ODBC "Controlador" NAME "Controlador de Microsoft Access (*.mdb)" TO "Fac-


turas.FIL" CHARMAX 50 MEMOMAX 100
SOURCE( dbq=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data File-
s\Sample.mdb;defaultdir=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data File-
s;driverid=281;fil=MS
Acce-
ss;-
max-
buffer-
size=2048;maxscanrows=8;pagetimeout=5;safetransactions=0;threads=3;usercommitsync=Yes)
SQL_QUERY( 
SELECT
`Cliente`.`ID_Cliente` AS `ID_Cliente`,
`Cliente`.`Compañía` AS `Compañía`,
`Cliente`.`Domicilio` AS `Domicilio`,
`Cliente`.`Ciudad` AS `Ciudad`,
`Cliente`.`Región` AS `Región`,
`Cliente`.`Código_Postal` AS `Código_Postal`,
`Cliente`.`País` AS `País`,
`Cliente`.`Teléfono` AS `Teléfono`,
`Pedidos`.`ID_Pedido` AS `ID_Pedido`,
`Pedidos`.`ID_Cliente` AS `Pedidos_ID_Cliente`,
`Pedidos`.`ID_Producto` AS `ID_Producto`,
`Pedidos`.`Fecha_Pedido` AS `Fecha_Pedido`,
`Pedidos`.`Cantidad` AS `Cantidad`,
`Producto`.`ID_Producto` AS `Producto_ID_Producto`,
`Producto`.`Nombre_Producto` AS `Nombre_Producto`,

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 62 de 898
Comandos

`Producto`.`Precio_Unitario` AS `Precio_Unitario`,
`Producto`.`Descripción` AS `Descripción`,
`Producto`.`Peso_embarque` AS `Peso_embarque`
FROM
(`Cliente` `Cliente`
INNER JOIN
`Pedidos` `Pedidos`
ON `Cliente`.`ID_Cliente` = `Pedidos`.`ID_Cliente`
)
INNER JOIN
`Producto` `Producto`
ON `Pedidos`.`ID_Producto` = `Producto`.`ID_Producto`
WHERE
(
`Cliente`.`Región` = 'BC'
OR `Cliente`.`Región` = 'WA'
)
) END_QUERY

Importación de datos utilizando un DSN (nombre de origen de datos) de Windows


Necesita importar datos desde un archivo de Microsoft Excel. Para hacerlo, utiliza un DSN de Windows
para conectarse a MS Excel y completa la importación:

ACCESSDATA32 ODBC "Dsn" NAME "Archivos Excel" TO "Trans_Abril_15_corte.FIL" CHARMAX


50 MEMOMAX 100
SOURCE( dbq=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files\Trans_Apri-
l.xls;defaultdir=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data File-
s;driverid=1046;maxbuffersize=2048;pagetimeout=5)
SQL_QUERY( 
SELECT
`Trans_Abr_`.`CARDNUM` AS `CARDNUM`,
`Trans_Abr_`.`AMOUNT` AS `AMOUNT`,
`Trans_Abr_`.`TRANS_DATE` AS `TRANS_DATE`,
`Trans_Abr_`.`CODES` AS `CODES`,
`Trans_Abr_`.`CUSTNO` AS `CUSTNO`,
`Trans_Abr_`.`DESCRIPTION` AS `DESCRIPTION`
FROM
`Trans_Abr$` `Trans_Abr_`
WHERE
(
`Trans_Abr_`.`TRANS_DATE` <= {ts '2003-04-15 00:00:00'}
)
) END_QUERY

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 63 de 898
Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Creación de las declaraciones de configuración de conexión de ODBC e importación


de SQL
Las declaraciones de configuración de conexión de ODBC e importación de SQL con frecuencia son
extensas, como se muestra en los siguientes ejemplos.
La manera más sencilla de crear estas partes del comando ACCESSDATA consiste en utilizar primero la
ventana Data Access en ACL para conectarse al origen de datos de destino e importar los datos. A con-
tinuación, puede copiar todo el comando ACCESSDATA del registro, incluida la declaración de con-
figuración de conexión e importación, y personalizar el comando como resulte necesario.

Valor de contraseña suprimido


Cuando utiliza la ventana Data Access en ACL para ejecutar el comando ACCESSDATA y proporciona
una contraseña, el valor de la contraseña no se escribe en el log. En su lugar, se sustituye el parámetro
PROMPT_PASSWORD.

Archivos de log de ACCESSDATA


Dos archivos de log registran las transacciones asociadas con el comando ACCESSDATA y se pueden
utilizar para resolver problemas si falla una conexión de datos:
l ServerDataAccess.log: registra todas las actividades y los errores antes de importar los datos
Ubicación: C:\Usuarios\<cuenta de usuario>\AppData\Local\ACL\ACL para
Windows\Data Access\ServerDataAccess.log
Nota
El "Server" en ServerDataAccess.log hace referencia al componente de
acceso a los datos de ACL que se ejecuta de forma local en la computadora en la
cual está instalado ACL.
l DataAccess.log: registra información acerca de la operación de importación y el proyecto de ACL
al que usted está importando datos
Ubicación: ..\<ACL carpeta del proyecto>\DataAccess.log

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 64 de 898
Comandos

Comando ACTIVATE
Agrega definiciones de campo almacenadas en un área de trabajo de ACL al conjunto existente de defi-
niciones de campo de un formato de tabla de ACL.

Sintaxis
ACTIVATE <WORKSPACE> nombre_área_de_trabajo <OK>

Parámetros
Nombre Descripción

WORKSPACE nombre_ El nombre del área de trabajo que se activará.


área_de_trabajo

Aceptar Elimina o sobrescribe los elementos sin pedirle que confirme la acción.
opcional Si la tabla incluye un campo que tiene el mismo nombre que un campo del área de tra-
bajo activada, ese campo se sobrescribirá sin confirmación. No puede reemplazar nin-
gún campo que esté relacionado con un campo calculado.

Ejemplos
Activación de un área de trabajo en su proyecto de ACL
Usted activa el área de trabajo FórmulasComplejas :

ACTIVATE WORKSPACE FórmulasComplejas OK

Activación de un área de trabajo guardada como un archivo (.wsp) en la misma carpeta que su proyecto de ACL
Usted activa el área de trabajo FórmulasComplejas que se guardó en un archivo .wsp:

ACTIVATE WORKSPACE FórmulasComplejas.WSP OK

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 65 de 898
Comandos

Observaciones
Cómo funciona
ACTIVATE hace que las definiciones de campo del área de trabajo se encuentren disponibles para la
tabla activa. Una vez que activa un área de trabajo, sus campos permanecen disponibles para ser uti-
lizados con la tabla activa hasta que se cierra la tabla.

Editar formatos de tabla


Los campos del área de trabajo se agregan de manera permanente al formato de tabla si:
l usted edita el formato de tabla después de activar un área de trabajo
l usted realiza un cambio que hace que se guarde el formato de tabla
Una vez que se guardan los campos de las áreas de trabajo en el formato de tabla, puede hacer lo
siguiente:
1. Usar el comando DEFINE COLUMN para agregar los campos a una vista.
2. Usar el comando SAVE para guardar los cambios.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 66 de 898
Comandos

Comando AGE
Agrupa registros en períodos de antigüedad sobre la base de los valores de un campo de fecha o
fechahora. Cuenta la cantidad de registros en cada período y también calcula el subtotal de campos numé-
ricos especificados para cada período.

Sintaxis
AGE <ON> campo_fecha <CUTOFF fecha_de_corte> <INTERVAL días <;...n>> <SUPPRESS>
<SUBTOTAL campo_numérico <...n> |ALL> <IF prueba> <WHILE prueba> <FIRST rango|NEXT
rango> <TO {SCREEN|nombre_de_archivo|GRAPH|PRINT}> <KEY salto_campo>
<HEADER texto_encabezado> <FOOTER texto_pie_de_página> <APPEND> <LOCAL>
<STATISTICS>

Parámetros
Nombre Descripción

ON campo_fecha El nombre del campo de fecha o de fechahora, o la expresión cuya antigüedad se deter-
minará.
A pesar de que puede determinar la expiración de un campo de fechahora, solo se con-
siderará la porción fecha de los valores de fechahora. La porción hora se ignora. No se
puede establecer la expiración sobre los datos de la hora solamente.

CUTOFF cadena_de_ La fecha con la que se comparan los valores de campo_fecha.


fecha_de_corte
Debe especificar la fecha_de_corte como una cadena sin comillas con el formato
opcional AAMMDD o AAAAMMDD, independientemente del formato del campo de fecha. Por
ejemplo: CUTOFF 20141231
Si omite CUTOFF, se usará la fecha del sistema actual como la fecha de corte.

INTERVAL días <;...n> Los intervalos de fechas (es decir, la cantidad de días) que se deben utilizar para cal-
cular los períodos de antigüedad.
opcional
días representa el inicio de cada período de antigüedad que se mide hacia atrás a partir
de la fecha_de_corte:
o el primer valor de días identifica el inicio del primer período de antigüedad
o un primer valor de días de '0' especifica que el primer período de antigüedad
comienza en la fecha_de_corte especificada.
o el último valor de días identifica el final del último período de antigüedad
Debe especificar los intervalos como una cadena sin comillas con valores separados por
punto y coma:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 67 de 898
Comandos

Nombre Descripción

INTERVAL
0;90;180;270;365

Los períodos predeterminados de expiración son 0; 30; 60; 90; 120 y 10.000 días. Para
aislar registros con fechas que probablemente no sean válidas, se usa un intervalo de
10.000 días.
Si es necesario, los intervalos de fechas se pueden personalizar para que coincidan con
otros reportes internos de antigüedad.

SUPPRESS Suprime las fechas que caen fuera del período de antigüedad de la salida del comando.
opcional

SUBTOTAL campo_numé- Uno o más campos numéricos o expresiones que se subtotalizarán para cada grupo.
rico <...n> | ALL
Múltiples campos se deben separar con espacios. Especifique ALL para calcular sub-
opcional totales de todos los campos numéricos de la tabla.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo | GRAPH | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o GRAPH: muestra los resultados en un gráfico en el área de visualización de ACL
o PRINT: envía los resultados a la impresora predeterminada

KEY salto_campo El campo o la expresión que agrupa los cálculos de subtotal de grupos. Se calcula un
subtotal cada vez que cambia el valor de salto_campo.
opcional
salto_campo debe ser un campo de caracteres o una expresión. Puede especificar un

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 68 de 898
Comandos

Nombre Descripción

solo campo, pero puede usar una expresión que contenga más de un campo.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

STATISTICS Nota
opcional No se puede usar, a menos que también se especifique SUBTOTAL.
Calcula los valores promedio, mínimo y máximo para todos los campos SUBTOTAL.

Ejemplos
Clasificar las facturas por antigüedad con subtotales de importes
Desea clasificar por antigüedad una tabla de cuentas por cobrar a partir del campo Importe_factura y cal-
cular el subtotal del campo Importe_factura.
Las facturas se agrupan en períodos de 30 días:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 69 de 898
Comandos

l desde la fecha de corte hasta los 29 días anteriores


l desde los 30 días anteriores a los 59 días anteriores
l y así sucesivamente
Los resultados incluyen el importe de factura total pendiente para cada período:

OPEN Cuentas_por_cobrar
AGE ON Fecha_de_factura CUTOFF 20141231 INTERVAL 0;30;60;90;120;10000 SUBTOTAL
Importe_factura TO SCREEN

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Períodos de expiración
El comando AGE agrupa los registros en períodos de antigüedad sobre la base de los valores de un
campo de fecha o fechahora. Los resultados de la salida contienen un registro único para cada período,
con un recuento de la cantidad de registros en la tabla de origen que caen dentro de cada período.

Medición del intervalo


Los periodos de expiración se basan en intervalos de fechas (es decir, cantidad de días) que se miden
hacia atrás en el tiempo desde la fecha actual del sistema o desde una fecha tope especificada por usted,
tal como la fecha límite de un periodo fiscal.

Períodos futuros
Puede crear períodos de antigüedad más recientes que la fecha de corte si introduce valores negativos
para los intervalos de fechas. Por ejemplo, la siguiente sintaxis crea períodos de antigüedad que van
hacia delante y hacia atrás de la fecha de corte:

INTERVAL -60;-30;0;30;60;90

Este enfoque crea un perfil de datos para todos los registros de la tabla utilizando diferentes puntos en el
tiempo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 70 de 898
Comandos

Casos de uso común


Algunos usos comunes de la expiración incluyen la evaluación de tendencias de ventas, la revisión de volú-
menes de transacción y la agrupación de facturas por número de días pendientes.
ACL crea automáticamente uno o dos períodos de antigüedad adicionales para cualquier fecha que caiga
fuera de los períodos de antigüedad especificados, suponiendo que no se esté utilizando SUPPRESS.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 71 de 898
Comandos

Comando APPEND
Combina los registros de dos o más tablas de ACL anexándolas a una nueva tabla de ACL.

Sintaxis
APPEND tabla_1, tabla_2, <...n> TO nombre_de_tabla <COMMONFIELDS> <OPEN>

Parámetros
Nombre Descripción

tabla_1, tabla_2, <...n> Las tablas que se deben anexar.


Los registros de cada tabla se anexan en el orden en el que usted especifique las
tablas. La tabla de salida contiene los registros de la tabla_1, seguidos de los registros
de la tabla_2, etc.
Las tablas de origen pueden tener estructuras de registros diferentes o idénticas y pue-
den estar ordenadas o desordenadas.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.

COMMONFIELDS Solo aquellos campos que son comunes a todas las tablas que se están anexando se
incluirán en la tabla de salida.
opcional
Si omite COMMONFIELDS, se incluyen todos los campos de todas las tablas en la
tabla de salida. Cuando no existen campos en las tablas de origen, la tabla de salida
incluye valores en blanco.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 72 de 898
Comandos

Nombre Descripción

Consejo
Si desea ver diagramas y capturas de pantallas que muestran las dos
opciones, consulte Anexión de tablas.
Nota
El comando APPEND no permite anexar campos calculados. Si desea
obtener más información, consulte "No se admiten campos calculados"
en la página 75.

¿Qué convierte a los campos en comunes?


Para que los campos se consideren comunes, deben reunir las siguientes condiciones:
o estar presentes en todas las tablas de origen
o tener un nombre físico idéntico
o pertenecer a la misma categoría de datos:
l Carácter
l Numérico
l Fechahora
l Lógico
Si dos campos tienen un nombre idéntico pero pertenecen a diferentes categorías de
datos, aparece un mensaje de error y el comando APPEND no se ejecuta.
El mensaje de error contiene todos los conflictos de categorías de datos del conjunto
de tablas que se especificaron con el comando APPEND. El mensaje se guarda en el
log de comandos.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

Ejemplos
Anexar tres tablas de transacciones mensuales
El ejemplo que se incluye a continuación anexa tres tablas de transacciones mensuales y genera una tabla
de transacciones trimestrales de salida que incluye todos los campos de las tres tablas de origen:

APPEND Trans_ene, Trans_feb, Trans_mar TO Trans_T1

Anexar tres tablas de transacciones mensuales e incluir únicamente los campos comunes
El siguiente ejemplo anexa tres tablas de empleados de divisiones y genera una tabla maestra de emplea-
dos que incluye únicamente los campos comunes de las tres tablas de origen:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 73 de 898
Comandos

APPEND Empleados_central, Empleados_este, Empleados_oeste TO Empleados_maestro


COMMONFIELDS

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
El comando APPEND combina los registros de dos o más tablas anexándolas y creando una nueva tabla.
Anexar significa agregar un grupo de registros a la parte inferior de otro grupo de registros.
Los campos de la tabla de origen con nombres físicos idénticos y categorías de datos idénticas se anexan
directamente entre sí.
Los campos con nombres físicos exclusivos en todas las tablas de origen se agregan a la tabla de salida
pero no se anexan directamente a ningún otro campo.
Consejo
Si desea anexar directamente los campos con nombres que no coinciden absolutamente,
estandarice los nombres físicos de los campos en los formatos de tabla antes de ane-
xarlos. (Asume que los campos tienen el mismo tipo de datos).

Cuándo usar APPEND


Utilice APPEND cuando quiera combinar datos de varias tablas con una estructura idéntica o similar. Por
ejemplo, APPEND es una buena opción para combinar las tablas mensuales o trimestrales en una tabla
anual.
Consejo
Una sola ejecución del comando APPEND puede reemplazar varias ejecuciones del
comando EXTRACT con la opción APPEND.

No es un reemplazo de JOIN o DEFINE RELATION


En general, APPEND no es un reemplazo de los comandos JOIN o DEFINE RELATION porque no per-
mite incluir o excluir registros sobre la base de valores coincidentes o no coincidentes en un campo clave
común. Con APPEND, todos los registros de cada tabla de origen se incluyen en la tabla de salida.

Anexión de tablas absolutamente disímiles


Puede anexar tablas totalmente disímiles (es decir dos o más tablas que no tienen ningún campo en
común). Si bien no es el principal uso del comando APPEND, se lo puede utilizar para anexar tablas

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 74 de 898
Comandos

disímiles con un fin analítico.

Anexar campos de fechahora


Para que se anexen dos o más campos de fechahora, deben cumplir las siguientes condiciones:
l nombres físicos idénticos
l categoría de datos idéntica (Fechahora)
l subtipos de datos idénticos (fecha, fechahora u hora)
l uso idéntico del indicador de zona (ya sea usado o no usado por todos los campos que se están ane-
xando)
Si dos campos de fechahora tienen un nombre idéntico pero no reúnen una de las demás condiciones, apa-
rece un mensaje de error y el comando APPEND no se ejecuta.
El mensaje de error contiene todas las condiciones que no se cumplieron en el conjunto de tablas que se
especificaron con el comando APPEND. El mensaje se guarda en el log de comandos.

Armonización automática
En algunas situaciones, el comando APPEND armoniza automáticamente los campos para anexarlos:

Categoría de datos
de los campos Armonización realizada

Carácter o Se armonizan las diferentes longitudes de campo.


o Los diferentes tipos de datos de caracteres, como Custom, PCASCII y EBCDIC se armo-
nizan convirtiendo los campos al tipo de datos ASCII o UNICODE.

Numérico o Se armonizan las diferentes longitudes de campo. Los campos se convierten al tipo de
datos de ACL.
o Se armonizan las distintas cantidades de lugares decimales definidas. Los lugares deci-
males se estandarizan de acuerdo con el número más elevado de lugares y, si es nece-
sario, se agregan ceros finales a los valores numéricos. Los campos se convierten al tipo
de datos de ACL.
o Los diferentes tipos de datos numéricos, como Print, Float, EBCDIC y Micro se armonizan
convirtiendo los campos al tipo de datos de ACL.

Fechahora o Los diferentes formatos de hora, fecha o fechahora del origen de datos se armonizan con-
virtiendo los campos a los formatos predeterminados de ACL:
l AAAAMMDD
l YYYYMMDD hh:mm:ss
l hh:mm:ss

No se admiten campos calculados


El comando APPEND no permite anexar campos calculados. Al anexar tablas, los campos calculados de
las tablas de origen se excluyen automáticamente de la tabla de salida.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 75 de 898
Comandos

Si un campo calculado de una tabla de origen tiene el mismo nombre que un campo físico de otra tabla de
origen, aparece un mensaje de error y no se ejecuta el comando APPEND.
Consejo
Puede anexar un campo calculado extrayéndolo primero para convertir el campo en un
campo físico. (Si desea obtener más información, consulte "Comando EXTRACT" en la
página 193). A continuación, utilizará la tabla extraída para la operación de anexión.
Otro enfoque consiste en volver a crear el campo calculado en la tabla de salida anexada.

No se admiten los campos de notas de registros


El comando APPEND no permite anexar campos de Notas de registro. Al anexar tablas, los campos de
Nota de registro de las tablas de origen se excluyen automáticamente de la tabla de salida.
Si un campo de Nota de registro de una tabla de origen tiene el mismo nombre que un campo físico de
otra tabla de origen, aparece un mensaje de error y no se ejecuta el comando APPEND.
Los campos de Nota de registro son generados automáticamente por ACL cuando usted agrega una nota
a un registro.

Longitud de registro
Si incluye todos los campos de todas las tablas de origen al anexar, la longitud de registros de la tabla de
salida puede ser más extensa que la del registro más extenso de las tablas de origen.
Si la longitud de los registros de salida supera el máximo de 32 KB de ACL, aparece un mensaje de error.

Anexión y lugares decimales


La anexión de campos numéricos que incluyen lugares decimales se rige por un comportamiento espe-
cífico.

La configuración Decimal
El comando APPEND utiliza la cantidad de lugares decimales que se definieron en el ajuste Dec en la defi-
nición de campo del formato de tabla.
Nota
El ajuste Dec puede no ser el mismo que el número real de lugares decimales en los
datos de origen. Los lugares decimales que superan el ajuste Dec no se definen y se
redondean en los cálculos.

Ajustes dispares de Decimal


Si los campos numéricos anexados tienen ajustes dispares de Dec , los campos se convierten al tipo de
datos de ACL y se armonizan automáticamente al ajuste más extenso.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 76 de 898
Comandos

Los lugares decimales de los archivos de datos de origen que superen el ajuste Dec más extenso se exclu-
yen de la tabla de salida generada por el comando APPEND.

Ajustes uniformes de Decimal


Si lo campos numéricos anexados tienen un ajuste uniforme de Dec , no se lleva a cabo ninguna conversión
del tipo de datos ni ninguna armonización.
Los lugares decimales de los archivos de datos de origen que superen el ajuste Dec se incluyen en la tabla
de salida generada por el comando APPEND.

Ordenación
Cualquier criterio de ordenamiento existente en las tablas de origen se mantiene por separado en los con-
juntos de registros correspondientes en la tabla de salida.
Incluso si los registros de todas las tablas de salida están ordenados, la tabla de salida se considera sin
ordenar porque los registros de origen se anexan como grupos, sin considerar ningún criterio de orde-
namiento existente en otras tablas de origen.
Por ejemplo, si anexa tablas mensuales o trimestrales para crear una tabla anual, se mantiene cualquier
ordenamiento interno de los datos mensuales o trimestrales. Si es necesario, puede ordenar la tabla de
salida después de realizar la operación de anexión.

Cómo funciona el orden de los campos


Campos comunes
Los campos comunes en las tablas de origen no tienen que estar en el mismo orden para ser anexados.
Por ejemplo, estos campos se anexan correctamente aun cuando se encuentran en un orden diferente:

Tabla Campos

tabla_1 Apellido | Primer_nombre | Segundo_nombre

tabla_2 Primer_nombre | Segundo_nombre | Apellido

La primera tabla especificada en el comando APPEND indica el orden de los campos en la tabla de salida.
Por lo tanto, en el ejemplo anterior, el orden de la tabla de salida es el siguiente:
l Apellido | Primer_nombre | Segundo_nombre

Campos no comunes
Los campos no comunes en las tablas de origen aparecen en la tabla de salida en el orden en que apa-
recen en el grupo seleccionado de tablas de origen.
Por ejemplo, al anexar estas dos tablas:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 77 de 898
Comandos

Tabla Campos

tabla_1 Título | Apellido | Primer_nombre | Segundo_nombre

tabla_2 Primer_nombre | Segundo_nombre | Apellido | Fecha_de_nacimiento

el orden en la tabla de salida es el siguiente:


l Título | Apellido | Primer_nombre | Segundo_nombre | Fecha_de_nacimiento

Título de columna alternativo


Los títulos de columna alternativos de las tablas de origen aparecen en la tabla de salida. Si más de una
tabla de origen tiene un título de columna alternativo para el mismo campo, el título de la primera tabla
seleccionada tiene prioridad.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 78 de 898
Comandos

Comando ASSIGN
Crea una variable y asigna un valor a la variable.

Sintaxis
ASSIGN nombre_variable = valor <IF prueba>

Consejo
Puede omitir la palabra clave ASSIGN, porque ACL interpreta automáticamente la
siguiente sintaxis como una operación de asignación:

nombre_variable = valor

Parámetros
Nombre Descripción

nombre_variable El nombre de la variable a la que se debe asignar el valor. Si la variable no existe, se


crea. Si la variable ya existe, se actualiza con el nuevo valor.
No utilice caracteres que no pertenezcan al alfabeto inglés, tales como é, en los nom-
bres de las variables. Si utiliza este tipo de caracteres en los nombres de las variables, el
script no se podrá ejecutar correctamente.
Nota
Los nombres de las variables tienen un límite máximo de 31 caracteres
alfanuméricos. El nombre puede incluir un guión bajo ( _ ), pero no
puede incluir ningún otro carácter especial ni espacios. El nombre no
puede comenzar con un número.

valor El valor que se debe asignar a la variable. Si se crea una nueva variable, el tipo de varia-
ble se basa en el tipo de datos en valor.

IF prueba Una expresión condicional que debe ser verdadera para crear la variable o asignar el
valor a la variable.
Opcional

Ejemplos
Asignar un valor a una variable

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 79 de 898
Comandos

Usted asigna el valor del campo Cantidad del registro actual a una variable llamada v_cantidad_actual.
Dado que v_cantidad_actual es una variable, su valor no cambia a menos que se modifique por medio de
otro comando ASSIGN de manera explícita:

ASSIGN v_cantidad_actual= Cantidad

Asignar un valor a una variable de forma condicional


Usted desea actualizar el valor de una variable denominada v_cantidad a 1, pero solo si el valor de otra
variable denominada v_recuento es inferior a 10.
Si v_recuento es mayor que o igual a 10, no se realiza ninguna asignación y el valor de v_cantidad se man-
tiene invariable.
Observe que se omite la palabra clave opcional ASSIGN:

v_cantidad = 1 IF v_recuento < 10

Observaciones
Duración de las variables
Las variables con nombres que no tengan delante un guion bajo se conservan únicamente durante la
sesión actual de ACL.
Si desea que una variable se guarde de manera permanente con un proyecto de ACL, coloque un guión
bajo delante del nombre de la variable:

ASSIGN valor = _nombre_variable

Reasignación de variables utilizadas en un campo calculado o GROUP


Si asigna un valor a una variable existente en las siguientes situaciones, se asigna el nuevo valor pero se
mantienen el recuento decimal y la longitud del valor anterior:
l variables que se usan en campos calculados
l variables que se reasignan dentro de un GROUP
La longitud del nuevo valor se completa o se trunca y los decimales se ajustan, si es necesario.
Si reasigna una variable en cualquier otro contexto, se sobrescriben tanto el valor previo como la espe-
cificación de decimales y longitud.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 80 de 898
Comandos

Variables creadas por comandos ACL


Cuando se ejecutan ciertos comandos, ya sea introduciendo información en los cuadros de diálogo en ACL
o ejecutado scripts, ACL crea automáticamente las variables del sistema. Puede usar estas variables y los
valores que contienen, al procesar los comandos de ACL posteriores.
El valor de una variable del sistema se reemplaza por un valor actualizado si vuelve a ejecutar el mismo
comando.
Si desea obtener más información, consulte Variables creadas por comandos de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 81 de 898
Comandos

Comando BENFORD
Hace un recuento del número de veces que aparece cada dígito o combinación de dígitos inicial en un
campo y compara el recuento real con el recuento esperado. El recuento esperado se calcula usando la
fórmula Benford.

Sintaxis
BENFORD <ON> campo_numérico <LEADING n> <IF prueba> <BOUNDS> <TO SCREEN|nom-
bre_tabla|GRAPH|PRINT> <HEADER texto_encabezado> <FOOTER texto_pie_de_página>
<WHILE prueba> <FIRST rango|NEXT rango> <APPEND> <OPEN> <LOCAL>

Parámetros
Nombre Descripción

ON campo_numérico El campo numérico que se debe analizar.

LEADING n El número de dígitos iniciales que se analizará. El valor de n debe estar entre 1 y 6.
opcional Si se omite LEADING, se utiliza el valor predeterminado 1.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

BOUNDS Los valores de límite inferior y superior que se deben incluir en la salida. Es necesario
especificar BOUNDS si se desea mostrar los recuentos que estén considerablemente
opcional
fuera de los valores esperados.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | GRAPH | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 82 de 898
Comandos

Nombre Descripción

Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.
o GRAPH: muestra los resultados en un gráfico en el área de visualización de ACL
o PRINT: envía los resultados a la impresora predeterminada

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 83 de 898
Comandos

Nombre Descripción

Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

Ejemplos
Envío de resultados a un gráfico
Ejecuta el comando BENFORD con el campo Importe y envía los resultados a un gráfico:

BENFORD ON Cantidad LEADING 2 BOUNDS TO GRAPH

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 84 de 898
Comandos

Comando CALCULATE
Calcula el valor de una o más expresiones.

Sintaxis
CALCULATE expresión <AS etiqueta_resultado> <;...n>

Parámetros
Nombre Descripción

expresión La expresión que se calculará.


La expresión puede ser de cualquiera de los cuatro tipos:
o carácter
o numérico
o fechahora
o lógico
Separe las diferentes expresiones con un punto y coma:

CALCULATE 47 * 18,5; 1 + 2; "a" + "b"

AS etiqueta_resultado El nombre del resultado cuando se muestra en la pantalla y en el log de comandos de


ACL.
opcional
etiqueta_resultado debe ser una cadena entre comillas o una expresión de caracteres
válida.
Si no se especifica, se utiliza la expresión que se está calculando como el nombre del
resultado.

Ejemplos
Realización de un cálculo simple
Utiliza CALCULATE para multiplicar 4,70 por 18,50, y obtiene 86,95 como resultado:

CALCULATE 4,70 * 18,50

Asignar un nombre a los resultados de un cálculo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 85 de 898
Comandos

Usted usa CALCULATE para obtener el margen bruto del registro actualmente seleccionado utilizando
campos previamente definidos para precio de venta y costo unitario:

CALCULATE Precio_venta - Costo_unitario AS "Margen"

El resultado se identifica en la pantalla y en el log como "Margen".

Observaciones
Cómo funciona
CALCULATE ofrece la funcionalidad de una calculadora combinada con el acceso a las funciones de
ACL, las variables y los datos del registro actualmente seleccionado.

Salida del comando


Según dónde se ejecute CALCULATE, los resultados se envían a diferentes ubicaciones:
l Desde la línea de comandos: el resultado se muestra en la pantalla
l Desde un script: el resultado se registra en el log
El valor de etiqueta_resultado no es una variable que puede utilizar en un script. Sólo se utiliza para iden-
tificar el cálculo en la pantalla o en el log.

Cantidad de posiciones decimales en la salida


En un cálculo numérico, el resultado tiene tantas posiciones decimales como el componente de la expre-
sión con la mayor cantidad de posiciones decimales.
Devuelve 1:

CALCULATE 365/52/7

Devuelve 1,0027:

CALCULATE 365,0000/52/7

Trabajo con información de entrada de una tabla


Si la expresión contiene un valor de campo, la tabla a la que pertenece el campo debe estar abierta.
Puede utilizar los comandos FIND, SEEK o LOCATE para ir al registro que será analizado por
CALCULATE.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 86 de 898
Comandos

Comando CLASSIFY
Agrupa los registros sobre la base de valores idénticos en un campo de caracteres o numérico. Cuenta la
cantidad de registros en cada grupo y también calcula el subtotal de campos numéricos especificados para
cada grupo.

Sintaxis
CLASSIFY <ON> campo_clave <SUBTOTAL {campo_numérico <...n>|ALL}> <INTERVALS
número> <SUPPRESS> <TO {SCREEN|nombre_tabla|GRAPH|PRINT}> <IF prueba> <WHILE
prueba> <FIRST rango|NEXT rango> <HEADER texto_encabezado> <FOOTER texto_pie_de_
página> <KEY salto_campo> <OPEN> <APPEND> <LOCAL> <STATISTICS>

Parámetros
Nombre Descripción

ON campo_clave El campo de caracteres o numérico que se debe clasificar.


La longitud máxima del campo clave es de 64 caracteres. Para clasificar utilizando un
campo clave de caracteres, puede usar cualquiera de los siguientes métodos para resol-
ver las restricciones de longitud:
o Utilice la función SUBSTRING( ) para truncar el campo clave en 64 caracteres y cla-
sificar la tabla usando el valor truncado:

CLASSIFY ON SUBSTR(nombre_campo_clave; 1; 64)

o Defina los primeros 64 caracteres del campo clave como un nuevo campo físico y cla-
sifique la tabla utilizando el nuevo campo.
Consejo
Si desea clasificar una tabla usando un campo clave de más de 64 carac-
teres, puede utilizar el comando SUMMARIZE. Este comando no tiene un
límite de longitud para el campo clave.

SUBTOTAL campo_numé- Uno o más campos numéricos o expresiones que se subtotalizarán para cada grupo.
rico <...n> | ALL
Múltiples campos se deben separar con espacios. Especifique ALL para calcular sub-
opcional totales de todos los campos numéricos de la tabla.

INTERVALS número La cantidad máxima de grupos en el resultado de la salida.


opcional Si la cantidad de conjuntos de valores idénticos del campo que se está clasificando
supera el máximo especificado, se utilizan los conjuntos a partir de la parte superior de
la columna.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 87 de 898
Comandos

Nombre Descripción

Los conjuntos que superan la cantidad máxima se agrupan en un grupo denominado


"OTHER".
Si se omite INTERVALS, se crea un grupo para cada conjunto de valores idénticos en el
campo que se está clasificando.
Nota
Este parámetro no está disponible en la interfaz de usuario de ACL y sólo
se puede utilizar como parte de la sintaxis de ACLScript en un script o la
línea de comandos.

SUPPRESS Nota
opcional No se puede usar, a menos que también se especifique INTERVALS.
SUPPRESS no está disponible en la interfaz de usuario de ACL y solo se
puede utilizar como parte de la sintaxis de ACLScript en un script o la
línea de comandos.
Excluye conjuntos de valores idénticos que superan el máximo especificado por
INTERVALS de la salida del comando.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | GRAPH | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.
o GRAPH: muestra los resultados en un gráfico en el área de visualización de ACL
o PRINT: envía los resultados a la impresora predeterminada

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 88 de 898
Comandos

Nombre Descripción

o NEXT: comienza el procesamiento desde el registro actualmente seleccionado


Utilice intervalo para especificar la cantidad de registros que se deben procesar.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

KEY salto_campo El campo o la expresión que agrupa los cálculos de subtotal de grupos. Se calcula un
subtotal cada vez que cambia el valor de salto_campo.
opcional
salto_campo debe ser un campo de caracteres o una expresión. Puede especificar un
solo campo, pero puede usar una expresión que contenga más de un campo.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

STATISTICS Nota
opcional No se puede usar, a menos que también se especifique SUBTOTAL.
Calcula los valores promedio, mínimo y máximo para todos los campos SUBTOTAL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 89 de 898
Comandos

Ejemplos
Importe total de transacciones por cliente
Desea clasificar una tabla de cuentas por cobrar a partir del campo Número_cliente y calcular el subtotal
del campo Importe_trans . Los resultados de la salida se agrupan por cliente e incluyen el importe total de
las transacciones para cada cliente:

OPEN Cuentas_por_cobrar
CLASSIFY ON Número_cliente SUBTOTAL Importe_trans TO "Total_cliente.FIL"

Importes total, promedio, mínimo y máximo de las transacciones por cliente


Al igual que en el ejemplo anterior, clasifica una tabla de cuentas por cobrar a partir del campo Número_
cliente y calcula el subtotal del campo Importe_trans .
Ahora puede incluir STATISTICS para calcular los importes promedio, mínimo y máximo de las tran-
sacciones para cada cliente:

OPEN Cuentas_por_cobrar
CLASSIFY ON Número_cliente SUBTOTAL Importe_trans TO "Estadísticas_cliente.FIL"
STATISTICS

Números de factura idénticos


Necesita identificar los importes de las facturas que aparecen más de una vez en la tabla Trans_Cp.
Para hacerlo, clasifica la tabla por el campo Importe_factura. Los resultados de la salida se agrupan por
el importe de la factura, con un recuento asociado que puede utilizar para identificar cualquier importe de
factura que aparezca más de una vez:

OPEN Trans_Cp
CLASSIFY ON Importe_factura TO "Importes_factura_agrupados.FIL" OPEN
SET FILTER TO COUNT > 1

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
CLASSIFY agrupa los registros que tienen el mismo valor en un campo de caracteres o numérico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 90 de 898
Comandos

La salida contiene un registro único para cada grupo, con un recuento de la cantidad de registros en la tabla
de origen que pertenecen al grupo.

Ordenamiento y CLASSIFY
CLASSIFY puede procesar datos ordenados o sin ordenar. La salida se ordenan automáticamente de
forma ascendente.

Nombres de los campos de subtotal y estadísticas autogenerados


Si utiliza STATISTICS para realizar los cálculos estadísticos en uno o más campos SUBTOTAL y envía los
resultados a una tabla de ACL, los campos autogenerados por los parámetros tienen los siguientes nom-
bres:

Descripción del campo Nombre del campo en la tabla de Título alternativo de columna (nombre visible)
autogenerado salida en la tabla de salida

Campo subtotal nombre del campo que se subtotaliza Total + título alternativo de columna sub-
en la tabla de origen totalizada en la tabla de origen

Campo promedio a_ nombre del campo que se sub- Promedio + título alternativo de columna sub-
totaliza en la tabla de origen totalizada en la tabla de origen

Campo mínimo m_ nombre del campo que se sub- Mínimo + título alternativo de columna sub-
totaliza en la tabla de origen totalizada en la tabla de origen

Campo máximo x_ nombre del campo que se sub- Máximo + título alternativo de columna sub-
totaliza en la tabla de origen totalizada en la tabla de origen

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 91 de 898
Comandos

Comando CLOSE
Cierra un archivo de log, un archivo de índice o una tabla de ACL o finaliza una sesión de la Grabadora de
scripts .

Sintaxis
CLOSE < nombre_tabla|PRIMARY|SECONDARY|INDEX|LOG|LEARN>

Parámetros
Nombre Descripción

nombre_tabla El elemento que desea cerrar:


|PRIMARY|SECONDARY|INDEX|LOG|LEARN o nombre_tabla: el nombre de la tabla de ACL que se cerrará
opcional o PRIMARY: cierra la tabla ACL primaria
Si se utiliza CLOSE sin parámetros, también se cierra la tabla pri-
maria.
o SECONDARY : cierra la tabla de ACL secundaria
o INDEX: cierra el índice actual aplicado a la tabla de ACL
o LOG: devuelve el archivo de log al log de comandos pre-
determinado, después de la utilización del comando SET LOG
para especificar otro archivo de log
o LEARN: finaliza la sesión activa de la Grabadora de scripts y le
pide que guarde el archivo de script en el que se registró la
sesión
LEARN se puede utilizar en scripts, pero se creó para ser uti-
lizado en la línea de comandos. La Grabadora de scripts registra
la sintaxis de ACLScript para los comandos que se ejecutan uti-
lizando cuadros de diálogo en la interfaz de usuario de ACL.

Ejemplos
Cierre de una tabla por nombre
Desea cerrar una tabla llamada Inventario:

CLOSE Inventario

Cierre de una tabla por tipo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 92 de 898
Comandos

Desea cerrar la tabla secundaria actual:

CLOSE SECONDARY

Restauración del log de comandos de ACL predeterminado


Desea restaurar el log de comandos predeterminado después de usar un archivo de log independiente
para capturar la fase de verificación de datos de un script:

SET LOG TO "FaseVerificaciónDatos.log"


COMMENT Ejecutar comandos de verificación de datos
CLOSE LOG

Observaciones
Cuándo usar CLOSE
En general, no es necesario cerrar tablas de ACL. La tabla de ACL activa se cierra automáticamente al
abrir otra tabla. La tabla primaria también se cierra automáticamente antes de ejecutar los comandos
OPEN o QUIT.
No puede utilizar CLOSE para cerrar un proyecto de ACL. En su lugar, use QUIT.

Tablas y campos relacionados


Cuando usted cierra una tabla primaria o secundaria, se quitan de la memoria todas las definiciones de cam-
pos relacionados. Los cambios en el formato de tabla se guardan antes de cerrar la tabla.
Si definió relaciones de tablas en un proyecto de ACL, el comando CLOSE cierra tanto la tabla primaria
como las tablas secundarias. También cierra las tablas relacionadas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 93 de 898
Comandos

Comando COMMENT
Agrega una nota explicativa a un script sin afectar el procesamiento.

Sintaxis
Comentarios de una sola línea
COMMENT texto_comentario

Comentarios de varias líneas


COMMENT
texto_comentario
<...n>
<END>

Nota
No utilice el carácter de acento circunflejo ^ para anteceder líneas del texto de comen-
tario. El acento circunflejo tiene un uso especial en el archivo de proyecto de .acl y el texto
de comentario no se guarda si se antepone un acento circunflejo.

Parámetros
Nombre Descripción

texto_comentario El comentario que agrega.


o comentario de una línea: escriba el texto del comentario completo sin un salto de
línea
o comentario de varias líneas: escriba tantas líneas de texto de comentario como sea
necesario comenzando por la línea que sigue inmediatamente al comando
COMMENT
Finalice un comentario de varias líneas con la palabra clave END en una línea inde-
pendiente o con una línea en blanco.

END El fin de un comando COMMENT de varias líneas.


opcional Si utiliza END, lo debe introducir en la línea inmediatamente siguiente a la última línea
de comentario. Si omite END, la última línea de comentario debe ir seguida de una
línea en blanco.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 94 de 898
Comandos

Ejemplos
Comentarios de una sola línea
Los comentarios de una sola línea se usan antes de los comandos para agregar documentación para futu-
ros usuarios que mantendrán el script:

COMMENT Generar una desviación estándar y un promedio.


STATISTICS ON %v_importe% STD TO SCREEN NUMBER 5
COMMENT Crear campos para almacenar la desviación estándar y el promedio.
DEFINE FIELD Desviación_Estándar COMPUTED STDDEV1
DEFINE FIELD Promedio COMPUTED AVERAGE1

Comentario de varias líneas


Comienza cada script que redacta con un comentario de varias líneas que explica el propósito del script:

COMMENT
  Este estudio analítico identifica varios registros con ID de originador de la transacción común
(como ID de proveedor o ID de comerciante)
  en los que los valores de fecha de la transacción son iguales o tienen una diferencia de un día.
  Este estudio analítico se puede usar para facturas divididas, órdenes de compra divididas,
  solicitudes divididas y transacciones de tarjeta corporativa divididas.
END

Observaciones
Cuándo usar COMMENT
Utilice COMMENT para incluir información acerca del propósito de un script, la lógica utilizada y otra infor-
mación, como las entradas requeridas para el script y el propósito de cada variable que defina.
Los comentarios de un script se escriben en el log de comandos de ACL cada vez que se ejecuta el script.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 95 de 898
Comandos

Comando COUNT
Hace un recuento del número total de registros en la vista actual o solo de los registros que cumplen con
la condición especificada.

Sintaxis
COUNT <IF prueba> <WHILE prueba> <FIRST rango|NEXT rango>

Parámetros
Nombre Descripción

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

Variables de salida de ACL


Nombre Contiene

COUNTn El conteo de registros calculado por el comando.


o Si el nombre de la variable es COUNT1, almacenará el conteo de registros del
último comando ejecutado.
o Si el nombre de la variable es COUNTn donde n es mayor que 1, la variable alma-
cenará el conteo de registros de un comando ejecutado dentro de un comando
GROUP.
El valor de n se asigna de acuerdo con el número de línea del comando dentro de
GROUP. Por ejemplo, si el comando está una línea debajo del comando GROUP,
se le asigna el valor COUNT2. Si el comando está cuatro líneas debajo del
comando GROUP, se le asigna el valor COUNT5.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 96 de 898
Comandos

Ejemplos
Almacenamiento de COUNT1
El resultado del comando COUNT se almacena en la variable de salida COUNT1. Puede recuperar y alma-
cenar este valor en una variable definida por el usuario.
El comando COUNT sobrescribe la variable COUNT1 cada vez que se ejecuta, por lo que el valor se debe
almacenar en una variable definida por el usuario antes de que el comando se ejecute por segunda vez des-
pués de la aplicación del filtro a la tabla:

OPEN DirecciónCliente
COUNT
TotalReg = COUNT1
SET FILTER TO FechaModificación > ‘20100101‘ 
COUNT
TotalRegFiltrados = COUNT1

Observaciones
Cuándo usar COUNT
Utilice el comando COUNT para contar el número de registros de una tabla de ACL o para contar el número
de registros que cumplen con una condición de prueba en particular. En caso de no especificarse ninguna
prueba, aparece la cantidad total de registros de la tabla ACL.

De qué manera afectan los filtros a COUNT


Si se aplicó un filtro a una vista, el comando cuenta la cantidad de registros que quedan en la tabla una vez
aplicada la condición de filtro.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 97 de 898
Comandos

Comando CREATE LAYOUT


Crea un formato de tabla de ACL vacío, que puede ser necesario para algunas situaciones de creación de
scripts.

Sintaxis
CREATE LAYOUT nombre_formato WIDTH caracteres <RECORD 0|RECORD 1>

Parámetros
Nombre Descripción

nombre _formato El nombre del formato de tabla.

WIDTH caracteres La longitud del registro en caracteres.

RECORD 0 | RECORD 1 o Si especifica RECORD 0, u omite este parámetro, el formato de tabla se crea sin
registros ni un archivo de datos de origen.
opcional o Si especifica RECORD 1, el formato de tabla se crea con un único registro vacío y
un archivo de datos de origen denominado nombre_formato.fil.

Ejemplos
Creación de un formato de tabla vacío sin ningún registro
Usted crea un formato de tabla vacío con una longitud de registro de 100 caracteres:

CREATE LAYOUT tabla_vacía WIDTH 100

Creación de un formato de tabla vacío con un registro


Usted crea:
l un formato de tabla vacío con un registro vacío
l una longitud de registro de 50 caracteres
l un archivo de datos de ACL asociado, denominado tabla_vacía.fil

CREATE LAYOUT tabla_vacía WIDTH 50 RECORD 1

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 98 de 898
Comandos

Observaciones
El formato de tabla vacío se crea con un único campo de caracteres denominado Campo_1. La longitud del
campo es la misma que la longitud del registro que especifique con WIDTH.
Nota
No se admite el uso de este comando en estudios analíticos de ACL que se ejecutan en el
Servidor de AX.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 99 de 898
Comandos

Comando CROSSTAB
Agrupa registros sobre la base de combinaciones idénticas de valores en dos o más campos de carac-
teres o numéricos y muestra los grupos que se obtienen en una cuadrícula de filas y columnas. Cuenta la
cantidad de registros en cada grupo y también calcula el subtotal de campos numéricos especificados
para cada grupo.

Sintaxis
CROSSTAB <ON> campo_fila <...n> COLUMNS campo_columna <SUBTOTAL campo_numérico
<...n>|ALL> TO \{SCREEN|nombre_tabla|nombre_archivo|GRAPH|PRINT} <IF prueba> <WHILE
prueba> <{FIRST rango|NEXT rango> <APPEND> <COUNT> <OPEN> <LOCAL> <HEADER
texto_encabezado> <FOOTER texto_pie_de_página>

Parámetros
Nombre Descripción

ON campo_fila <...n> El campo o la expresión que se debe utilizar para las filas en la cuadrícula de filas y
columnas resultante. Puede especificar uno o más campos o expresiones como base
para las filas.

COLUMNS campo_ El campo o la expresión que se debe utilizar para las columnas en la cuadrícula de
columna filas y columnas resultante. Puede especificar sólo un campo o expresión para las
columnas.

SUBTOTAL campo_numé- Uno o más campos numéricos o expresiones que se subtotalizarán para cada grupo.
rico <...n> | ALL
Múltiples campos se deben separar con espacios. Especifique ALL para calcular sub-
opcional totales de todos los campos numéricos de la tabla.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | nombre_archivo | o SCREEN: muestra los resultados en el área de visualización de ACL
GRAPH | PRINT o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 100 de 898


Comandos

Nombre Descripción

Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o GRAPH: muestra los resultados en un gráfico en el área de visualización de ACL
o PRINT: envía los resultados a la impresora predeterminada

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

COUNT Incluye los recuentos de registros en forma de columnas. Los recuentos resultan útiles
al utilizar SUBTOTAL.
opcional
Los recuentos se incluyen automáticamente si no selecciona ningún campo de sub-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 101 de 898


Comandos

Nombre Descripción

total.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

Ejemplos
Generación de tablas cruzadas de una tabla de cuentas por cobrar con SUBTOTAL
Usted desea generar tablas cruzadas de una tabla de cuentas por cobrar por los campos Número de
cliente y Tipo de transacción. También desea calcular el subtotal del campo Importe de la transacción.
La salida se agrupa por cliente y, dentro de cada cliente, por tipo de transacción. Incluye el importe total
de las transacciones de cada cliente para cada tipo de transacción:

OPEN Cuentas_por_cobrar
CROSSTAB ON Número_cliente COLUMNS Tipo_trans SUBTOTAL Importe_trans COUNT TO
SCREEN

Generación de tablas cruzadas de una tabla de cuentas por cobrar para detectar transacciones duplicadas
Necesita encontrar indicios de transacciones duplicadas en una tabla de cuentas por cobrar.
Para hacerlo, genera una tabla cruzada de una tabla de cuentas por cobrar a partir de los campos
Importe de la transacción y Tipo de transacción. La salida agrupa y hace un recuento de los importes
de transacciones idénticos para cada tipo de transacción:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 102 de 898


Comandos

OPEN Cuentas_por_cobrar
CROSSTAB ON Importe_transacción COLUMNS Tipo_trans TO SCREEN

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
CROSSTAB agrupa registros que tienen la misma combinación de valores en dos o más campos numé-
ricos o de caracteres.
La salida contiene una grilla de filas y columnas similar a una tabla dinámica. Incluye una intersección única
de fila y columna para cada grupo, con un recuento de la cantidad de registros en la tabla de origen que per-
tenecen al grupo.

Ordenamiento y CROSSTAB
CROSSTAB puede procesar datos ordenados o sin ordenar. Tanto campo_fila como campo_columna de
la salida se ordenan automáticamente de manera ascendente.
Si especifica más de un campo_fila, los campos utilizan un ordenamiento anidado, comenzando por el pri-
mer campo_fila que especifica.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 103 de 898


Comandos

Comando CVSEVALUATE
Para el muestreo de variables clásicas, ofrece cuatro métodos diferentes para proyectar los resultados
del análisis de la muestra a toda la población.

Sintaxis
CVSEVALUATE BOOKED campo_valor_contable AUDITED campo_valor_auditoría ETYPE
{MPU|DIFFERENCE|RATIO SEPARATE|RATIO COMBINED} STRATA valor_límite <;...n>
POPULATION recuento_estrato;valor_contable_estrato <;...n> CONFIDENCE nivel_de_confianza
CUTOFF valor;recuento_estrato_certeza;valor_contable_estrato_certeza ERRORLIMIT número
PLIMIT {BOTH|UPPER|LOWER} <TO {SCREEN|nombre_de_archivo}>

Parámetros
Nota
Si está utilizando los resultados de salida de los comandos CVSPREPARE y
CVSSAMPLE como entrada para el comando CVSEVALUATE, una cantidad de valores
de parámetros ya están especificados y almacenados en las variables. Si desea obtener
más información, consulte "Comando CVSPREPARE" en la página 108 y "Comando
CVSSAMPLE" en la página 112.
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

BOOKED campo_valor_ El campo numérico valor contable que se debe usar en la evaluación.
contable

AUDITED campo_valor_ El campo numérico valor de auditoría que se debe usar en la evaluación.
auditoría

ETYPE MPU | El tipo de estimación que se debe utilizar:


DIFFERENCE |
l MPU (Media por unidad)
RATIO SEPARATE | l Diferencia
RATIO COMBINED l Coeficiente separado
l Coeficiente combinado
Si desea obtener más información, consulte "¿Qué tipo de estimación debería utilizar?"
en la página 106

STRATA valor_límite Los valores límite superiores que se deben usar para estratificar el campo_valor_con-
<;...n> table.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 104 de 898


Comandos

Nombre Descripción

POPULATION recuento_ La cantidad de registros y el valor total para cada estrato del campo_valor_contable.
estratos; valor_estrato
<;...n>

CONFIDENCE nivel_de_ El nivel de confianza que se utilizó durante la etapa de preparación del muestro de
confianza variables clásicas.

CUTOFF valor; recuento_ o valor: el valor de corte del estrato de certeza que se utilizó durante la etapa de pre-
estrato_certeza; valor_con- paración y muestreo del muestreo de variables clásicas
table_estrato_certeza o recuento_estrato_certeza: la cantidad de registros del estrato de certeza
o valor_contable_estrato_certeza: el valor contable total de los registros del estrato
de certeza

ERROR número El número mínimo de errores que espera en la muestra.


Nota
Si el número real de errores que encontró al analizar la muestra es infe-
rior al número de ERRORLIMIT, el único método de evaluación dis-
ponible es media por unidad.

PLIMIT BOTH | UPPER | El tipo de límite de precisión que se debe usar:


LOWER o Ambos
o Superior
o Inferior
Si desea obtener más información, consulte "Comando CVSPREPARE" en la
página 108.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"

Ejemplos
Proyectar errores detectados en los datos de muestra a toda la población
Finalizó las pruebas de los datos de muestra y registró las desviaciones de los controles que detectó.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 105 de 898


Comandos

Ahora, puede proyectar los error errores que haya encontrado a la población completa.
El siguiente ejemplo utiliza el tipo de estimación Diferencia para proyectar los resultados del análisis de la
muestra a la población completa:

CVSEVALUATE BOOKED importe_factura AUDITED AUDIT_VALUE ETYPE DIFFERENCE


STRATA 4376,88;9248,74;16904,52;23864,32 POPULATION
1279;3382131,93;898;5693215,11;763;9987014,57;627;12657163,59;479;13346354,63
CONFIDENCE 95,00 CUTOFF 35000,00;36;1334318,88 ERRORLIMIT 6 PLIMIT BOTH TO
SCREEN

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

¿Qué tipo de estimación debería utilizar?


El tipo de estimación que debe usar depende de la naturaleza de los datos: los valores contables de la
muestra, los valores auditados de la muestra y la relación entre ellos.

Pautas
Las siguientes pautas lo ayudarán a seleccionar el tipo de estimación. Puede repetir la etapa de eva-
luación con diferentes tipos de estimación y comparar los resultados de cada una.

Comparación de la
Presencia de infor- Tamaño de la infor- Signo de los valores razón de los estra-
Tipo de estimación mación errónea mación errónea contables tos

No hay información n/d n/d n/d


errónea o la infor-
mación errónea es
muy poca
El único tipo de esti-
mación válido si no
hay información erró-
nea, o si hay pocos
errores de infor-
mación, en la pobla-
ción de muestra
Media por unidad auditada.

Se necesita infor- La información erró- n/d n/d


mación errónea nea no es pro-
Diferencia porcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 106 de 898


Comandos

Comparación de la
Presencia de infor- Tamaño de la infor- Signo de los valores razón de los estra-
Tipo de estimación mación errónea mación errónea contables tos

Requiere una canti- Es más adecuada


dad de información cuando la infor-
errónea en la pobla- mación errónea no
ción de muestra es proporcional: el
auditada. tamaño de la infor-
mación errónea no
Por ejemplo, 5 % o
se relaciona con el
más de las muestras
tamaño del valor
contienen infor-
contable asociado.
mación errónea.
En otras palabras,
los valores con-
tables pequeños y
grandes pueden
tener información
errónea pequeña o
considerable.

La información erró- Los valores con- El coeficiente es


nea es proporcional tables tienen el variable
mismo signo
Es más adecuada Más adecuada
cuando la infor- Todos los valores cuando la relación
mación errónea es contables de mues- entre el valor de
proporcional: el tra deben tener el auditoría de la mues-
tamaño de la infor- mismo signo: todos tra promedio y el
mación errónea se positivos o todos valor contable de la
relaciona con el negativos muestra promedio
tamaño del valor varía con-
Coeficiente sepa- contable asociado. siderablemente
rado entre los estratos.
En otras palabras,
los valores con-
tables pequeños Los coeficientes son
contienen infor- homogéneos
mación errónea Más adecuada
pequeña y los valo- cuando la relación
res contables ele- entre el valor de
vados contienen auditoría de la mues-
información errónea tra promedio y el
considerable. valor contable de la
muestra promedio
Coeficiente com- es similar entre los
binado estratos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 107 de 898


Comandos

Comando CVSPREPARE
Estratifica una población y calcula una muestra estadísticamente válida para cada estrato, para el mues-
treo de variables clásicas.

Sintaxis
CVSPREPARE <ON> campo_valor_contable NUMSTRATA número MINIMUM tamaño_muestra_
estrato_mínimo PRECISION valor CONFIDENCE nivel_de_confianza <CUTOFF valor> NCELLS
número PLIMIT {BOTH|UPPER|LOWER} ERRORLIMIT número <MINSAMPSIZE tamaño_mues-
tra_mínimo> TO SCREEN|nombre_de_archivo>

Parámetros
Nota
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

ON campo_valor_con- El campo numérico valor contable que se debe usar como la base para la preparación
table del muestreo de variables clásicas.

NUMSTRATA número La cantidad de estratos se deben utilizar para estratificar de manera numérica el
campo_valor_contable.
La cantidad mínima de estratos es 1 y la cantidad máxima, 256.
Si especifica NUMSTRATA 1 y no especifica CUTOFF, la población no se estratifica
antes de extraer una muestra.
Nota
El número de estratos no puede superar el 50 % de la cantidad de cel-
das especificadas para NCELLS.

MINIMUM tamaño_mues- La cantidad mínima de registros que se deben tomar como muestra en cada estrato.
tra_estrato_mínimo
Si no tiene una razón específica para establecer un número mínimo, deje el valor pre-
determinado de cero (0).

PRECISION valor El importe monetario que es la diferencia entre la información errónea tolerable y la
información errónea esperada en la cuenta.
o Información errónea tolerable: la cantidad total máxima de errores de información
que pueden aparecer en el campo muestra sin que eso se considere como un error
significativo
o Información errónea esperada:la cantidad total de información errónea que espera
encontrar en el campo de muestra

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 108 de 898


Comandos

Nombre Descripción

La precisión establece el intervalo de aceptabilidad para que una cuenta se considere


considerablemente aceptada.
Si se reduce la precisión, se reduce el rango de aceptabilidad (el margen de error) lo
cual obliga a incrementar el tamaño de la muestra.

CONFIDENCE nivel_de_ El nivel deseado de confianza de que la muestra resultante sea representativa de la
confianza población completa.
Por ejemplo, si especifica 95, significa que desea tener una certeza de que el 95 % de
las veces la muestra será realmente representativa. La confianza es el complemento
del "riesgo de muestreo". Un nivel de confianza de 95 % es lo mismo que un riesgo de
muestreo de 5 %.
o Si PLIMIT es BOTH, el nivel mínimo de confianza es 10 % y el máximo es 99,5 %.
o Si PLIMIT es UPPER o LOWER, el nivel mínimo de confianza es 55 % y el máximo
es 99,5 %.

CUTOFF valor Un valor de corte del estrato de certeza.


opcional Las cantidades del campo_valor_contable que sean mayores o iguales al valor de
corte se seleccionan automáticamente y se incluyen en la muestra.
Si omite CUTOFF, se usa un valor de corte predeterminado igual al importe máximo del
campo_valor_contable.

NCELLS número La cantidad de celdas que se deben usar para pre-estratificar el campo_valor_
contable.
Las celdas son divisiones numéricas más estrechas que los estratos. La pre-estra-
tificación forma parte de un proceso interno que optimiza la posición de los límites de
los estratos. Las celdas no se conservan en la salida estratificada final.
La cantidad mínima de celdas es 2 y la cantidad máxima, 999.
Nota
La cantidad de celdas debe ser al menos el doble (2x) de la cantidad de
estratos que se especificaron para NUMSTRATA.

PLIMIT BOTH | UPPER | El tipo de límite de precisión que se debe usar.


LOWER o BOTH: especifique esta opción si:
l la cuenta, en su conjunto, podría estar tanto subestimada como sobrestimada
l está interesado en calcular si la información errónea (en más o en menos)
supera la PRECISION que se especificó
o UPPER: especifique esta opción si:
l la cuenta, en su conjunto, probablemente está subestimada
l está interesado únicamente en calcular si la cantidad total de subestimación
supera la PRECISION que se especificó
o UPPER: especifique esta opción si:
l la cuenta, en su conjunto, probablemente está sobrestimada
l está interesado únicamente en calcular si la cantidad total de sobrestimación
supera la PRECISION que se especificó
Precaución
Si no está seguro de qué opción especificar, especifique BOTH.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 109 de 898


Comandos

Nombre Descripción

ERROR número El número mínimo de errores que espera en la muestra.


Nota
Si el número real de errores que encuentra al analizar la muestra es
inferior al número de ERRORLIMIT, el único método de evaluación dis-
ponible es mediana por unidad.

MINSAMPSIZE tamaño_ La cantidad mínima de registros que se deben tomar como muestra de la población
muestra_mínimo total.
opcional Si no tiene una razón específica para establecer un número mínimo, deje el valor pre-
determinado de cero (0).

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"

Variables de salida de ACL


Nombre Contiene

CONFIDENCE El nivel de confianza que especificó el usuario.

ERRLIMIT La cantidad mínima de errores que especificó el usuario.

NSTRATA La cantidad de estratos que especificó el usuario.

PLIMIT El tipo de límite de precisión que especificó el usuario.

STOP El valor de corte del estrato de certeza que especificó el usuario o, si no se especificó
ninguno, el límite superior del estrato superior calculado por el comando.

SAMPLEFIELD El campo valor contable que especificó el usuario.

SBOTTOM El límite inferior del estrato inferior calculado por el comando.

SBOUNDARY Todos los límites superiores de los estratos calculados por el comando y S_TOP. No
almacena SBOTTOM.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 110 de 898


Comandos

Nombre Contiene

SPOPULATION El recuento de la cantidad de registros de cada estrato y el valor monetario total para
cada estrato. Excluye los elementos que superan el corte del estrato de certeza.

SSAMPLE El tamaño de la muestra para cada estrato calculado por el comando.

Ejemplos
Preparar una muestra de variables clásicas
Decidió utilizar el muestreo de variables clásicas para estimar el importe total de información monetaria erró-
nea en la cuenta que contiene las facturas.
Antes de extraer la muestra, debe estratificar la población y calcular el tamaño de muestra esta-
dísticamente válido para cada estrato.
Desea estar seguro de que el 95 % de las veces, la muestra extraída por ACL será representativa de la
población en su conjunto.
Utilizando el nivel de confianza especificado, el siguiente ejemplo estratifica una tabla sobre la base del
campo importe_factura y calcula el tamaño de la muestra para cada estrato y el estrato de certeza:

CVSPREPARE ON importe_factura NUMSTRATA 5 MINIMUM 0 PRECISION 928003,97


CONFIDENCE 95,00 CUTOFF 35000 NCELLS 50 PLIMIT BOTH ERRORLIMIT 6 MINSAMPSIZE 0
TO SCREEN

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Limitación de la longitud de los números


Durante la etapa de preparación del muestreo de variables clásicas, se realizan varios cálculos internos.
Estos cálculos admiten números con una longitud máxima de 17 dígitos. Si el resultado de algún cálculo
supera los 17 dígitos, no se lo incluye en la salida y usted no puede continuar con el proceso de muestreo.
Tenga en cuenta que los números de datos de origen con menos de 17 dígitos pueden generar un cálculo
interno cuyo resultado supere los 17 dígitos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 111 de 898


Comandos

Comando CVSSAMPLE
Extrae una muestra de registros utilizando el método de muestreo de variables clásicas.

Sintaxis
CVSSAMPLE ON campo_valor_contable NUMSTRATA número SEED valor_semilla> CUTOFF
valor STRATA valor_límite <;...n> SAMPLESIZE número <;...n> POPULATION recuento_
estrato,valor_estrato <;...n> TO nombre_tabla

Parámetros
Nota
Si está utilizando los resultados de salida del comando CVSPREPARE como entrada
para el comando CVSSAMPLE, una cantidad de valores del parámetro ya están espe-
cificados y almacenados en las variables. Si desea obtener más información, consulte
"Comando CVSPREPARE" en la página 108.
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

ON campo_valor_con- El campo numérico valor contable que se debe utilizar como base para la muestra.
table

NUMSTRATA número La cantidad de estratos que se deben utilizar para estratificar el campo_valor_contable.

SEED valor_semilla El valor semilla que se debe usar para inicializar el generador de números aleatorios
en ACL.
opcional
Si omite SEED, ACL selecciona de manera aleatoria el valor semilla.

CUTOFF valor Un valor de corte del estrato de certeza.


Las cantidades del campo_valor_contable que sean superiores o iguales al valor de
corte se seleccionan automáticamente y se incluyen en la muestra.

STRATA valor_límite Los valores límite superiores que se deben usar para estratificar el campo_valor_con-
<;...n> table.

SAMPLESIZE número La cantidad de registros que se deben tomar como muestra en cada estrato.
<;...n>

POPULATION recuento_ La cantidad de registros de cada estrato y el valor total para cada estrato.
estratos; valor_estrato

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 112 de 898


Comandos

Nombre Descripción

<;...n>

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.

Variables de salida de ACL


Nombre Contiene

S_TOPEV El valor de corte del estrato de certeza que especificó el usuario o, si no se especificó nin-
guno, el límite superior del estrato superior calculado previamente por el comando
CVSPREPARE.
También almacena el recuento de la cantidad de registros del estrato de certeza y su
valor monetario total.

SBOTTOMEV El límite inferior del estrato inferior calculado por el comando.

BOUNDARYEV Todos los límites superiores de los estratos precompletados por el comando o espe-
cificados por el usuario. No almacena S_TOPEV ni SBOTTOMEV.

SPOPULATION El recuento de la cantidad de registros de cada estrato y el valor monetario total para
cada estrato. Excluye los elementos que superan el corte del estrato de certeza.

Ejemplos
Extraer una muestra de variables clásicas
Va a utilizar el muestreo de variables clásicas para estimar el importe total de información monetaria

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 113 de 898


Comandos

errónea en la cuenta que contiene facturas.


Después de estratificar la población y calcular el tamaño de muestra estadísticamente válido para cada
estrato, está preparado para extraer la muestra.
El siguiente ejemplo extrae una muestra estratificada de registros sobre la base del campo importe_fac-
tura y envía los registros de muestra a la tabla Facturas_muestra:

CVSSAMPLE ON importe_factura NUMSTRATA 5 SEED 12345 CUTOFF 35000,00 STRATA


4376,88;9248,74;16904,52;23864,32;35000,00 SAMPLESIZE 37;36;49;36;39 POPULATION
1279;3382131,93;898;5693215,11;763;9987014,57;627;12657163,59;479;13346354,63 TO "Fac-
turas_muestra"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Campos generados por el sistema


ACL genera automáticamente cuatro campos y los agrega a la tabla de salida de muestra. Para cada
registro que se incluye en la muestra, los campos contienen la siguiente información descriptiva:
l STRATUM: el número del estrato al cual se asigna el registro
l ORIGIN_RECORD_NUMBER: el número de registro original en la tabla de datos de origen
l SELECTION_ORDER: el orden en el que se seleccionó el registro de forma aleatoria, estrato por
estrato
l SAMPLE_RECORD_NUMBER: el número de registro en la tabla de salida de muestra

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 114 de 898


Comandos

Comando DEFINE COLUMN


Crea y agrega una o más columnas a una vista existente.

Sintaxis
DEFINE COLUMN nombre_vista nombre_campo <AS nombre_visible> <POSITION n> <WIDTH
caracteres> <PIC formato> <SORT|SORT D> <KEY> <PAGE> <NODUPS> <NOZEROS> <LINE
n>

Parámetros
Nombre Descripción

nombre_vista La vista a la que se debe agregar la columna.

nombre_campo El campo para el que se debe crear la columna.


Para utilizar un campo de una tabla relacionada, especifique el nombre del campo como
nombre_de_tabla.nombre_de_campo.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista. Si desea que
el nombre visible sea el mismo que el nombre del campo, no use AS.
opcional
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.

POSITION n La posición de la columna en la vista en forma numérica de izquierda a derecha:


opcional o si se omite, la columna se coloca en el último lugar de la derecha en el momento en
que se agrega la columna
o si falta un número de posición, las posiciones de las columnas se ajustan para que
sean ubicadas en forma secuencial
o si ya está en uso un número de posición, la nueva columna se coloca a la izquierda
de la columna que ya cuenta con ese número de posición

WIDTH caracteres El ancho visible del campo en caracteres.


opcional El valor que se especifica controla el ancho visible del campo en las vistas y reportes de
ACL. El ancho visible nunca altera los datos; sin embargo, si es más pequeño que la lon-
gitud del campo, es posible que oculte datos.
Si omite WIDTH, el ancho visible se ajusta al ancho de caracteres que se especificó para
el campo en el formato de tabla.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 115 de 898


Comandos

Nombre Descripción

Nota
Los caracteres especificados por WIDTH son caracteres de ancho fijo. A
cada carácter se le asigna la misma cantidad de espacio, sin importar el
ancho del carácter real.
Por valor predeterminado, las vistas de ACL utilizan una fuente de ancho
proporcional que no coincide con el espaciado de caracteres de ancho
fijo.
Si desea que exista una correspondencia de uno a uno entre el valor
WIDTH y los caracteres de la vista, puede cambiar el ajuste Fuente pro-
porcional en el cuadro de diálogo Opciones a una fuente de ancho fijo,
como Courier New.

PIC formato Nota


opcional Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vistas
y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exactamente
con el formato físico de los datos de origen. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

SORT | SORT D Ordena la columna:


opcional o orden ascendente: SORT
o orden descendente: SORT D

KEY La columna está designada como un campo de corte en los registros. Los registros se
subtotalizan y subdividen cuando el valor de la columna cambia. Se aplican las siguien-
opcional
tes restricciones a los campos de salto:
o debe ser una expresión o un campo de caracteres
o si un campo de salto se ajusta en la vista, debe ser la columna ubicada en el extremo
izquierdo
o la última columna de la vista no puede ser un campo de salto
o si tiene más de un campo de salto, todas las columnas ubicadas a la izquierda de
cualquier otro campo de salto también deben ser campos de salto

PAGE Inserta un salto de página cada vez que cambia el valor del campo de salto.
opcional

NODUPS Reemplaza los valores repetidos por valores en blanco en el campo.


opcional Por ejemplo, si el nombre del cliente figura en cada registro de factura, el reporte es más
fácil de leer si solo se muestra la primera instancia de cada nombre de cliente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 116 de 898


Comandos

Nombre Descripción

NOZEROS Reemplaza los valores de cero por valores en blanco en el campo.


opcional Por ejemplo, si un reporte incluye una gran cantidad de valores cero en un campo, es
más fácil leer el reporte si solo se muestran los valores que no son ceros.

LINE n El número de líneas en la columna. Si no se especifica ningún valor, la columna tiene,


por defecto, una sola línea. El valor de n debe estar entre 2 y 60.
opcional

Ejemplos
Definición de una vista con seis columnas
Con la tabla AR abierta, usted define una vista denominada Reporte_cuentas_cobrar y define seis colum-
nas. Las columnas se muestran en el orden indicado:

OPEN Cuentas_por_cobrar
DEFINE VIEW Reporte_Cuentas_cobrar OK
DEFINE COLUMN Reporte_Cuentas_cobrar Número AS "Número de cliente" WIDTH 7 KEY
DEFINE COLUMN Reporte_Cuentas_cobrar Date AS "Fecha de factura" WIDTH 10
DEFINE COLUMN Reporte_Cuentas_cobrar Due AS "Fecha de vencimiento" WIDTH 10
DEFINE COLUMN Reporte_Cuentas_cobrar Reference AS "Número de referencia" WIDTH 6
DEFINE COLUMN Reporte_Cuentas_cobrar Type AS "Tipo de transacción" WIDTH 5
DEFINE COLUMN Reporte_Cuentas_cobrar Importe AS "Monto de la transacción" WIDTH 12

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 117 de 898


Comandos

Comando DEFINE FIELD


Define un campo de datos físicos en un formato de tabla de ACL.

Sintaxis
DEFINE FIELD nombre_campo tipo_datos posición_inicial longitud < decimales|formato_fecha>
<NDATETIME> <PIC formato> <AS nombre_visible> <WIDTH caracteres> <SUPPRESSS>
< nota_campo>

Parámetros
Nombre Descripción

nombre_campo El nombre del campo.


Nota
Los nombres de los campos están limitados a 256 caracteres en mayús-
culas y minúsculas. El nombre puede incluir un guión bajo ( _ ), pero no
puede incluir ningún otro carácter especial ni espacios. El nombre no
puede comenzar con un número.

tipo_datos El tipo de datos que se debe usar al interpretar los datos. Para ver una lista de los tipos
de datos admitidos, consulte "Tipos de datos admitidos" en la página 123.
Por ejemplo, los números de factura podrían estar almacenados como valores numé-
ricos en el origen de datos. Para tratar estos valores como cadenas en lugar de núme-
ros, puede definir el campo como datos de caracteres.

posición_inicial La posición del byte de inicio para el campo en el archivo de datos de ACL.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

En general, para los datos Unicode, debe especificar una posición de


byte de inicio impar. Si especifica una posición de inicio par, es posible
que los caracteres no se vean correctamente.

longitud La longitud del campo en bytes.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 118 de 898


Comandos

Nombre Descripción

Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

Para los datos Unicode, especifique solo un número par de bytes. Si


especifica un número de bytes impar, es posible que los caracteres no
se vean correctamente.

decimales La cantidad de lugares decimales para los campos numéricos.


opcional

formato_fecha El formato de fecha en los campos de fecha de origen.


opcional Para los campos de fechahora o de hora, utilice PIC formato en su lugar. También
puede utilizar PIC formato para campos de fecha.
Si los datos de origen incluyen separadores, tales como barras inclinadas, el usuario
debe incluir los separadores en el parámetro formato_fecha. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como MM/DD/YYYY. No encierre
formato_fecha entre comillas.

NDATETIME Los valores de fecha, fechahora u hora almacenados en un campo numérico se tratan
como datos de fechahora.
opcional
NDATETIME requiere que también especifique el formato de fechahora de origen
mediante PIC formato.

PIC formato Nota


opcional Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vis-
tas y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exac-
tamente con el formato físico de los datos de origen. Por ejemplo, si
los datos de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista. Si desea que
el nombre visible sea el mismo que el nombre del campo, no use AS.
opcional
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma
(;) entre las palabras si desea que haya un salto de línea en el título de la columna.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 119 de 898


Comandos

Nombre Descripción

WIDTH caracteres El ancho visible del campo en caracteres.


opcional El valor que se especifica controla el ancho visible del campo en las vistas y reportes
de ACL. El ancho visible nunca altera los datos; sin embargo, si es más pequeño que
la longitud del campo, es posible que oculte datos.
El ancho visible no puede ser inferior a la longitud de nombre_campo o de nombre_visi-
ble.
Si omite WIDTH, el ancho visible se ajusta a la longitud del campo en caracteres.
Nota
Los caracteres especificados por WIDTH son caracteres de ancho fijo. A
cada carácter se le asigna la misma cantidad de espacio, sin importar el
ancho del carácter real.
Por valor predeterminado, las vistas de ACL utilizan una fuente de
ancho proporcional que no coincide con el espaciado de caracteres de
ancho fijo.
Si desea que exista una correspondencia de uno a uno entre el valor
WIDTH y los caracteres de la vista, puede cambiar el ajuste Fuente pro-
porcional en el cuadro de diálogo Opciones a una fuente de ancho fijo,
como Courier New.

SUPPRESS Sólo se aplica a campos numéricos.


opcional Suprime el cálculo automático del total de un campo numérico en los reportes de ACL.
El cálculo del total de algunos campos numéricos no es adecuado. Por ejemplo, un
campo de costo unitario, o un campo de tasa de descuento.

nota_campo El texto de una nota de campo que se agrega a la definición del campo en el formato
de tabla.
opcional
nota_campo debe ser el último, después de cualquier otro parámetro obligatorio u
opcional. El texto no puede ser de varias líneas. No es necesario usar comillas.

Ejemplos
Definición de un campo de caracteres
Define un campo de caracteres denominado Desc_del_prod. El título de la columna en la vista es Des-
cripción del producto.

ACL no Unicode
l Comienza en: byte 12 (posición 12 de caracteres)
l Longitud: 24 bytes (24 caracteres)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 120 de 898


Comandos

DEFINE FIELD Desc_del_prod ASCII 12 24 AS "Descripción del producto"

ACL Unicode, datos ASCII (ANSI) extendido


l Comienza en: byte 12
l Longitud: 24 bytes (24 caracteres)

DEFINE FIELD Desc_del_prod ASCII 12 24 AS "Descripción del producto"

ACL Unicode, datos Unicode


l Comienza en: byte 13
l Longitud: 48 bytes (24 caracteres)

DEFINE FIELD Desc_del_prod ASCII 13 48 AS "Descripción del producto"

Definición de un campo numérico


Define un campo numérico denominadoCantDisp. En la vista, la columna utiliza el formato de visualización
especificado y el título es Cantidad disponible.
l Comienza en: byte 61
l Longitud: 10 bytes
l Lugares decimales: ninguno

DEFINE FIELD CantDisp NUMERIC 61 10 0 PIC "(9.999.999)" AS "Cantidad disponible"

Definición de un campo de fechahora a partir de datos de caracteres


Desde los datos de caracteres de origen, los primeros dos ejemplos a continuación definen un campo de
fechahora denominado Fecha_transacción. En los datos de origen, el formato de la fecha es
DD/MM/YYYY. No se especifica ningún título de columna, de manera que el título de la columna utiliza el
nombre del campo por valor predeterminado.
l Comienza en: byte 20
l Longitud: 10 bytes
Aquí, el formato de fecha se especifica utilizando formato_de_fecha:

DEFINE FIELD Fecha_transacción DATETIME 20 10 DD/MM/YYYY

Aquí, el formato de fecha se especifica utilizando PIC formato:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 121 de 898


Comandos

DEFINE FIELD Fecha_transacción DATETIME 20 10 PIC "DD/MM/YYYY"

Al definir campos de fechahora que incluyen datos de la hora, debe usar PIC formato,
El siguiente ejemplo define un campo de fechahora denominado marca_de_hora_correo_electrónico.
En los datos de origen, el formato de fechahora es YYYY/MM/DD hh:mm:ss-hh:mm.
l Comienza en: byte 1
l Longitud: 25 bytes

DEFINE FIELD Marca_de_hora_correo_electrónico DATETIME 1 25


PIC "YYYY/MM/DD hh:mm:ss-hh:mm"

Definición de un campo de fechahora a partir de datos numéricos


Desde los datos numéricos de origen, define un campo fechahora denominado Marca_de_hora_recep-
ción que tiene el formato de fechahora especificado en los datos de origen.
l Comienza en: byte 15
l Longitud: 15 bytes

DEFINE FIELD Marca_de_hora_recepción DATETIME 15 15 PIC "YYYYMMDD.hhmmss"

Definición de un campo de fechahora "numérico"


A partir de los datos numéricos de origen, define un campo numérico denominado Marca_de_hora_
recepción que tiene el formato de fechahora especificado en los datos de origen.
El parámetro NDATETIME permite que ACL trate los valores de fechahora almacenados en el campo
numérico como datos de fechahora.
l Comienza en: byte 15
l Longitud: 15 bytes
l Lugares decimales: 6

DEFINE FIELD Marca_de_hora_recepción PRINT15 15 6 NDATETIME


PIC "YYYYMMDD.hhmmss"

Definición de un campo de datos físicos que lea los datos empaquetados en el mainframe
Puede usar la opción NDATETIME para crear un campo de datos físico que lea los valores de fecha
desde un campo numérico empaquetado.
ACL no puede reconocer una fecha en un número que está comprimido en menos bytes que uno por
dígito y que no muestra un formato de fecha. Como consecuencia, el usuario debe "descomprimir" el
número con NDATETIME para obtener el número completo de dígitos y luego especificar el formato de
fecha con PIC.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 122 de 898


Comandos

Para indicar con precisión qué números representan el día, el mes y el año, especifique el mismo formato
de fecha que se encuentra en el formato del registro empaquetado:

DEFINE FIELD nombre_campo_fecha NUMERIC 1 8 0 NDATETIME PIC "YYYYMMDD"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Sobrescritura de campos en un script


Puede sobrescribir un campo en un formato de tabla definiendo un campo que utiliza el mismo nombre que
el campo existente. Si SET SAFETY está ajustado en ON, aparece un cuadro de diálogo de confirmación
antes de sobrescribir el campo existente.
Para evitar interrumpir un script, puede ajustar SET SAFETY en OFF. El campo existente se sobrescribe
sin confirmación adicional.

Tipos de datos admitidos


Categoría de datos Tipo de datos

Carácter ASCII

CUSTOM

EBCDIC

NOTA

PCASCII

UNICODE

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 123 de 898


Comandos

Categoría de datos Tipo de datos

Numérico ACCPAC

ACL

BASIC

BINARY (binario)

FLOAT (flotante)

HALFBYTE

IBMFLOAT

MICRO

NUMERIC (numérico)

PACKED (compactado)

PRINT

UNISYS

UNSIGNED

VAXFLOAT

ZONED (zonado)

Fechahora DATETIME

Lógico LÓGICOS

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 124 de 898


Comandos

Comando DEFINE FIELD . . . COMPUTED


Define un campo calculado en un formato de tabla de ACL.

Sintaxis
Para definir un campo calculado:

DEFINE FIELD nombre_campo COMPUTED expresión

Para definir un campo calculado con parámetros opcionales:

DEFINE FIELD nombre_campo COMPUTED


<IF prueba> <STATIC> <PIC formato> <AS nombre_visible> <WIDTH caracteres> <SUPPRESS>
< nota_campo>
expresión

Para definir un campo calculado condicional:

DEFINE FIELD nombre_campo COMPUTED


*** BLANK_LINE ***
valor IF condición
< valor IF condición>
<...n>
valor_predeterminado

Para definir un campo calculado condicional con parámetros opcionales:

DEFINE FIELD nombre_campo COMPUTED


<IF prueba> <STATIC> <PIC formato> <AS nombre_visible> <WIDTH caracteres> <SUPPRESS>
< nota_campo>
valor IF condición
< valor IF condición>
<...n>
valor_predeterminado

Nota
La sintaxis en varias líneas se debe estructurar exactamente como se muestra en la sin-
taxis genérica anterior y en los ejemplos que figuran a continuación.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 125 de 898


Comandos

Parámetros
Nombre Descripción

nombre_campo El nombre del campo calculado.


Nota
Los nombres de los campos calculados se limitan a 256 caracteres alfa-
numéricos en mayúscula y minúscula. El nombre puede incluir un guión
bajo ( _ ), pero no puede incluir ningún otro carácter especial ni espa-
cios. El nombre no puede comenzar con un número.

expresión Una expresión válida de ACL que define el valor del campo calculado.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

STATIC El campo muestra el mismo valor en cada línea de la tabla hasta que se encuentra un
valor nuevo.
opcional
Por ejemplo, si hay un campo Apellido en los datos de origen, donde:
o el primer registro muestra el valor "Smith"
o los siguientes cinco registros muestran líneas en blanco
o el séptimo registro muestra el valor "Wong"
En este caso, "Smith" aparece en seis líneas consecutivas y "Wong" aparece en la sép-
tima línea.

PIC formato Nota


opcional Se aplica sólo a campos numéricos.
El formato de visualización de los valores numéricos en las vistas y los reportes de
ACL.
formato debe estar encerrado entre comillas.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista. Si desea que
el nombre visible sea el mismo que el nombre del campo, no use AS.
opcional
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma
(;) entre las palabras si desea que haya un salto de línea en el título de la columna.

WIDTH caracteres El ancho visible del campo en caracteres.


opcional El valor que se especifica controla el ancho visible del campo en las vistas y reportes
de ACL. El ancho visible nunca altera los datos; sin embargo, si es más pequeño que
la longitud del campo, es posible que oculte datos.
El ancho visible no puede ser inferior a la longitud de nombre_campo o de nombre_visi-
ble.
Si omite WIDTH, el ancho visible se ajusta a la longitud del campo en caracteres.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 126 de 898


Comandos

Nombre Descripción

Nota
Los caracteres especificados por WIDTH son caracteres de ancho fijo. A
cada carácter se le asigna la misma cantidad de espacio, sin importar el
ancho del carácter real.
Por valor predeterminado, las vistas de ACL utilizan una fuente de
ancho proporcional que no coincide con el espaciado de caracteres de
ancho fijo.
Si desea que exista una correspondencia de uno a uno entre el valor
WIDTH y los caracteres de la vista, puede cambiar el ajuste Fuente pro-
porcional en el cuadro de diálogo Opciones a una fuente de ancho fijo,
como Courier New.

SUPPRESS Se aplica sólo a campos numéricos.


opcional Suprime el cálculo automático del total de los campos numéricos calculados en los
reportes de ACL.
El cálculo del total de algunos campos numéricos no es adecuado. Por ejemplo, un
campo de costo unitario, o un campo de tasa de descuento.

nota_campo El texto de una nota de campo que se agrega a la definición del campo en el formato
de tabla.
opcional
nota_campo debe ser el último, después de cualquier otro parámetro obligatorio u
opcional. El texto no puede ser de varias líneas. No es necesario usar comillas.

valor IF condición Únicamente campo calculado condicional.


o valor: la expresión o el valor del campo calculado que se debe utilizar si la con-
dición se evalúa como verdadera
o condición: la prueba lógica que se evalúa

valor_predeterminado Únicamente campo calculado condicional.


La expresión o el valor que se debe utilizar en el campo calculado si ninguna de las
condiciones se evalúa como verdadera.

Ejemplos
Definición de un campo calculado
Usted define un campo calculado denominado Valor que es el producto de los campos Costo y Cantidad:

DEFINE FIELD Valor COMPUTED Costo * Cantidad

Definición de un campo calculado con opciones


Usted define un campo calculado llamado Valor_03, con varias opciones definidas. Incluye una condición

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 127 de 898


Comandos

IF que limita los registros que se procesan por el campo calculado:

DEFINE FIELD Valor_03 COMPUTED


IF Clase_producto = "03" PIC "($9.999.999,99)" AS "Valor Clase Producto 3" El valor es el costo por
la cantidad
Costo * Cantidad

Definición de un campo calculado condicional


Usted define un campo calculado condicional llamado Impuestos_ventas que calcula un impuesto a la
venta diferente según el estado en el que se realizó la transacción. Las transacciones que se realizaron
fuera de los tres estados tienen un impuesto a las ventas predeterminado de $0,00.
Nota

La segunda línea se debe dejar en blanco porque no hay parámetros opcionales.

DEFINE FIELD Impuestos_ventas COMPUTED

0,0750 * Monto_venta IF Estado = "CA"


0,0400 * Monto_venta IF Estado = "NY"
0,0625 * Monto_venta IF Estado = "TX"
0,00

Definición de un campo calculado condicional con opciones


Usted define un campo calculado condicional llamado Impuestos_ventas_100 que calcula un impuesto a
la venta diferente según el estado en el que se realizó la transacción. El campo solo calcula el impuesto
sobre importes de $100 o superiores.
Las transacciones que se realizaron fuera de los tres estados tienen un impuesto a las ventas pre-
determinado de $0,00.
Nota

Al especificar parámetros opcionales, no deje ninguna línea en blanco.

DEFINE FIELD Impuesto_ventas_100 COMPUTED


IF Monto_venta >= 100
0,0750 * Monto_venta IF Estado = "CA"
0,0400 * Monto_venta IF Estado = "NY"
0,0625 * Monto_venta IF Estado = "TX"
0,00

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 128 de 898


Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Dos tipos de campos calculados


Existen dos tipos de campos calculados:
l campo calculado estándar
Un campo calculado estándar realiza el mismo cálculo en cada registro de una tabla.
Por ejemplo, en una tabla Inventario, podría crear un campo calculado que multiplique el valor del
campo Costo por el valor del campo Cantidad para calcular el Valor del inventario al costo para cada
registro.
l campo calculado condicional
Un campo calculado condicional puede realizar distintos cálculos en los registros de una tabla, según
un conjunto de condiciones que usted especifica. El cálculo que se realiza en un registro depende de
qué condición satisface el registro.
Por ejemplo, en una tabla Transacciones, podría crear un campo calculado que calcule el impuesto a
las ventas utilizando una alícuota que se ajusta según el estado en el que se lleva a cabo la tran-
sacción. Las condiciones como IF Estado = "CA" e IF Estado = "NY" prueban cada registro para iden-
tificar que alícuota se usa.

Pautas para crear un campo calculado condicional


Nota
Al definir un campo calculado condicional, si no especifica alguno de los parámetros opcio-
nales en la segunda línea, debe dejar la segunda línea en blanco.
Además de un valor predeterminado, los campos calculados condicionales necesitan al menos un valor con-
dicional. Debe utilizar la siguiente sintaxis de varias líneas para definir un campo calculado condicional:
l los parámetros opcionales aparecen en la segunda línea
l si no hay parámetros opcionales, la segunda línea se debe dejar en blanco
l la primera instrucción de condición aparece en la tercera línea
l cada instrucción de condición adicional necesita una línea separada
l el valor predeterminado aparece en la última línea

Sobrescritura de las definiciones de campos


Puede sobrescribir una definición de campo en un formato de tabla definiendo un campo que utiliza el
mismo nombre que el campo existente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 129 de 898


Comandos

Si SET SAFETY está ajustado en ON, ACL muestra un cuadro de diálogo de confirmación antes de
sobrescribir el campo existente. Para evitar interrumpir un script, puede ajustar SET SAFETY en OFF y
ACL sobrescribe el campo existente sin solicitar confirmación.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 130 de 898


Comandos

Comando DEFINE RELATION


Define una relación entre dos tablas de ACL.
Nota
Puede relacionar hasta 18 tablas de ACL y acceder a y analizar datos de cualquier com-
binación de campos de las tablas relacionadas como si existieran en una sola tabla. Debe
especificar un comando DEFINE RELATION independiente para cada par de tablas rela-
cionadas.

Sintaxis
DEFINE RELATION campo_clave WITH nombre_tabla_relacionada INDEX nombre_índice <AS nom-
bre_relación>

Parámetros
Nombre Descripción

campo_clave El campo clave de la tabla padre.


Sólo puede seleccionar un campo clave para cada relación.
Nota
Al crear relaciones entre las tablas padre y las tablas nieto, debe espe-
cificar un nombre de campo clave totalmente calificado con el formato
nombre_tabla.nombre_campo.
En "Relacionar tres tablas" en la página siguiente, vea: Com-
probantes.creado_por

WITH nombre_tabla_rela- El nombre de la tabla relacionada.


cionada

INDEX nombre_índice El nombre del índice para el campo clave de la tabla relacionada.
Debe indexar la tabla relacionada utilizando el campo clave para poder relacionar la
tabla.

AS nombre_relación Un nombre único para la relación.


opcional Por valor predeterminado, se utiliza el nombre de la tabla hija como nombre de la rela-
ción. Si está definiendo relaciones adicionales con la misma tabla hija, debe especificar
un nombre único.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 131 de 898


Comandos

Ejemplos
Relacionar dos tablas
El siguiente ejemplo relaciona la tabla abierta con la tabla Cliente utilizando el campo número de cliente
(NúmCliente) como campo clave:

DEFINE RELATION NúmCliente WITH Cliente INDEX Cliente_en_NúmCliente

Cliente_en_NúmCliente es el nombre del índice de la tabla secundaria en el campo clave. Al relacionar


tablas, es necesario que la tabla secundaria tenga un índice.
Si la tabla secundaria aún no tiene un índice al ejecutar el comando DEFINE RELATION, aparecerá un
mensaje de error y no se realizará la relación.
Consejo
Si define una relación en la interfaz de usuario de ACL, el índice de la tabla secundaria se
crea automáticamente.

Crear un índice de la tabla secundaria antes de relacionar dos tablas


Si es necesario, puede crear un índice de la tabla secundaria inmediatamente antes de relacionar las dos
tablas. El ejemplo a continuación muestra la creación de un índice para la tabla secundaria Cliente antes
de relacionar la tabla Ar con la tabla Cliente.

OPEN Cliente
INDEX ON NúmCliente TO Cliente_por_NúmCliente
OPEN Ar
DEFINE RELATION NúmCliente WITH Cliente INDEX Cliente_en_NúmCliente

Relacionar tres tablas


El siguiente ejemplo relaciona tres tablas en el proyecto de muestra ACL_Rockwood.ACL:
l Elementos_comprobantes: la tabla padre
l Comprobantes: la tabla secundaria
l Empleados: la tabla nieto
Al utilizar la tabla Comprobantes como la tabla intermediaria en la relación, puede relacionar cada ele-
mento del comprobante con el empleado que procesó el elemento.

OPEN Comprobantes
INDEX ON número_comprobante TO "Comprobantes_por_número_comprobante"
OPEN Elementos_comprobantes
DEFINE RELATION número_comprobante WITH Comprobantes INDEX Comprobantes_por_

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 132 de 898


Comandos

número_comprobante
OPEN Empleados
INDEX ON número_de_empleado TO "Empleados_por_número_de_empleado"
OPEN Elementos_comprobantes
DEFINE RELATION Comprobantes.creados_por WITH Empleados INDEX Empleados_por_
número_de_empleado

Explicación de la lógica de la sintaxis


1. Abrir la tabla Comprobantes e indexarla por el campo número_comprobante.
2. Abrir la tabla Elementos_comprobantes y relacionarla con la tabla Comprobantes usando número_
comprobante como campo clave.
3. Abrir la tabla Empleados e indexarla por el campo número_empleado.
4. Abrir la tabla Elementos_comprobantes y relacionarla con la tabla Empleados usando Com-
probantes.creado_por como campo clave.
Nota
Comprobantes.creado_por está disponible como un campo clave en la segunda rela-
ción porque usted ya relacionó Elementos_comprobantes y Comprobantes en la pri-
mera relación.

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 133 de 898


Comandos

Comando DEFINE REPORT


Crea una nueva vista o abre una vista existente.

Sintaxis
DEFINE REPORT nombre_vista

Parámetros
Nombre Descripción

nombre_vista El nombre de una nueva vista o una vista existente.


o nueva vista: crea una vista en blanco con el nombre especificado en la tabla abierta
Los espacios del nombre de la vista se reemplazan por caracteres con guiones
bajos.
o vista existente: abre la vista especificada en la tabla abierta

Ejemplos
Creación de una nueva vista
Usted crea una nueva vista denominada T4_AR_revisión:

DEFINE REPORT T4_AR_revisión

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 134 de 898


Comandos

Comando DEFINE TABLE DB


Define una tabla de servidor de ACL conectándose a una tabla de base de datos con el Conector de AX.
Usted puede conectarse a una base de datos Microsoft SQL Server, Oracle o DB2.

Sintaxis
DEFINE TABLE DB {SOURCE perfil_base_de_datos <PASSWORD núm> <PASSWORD núm> |
SERVER perfil_servidor <PASSWORD núm>} <FORMAT nombre_formato> SCHEMA esquema
<TITLED acl_nombre_tabla> <PRIMARY|SECONDARY> DBTABLE nombre_tabla_db FIELDS
{nombres_campos|ALL} <...n> <WHERE condición> <ORDER nombres_campos>

Parámetros
SOURCE El perfil de base de datos de ACL que se utilizará para acceder al motor de bases de datos.
perfil_
Los perfiles de base de datos incluyen la información necesaria para conectarse al motor de base de
base_de_
datos, que incluye lo siguiente:
datos
o una referencia al perfil de servidor asociado
o el tipo de base de datos
o el nombre de la base de datos
o la información de la cuenta de usuario
Nota
DEFINE TABLE DB soporta la conexión únicamente una de las siguientes bases de
datos: Microsoft SQL Server, Oracle o DB2.

PASSWO- La definición de contraseña que se debe usar.


RD núm
La definición de contraseña hace referencia a una contraseña proporcionada o configurada previamente
opcional con el comando PASSWORD o el comando SET PASSWORD. No se utiliza PASSWORD núm para soli-
citar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o configuraron dos
contraseñas previamente, PASSWORD 2 especifica que se utiliza la contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de contraseñas, consulte
"Comando PASSWORD" en la página 323 y "Comando SET" en la página 381.
Si desea obtener más información sobre la especificación o configuración de contraseñas, consulte
Comando PASSWORD y Comando SET.
La contraseña solo es necesaria si el perfil de base de datos no contiene contraseñas guardadas. Utilice
PASSWORD dos veces después de la palabra clave SOURCE. La primera contraseña lo registra en el
servidor y la segunda lo registra en la base de datos.

SERVER Ya no se utiliza.
perfil_ser-
Antes de la versión 10.0 de ACL, se utilizaba al conectarse a ACL Edición de Servidor para z/OS. A partir

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 135 de 898


Comandos

vidor de la versión 10.0 de ACL, ya no se incluye ACL Edición de Servidor para z/OS.

FORMAT El nombre de una tabla de ACL, o un archivo de formato de tabla (.layout), con un formato de tabla que
nombre_ se desea utilizar.
formato
opcional

SCHEMA El esquema con el que se establecerá conexión. Debe colocar el nombre de esquema entre comillas.
esquema

TITLED El nombre de la tabla de ACL que se creará.


acl_nom-
acl_nombre_tabla debe ser una cadena entre comillas. Si omite TITLED, ACL utiliza el nombre de la
bre_tabla
tabla de base de datos. Cuando accede a más de una tabla a la vez, ACL utiliza el nombre de la primera.
opcional

PRIMARY Utilice la tabla como una tabla primaria o secundaria en los comandos de múltiples archivos. Si no se
| especifica ninguna de las opciones, se utiliza el valor predeterminado PRIMARY.
SECOND-
ARY
opcional

DBTABLE Las tablas de base de datos a las que desea acceder. tabla_base_de_datos debe ser una cadena entre
tabla_ comillas.
base_de_
datos

FIELDS Los campos que se deben incluir en la salida:


nombres_ o FIELDS nombres_campos: usa los campos especificados
campos |
ALL nombres_campos debe ser una cadena entre comillas.
o ALL: usa todos los campos de la tabla
Para usar campos de más de una tabla:
a. Introduzca primero el nombre de la tabla seguido de los campos de esa tabla.
b. Escriba el nombre de la tabla siguiente y, a continuación, los campos de esa tabla.
c. Por cada tabla adicional, repita el paso b.

DBTABLE "DSN1310" FIELDS "Campo_A Campo_B Campo_C" DBTABLE "DSN2516" FIELDS


"Campo_L Campo_M Campo_N"

Nota
Al utilizar el Connector de AX, puede acceder a un número ilimitado de tablas rela-
cionadas, aunque se recomienda que no sean más de cinco. El tiempo de pro-
cesamiento aumenta cuando accede a múltiples tablas.

WHERE Una cláusula WHERE de SQL que limita los datos a aquellos registros que cumplen con la condición
condición especificada.
opcional Debe usar sintaxis SQL válida e introducirla como una cadena entre comillas.
Al unir tablas, ACL muestra la condición de la unión en la cláusula WHERE:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 136 de 898


Comandos

"Tabla_1.Nombre = Tabla_2.Nombre"

ORDER Los campos que utiliza el motor de base de datos para ordenar los registros. nombres_campos debe ser
nombres_ una cadena entre comillas.
campos
El comando tarda más en ejecutarse al ordenar los registros. Utilice ORDER únicamente cuando el
opcional orden sea importante.

Ejemplos
Ejemplo
Usted desea acceder a datos de una base de datos de Microsoft SQL Server a través del Conector de AX.
Para hacerlo, utiliza el comando DEFINE TABLE DB. Incluye el parámetro SOURCE para establecer cone-
xión con el Conector de AX a través de un perfil de base de datos.

DEFINE TABLE DB SOURCE "Auditoría_SQLServer" SCHEMA "HR" TITLED "Nómina" DBTABLE


"RRHH.Empleado" FIELDS "IDempleado" DBTABLE "RRHH.HistorialPagosEmpleado" FIELDS "Fre-
cuencia de pago" WHERE "RRHH.Em-
pleado.IDEmpleado=RRHH.HistorialPagosEmpleado.IDEmpleado"

Observaciones
Cómo funciona
La tabla de servidor ACL se define como una consulta que utiliza un perfil de base de datos para conec-
tarse con una tabla de base de datos.

Supresión de la parte de la hora en los valores de fechahora


Anteceda el comando DEFINE TABLE DB con el comando SET SUPPRESSTIME ON para suprimir la
parte de la hora de los valores de fechahora.
El uso de SET SUPPRESSTIME ON es para la pre-versión-10.0 de los scripts de ACL que asumen que se
truncará la porción hora de los valores de fechahora. Si no se agrega SET SUPPRESSTIME ON a estos
scripts, no se pueden ejecutar en la versión de ACL que tiene habilitada la fechahora.
Para obtener más información, consulte la sección "SET SUPPRESSTIME" en "Comando SET" en la
página 381.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 137 de 898


Comandos

Comando DEFINE VIEW


Define una nueva vista o sobrescribe una vista existente.

Sintaxis
DEFINE VIEW nombre_vista <RLINES n> <ALL> <SUPPRESS> <SUMMARIZED> <IF prueba>
<WHILE test> <HEADER texto_encabezado> <FOOTER texto_pie_de_página> <TO nombre_de_
archivo_del_reporte <HTML>> <OK>

Parámetros
Nombre Descripción

nombre_vista El nombre de la vista que se creará o sobrescribirá.


Nota:
Los nombres de las vistas tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

RLINES n El espaciado entre líneas para los registros detallados en las vistas y los reportes.
Como opción predeterminada, las líneas de detalles tienen un espaciado simple.
opcional

ALL Todos los campos del formato de tabla ACL activo se agregan a la vista.
opcional

SUPPRESS Suprime las líneas de detalles en blanco en los reportes generados a partir de la vista.
Cuando se genere el reporte, las líneas de detalles en blanco se omitirán de la salida.
opcional
Esta opción se aplica a reportes basados en vistas multilínea.

SUMMARIZED Especifica que los reportes generados a partir de la vista deben incluir subtotales y tota-
les, pero no deben incluir las líneas de detalles.
opcional
Los subtotales se generan sobre la base de los campos de corte definidos en la vista.
Si no se selecciona esta opción, el reporte incluye las líneas de detalle, así como tam-
bién los subtotales para cada uno de los campos de corte especificados.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 138 de 898


Comandos

Nombre Descripción

opcional al final de la tabla.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

TO nombre_de_archivo_ El tipo y nombre de archivo de los reportes creados a partir de esta vista.
del_reporte HTML
Utilice la palabra clave HTML para guardar los reportes generados a partir de esta vista
opcional como archivos HTML (.htm). Como opción predeterminada, los reportes se generan
como archivos de texto ASCII.

Aceptar Elimina o sobrescribe los elementos sin pedirle que confirme la acción.
opcional

Ejemplos
Creación de una vista
Usted abre la tabla Ar y crea una vista llamada AR_Reporte, que incluye todos los campos del formato de
tabla:

OPEN Cuentas_por_cobrar
DEFINE VIEW AR_Reporte HEADER "Reporte de AR" ALL OK

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 139 de 898


Comandos

Comando DELETE
Elimina un elemento del proyecto de ACL, un campo de un formato de tabla, una variable, una o más
entradas del historial, una relación entre tablas o un archivo de una carpeta de Windows. También quita
una columna de una vista

Sintaxis
Propósito Sintaxis

Para eliminar un elemento de proyecto de ACL


DELETE tipo_elemento nombre_del_elemento <OK>

Para eliminar un campo de un formato de tabla


DELETE nombre_campo <OK>

Para quitar una columna de una vista


DELETE COLUMN nombre_vista nombre_campo <ALL>
<OK>

Para eliminar una variable o todas las variables


DELETE {nombre_variable|ALL} <OK>

Para eliminar el historial de la tabla de ACL


actual DELETE HISTORY <retener_entradas_historial> <OK>

Para eliminar una relación entre dos tablas


DELETE RELATION <nombre_tabla_hijo|nombre_relación>
<OK>

Para eliminar un archivo


DELETE nombre_archivo <OK>

Para eliminar de la tabla abierta todas las notas


de registro y el campo Notaderegistro gene- DELETE NOTES <OK>
rado automáticamente

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 140 de 898


Comandos

Parámetros
Nombre Descripción

tipo_elemento nombre_ El tipo y el nombre del elemento que se debe eliminar.


del_elemento
Especifique uno de los siguientes tipos de elemento:
o FOLDER: la carpeta de proyecto especificada y todo su contenido
o FORMAT: el formato de tabla especificado, todas las vistas y los índices y relaciones
asociados
El resto de los formatos de tabla para la tabla asociada se conservan.
El archivo de datos (.fil) asociado con el formato de tabla no se elimina a menos que
se seleccione la opción Eliminar archivo de datos con tabla en la ficha Tabla del cua-
dro de diálogo Opciones (Herramientas > Opciones).
También puede utilizar el comando SET DELETE_FILE {ON|OFF} en un script o en la
línea de comandos para activar o desactivar esta opción. Si desea obtener más infor-
mación, consulte "Comando SET" en la página 381.
Precaución
Tenga cuidado al activar la opción Eliminar Archivo de datos con
tabla. Es posible que se elimine un archivo de datos original junto con
el formato de tabla.
Los archivos de datos se eliminan directamente. No se envían a la
Papelera de reciclaje de Windows.
o REPORT: la vista especificada
No puede eliminar una vista si está activa actualmente.
o COLUMN: la columna especificada
o SCRIPT (o BATCH): el script especificado
o WORKSPACE: el área de trabajo especificada
o INDEX: el índice especificado
o NOTES: todas las notas de registro de la tabla abierta y el campo Notaderegistro del
formato de tabla

nombre_campo ALL Eliminar un campo


El nombre del campo que se debe eliminar del formato de tabla de ACL actual.
Puede eliminar un campo de un formato de tabla incluso si el campo está incluido en la
vista actual.
Nota
No es posible eliminar un campo al que hace referencia un campo cal-
culado, a menos que primero elimine el campo calculado.

Quitar una columna


El nombre de la columna que se debe quitar de la vista especificada.
Nota
Use el nombre físico y no el nombre visible de la columna.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 141 de 898


Comandos

Nombre Descripción

o ALL incluido: quita todas las instancias de la columna en la vista


o ALL omitido: quita la primera instancia (ubicada más a la izquierda) de la columna en
la vista

nombre_vista El nombre de la vista de la que se debe eliminar una columna.

nombre_variable | ALL El nombre de la variable que se debe eliminar. Utilice ALL para eliminar todas las varia-
bles.
Si especifica ALL, se eliminan todas las instancias de los siguientes tipos de variables
del proyecto:
o variables del sistema
o variables definidas por el usuario temporales
o variables definidas por el usuario permanentes
Nota
No es posible eliminar una variable a la que hace referencia un campo
calculado, a menos que primero elimine ese campo calculado.

HISTORY retener_entra- Elimina todas las entradas del historial de la tabla excepto el número de entradas más
das_historial recientes especificado por retener_entradas_historial.
Omita retener_entradas_historial para eliminar todas las entradas.

RELATION nombre_tabla_ Elimina cualquier relación que no tenga relaciones dependientes ni campos rela-
hijo | nombre_relación cionados a lo que se haga referencia en la vista activa o en un campo calculado activo.
Utilice las opciones para especificar qué relación eliminar:
o nombre_tabla_hijo: utilice esta opción cuando la relación no haya recibido un nom-
bre específico (nombre predeterminado al crear una relación)
o nombre_relación: utilice esta opción cuando se haya asignado un nombre específico
a la relación al crearla. De lo contrario, use nombre_tabla_hijo
Si no utiliza ninguna de las opciones, se elimina la última relación que se definió.

nombre_archivo El nombre del archivo físico que se debe eliminar.


Puede especificar una ruta de acceso absoluta o relativa a un archivo que desee eli-
minar. Si la ruta de acceso tiene espacios, escríbala entre comillas dobles.

Aceptar Elimina los elementos sin presentar un cuadro de diálogo de confirmación.


opcional

Ejemplos
Eliminación de un campo de fecha
Elimina el campo Fecha del formato de tabla asociado con la tabla Ar:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 142 de 898


Comandos

OPEN Cuentas_por_cobrar
DELETE Fecha

Eliminación de varias columnas de una vista


Usted elimina dos columnas de la vista AR_Reporte asociada con la tabla Ar. Especifica OK para los dos
comandos DELETE para que no se muestre ningún mensaje de confirmación cuando se ejecute el script:

OPEN Cuentas_por_cobrar
DELETE COLUMN AR_Reporte Fecha OK
DELETE COLUMN AR_Reporte Fecha_de_factura OK

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 143 de 898


Comandos

Comando DIALOG
Crea un cuadro de diálogo personalizado que les pide interactivamente a los usuarios uno o más valores
de entrada para el script. Cada valor de entrada se almacena en una variable con nombre.
Nota
No es seguro usar el comando DIALOG para introducir contraseñas. Por el contrario,
debe usar "Comando PASSWORD" en la página 323.
El comando DIALOG no se admite en los estudios analíticos del Servidor de AX.
Puede crear un cuadro de diálogo interactivo básico con el "Comando ACCEPT" en la
página 54.
Consejo
La manera más sencilla de crear cuadros de diálogo personalizados es utilizar el Gene-
rador de diálogos . Si desea obtener más información, consulte Crear cuadros de diálogo
personalizados.

Sintaxis
DIALOG (DIALOG TITLE texto_título WIDTH píxeles HEIGHT píxeles)(BUTTONSET TITLE "&Acep-
tar;&Cancelar" AT pos_x pos_y <WIDTH píxeles> <HEIGHT píxeles> DEFAULT núm_elemento
<HORZ>)<[sintaxis_etiqueta]|[sintaxis_cuadro_de_texto]|[sintaxis_casilla_de_verificación]|[sintaxis_
botón_de_radio]|[sintaxis_lista_desplegable]|[sintaxis_lista_elementos_de_proyecto]><...n>

sintaxis_etiqueta ::=
(TEXT TITLE texto_título AT pos_x pos_y <WIDTH píxeles> <HEIGHT píxeles>
<CENTER|RIGHT>)

sintaxis_cuadro_de_texto ::=
(EDIT TO nombre_var AT pos_x pos_y <WIDTH píxeles> <HEIGHT píxeles> <DEFAULT cadena>)

sintaxis_casilla_de_verificación ::=
(CHECKBOX TITLE texto_título TO nombre_var AT pos_x pos_y <WIDTH píxeles> <HEIGHT píxe-
les> <CHECKED>)

sintaxis_botón_de_radio ::=
(RADIOBUTTON TITLE lista_valores TO nombre_var AT pos_x pos_y <WIDTH píxeles> <HEIGHT
píxeles> <DEFAULT núm_elemento> <HORZ>)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 144 de 898


Comandos

sintaxis_lista_desplegable ::=
(DROPDOWN TITLE lista_valores TO nombre_var AT pos_x pos_y <WIDTH píxeles> <HEIGHT píxe-
les> <DEFAULT núm_elemento>)

sintaxis_lista_elementos_de_proyecto ::=
(ITEM TITLE categoría_elemento_de_proyecto TO nombre_var AT pos_x pos_y <WIDTH píxeles>
<HEIGHT píxeles> <DEFAULT cadena>)

Parámetros
Parámetros generales
Nombre Descripción

DIALOG TITLE texto_título Crea el cuadro de diálogo principal y el título del cuadro de diálogo.
texto_título se debe especificar como una cadena entre comillas.

BUTTONSET TITLE Las etiquetas para los botones Aceptar y Cancelar del cuadro de diálogo.
"&Aceptar;&Cancelar"
Normalmente los valores no se deben editar, pero si los edita, debe asegurarse de que
el valor positivo esté antes que el valor negativo. Por ejemplo: "&Sí;&No"

WIDTH píxeles El ancho del control individual o el ancho del cuadro de diálogo si se especifica para el
control DIALOG.
El valor se especifica en píxeles. Si no se especifica ningún valor para un control, el
ancho se calcula según el valor más largo que contenga el control.

HEIGHT píxeles La altura del control individual o la altura del cuadro de diálogo si se especifica para el
control DIALOG.
El valor se especifica en píxeles.

AT pos_x pos_y La ubicación de la esquina superior izquierda del control en el cuadro de diálogo per-
sonalizado:
o La pos_x es la distancia horizontal en píxeles desde el lado izquierdo del cuadro de
diálogo
o La pos_y es la distancia vertical en píxeles desde la parte superior del cuadro de diá-
logo

DEFAULT núm_elemento El valor numérico que corresponde al valor BUTTONSET que desea seleccionar como
valor predeterminado.
Por ejemplo, si los valores de BUTTONSET son "&Aceptar;&Cancelar", especifique
DEFAULT 1 para seleccionar Aceptar por valor predeterminado.

HORZ Muestra los valores del control BUTTONSET horizontalmente. Como opción pre-
determinada, los valores se muestran verticalmente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 145 de 898


Comandos

Nombre Descripción

opcional

Nota
Para la mayoría de los tipos de control, el comando DIALOG crea una variable para alma-
cenar la información que introduce el usuario. No puede utilizar caracteres que no per-
tenezcan al alfabeto inglés, tales como é, en los nombres de variables que se utilizarán
para la sustitución de variables. Si utiliza este tipo de caracteres en los nombres de las
variables, el script no se podrá ejecutar.
Por valor predeterminado, algunas variables de DIALOG se crean como variables de
caracteres. Si utiliza una variable de caracteres para almacenar valores numéricos o de
fechahora, debe convertir la variable de caracteres al tipo de datos necesario en un pro-
cesamiento posterior dentro de un script. Si desea obtener más información, consulte
"Tipo de datos de entrada" en la página 151.

Parámetros de la etiqueta
Nombre Descripción

TEXT Crea una etiqueta de texto para identificar, notificar o dar instrucciones.

TITLE texto_título La etiqueta del control.


texto_título se debe especificar como una cadena entre comillas.

CENTER | RIGHT La alineación del texto en el control.


opcional Si omite CENTER o RIGHT, se usa la alineación izquierda por valor predeterminado.

Parámetros del cuadro de texto


Nombre Descripción

EDIT Crea un cuadro de texto para las entradas de los usuarios.

TO nombre_var El nombre de la variable de caracteres que almacena el valor del control especificado
por el usuario.
Si ya existe la variable, se asigna el valor especificado. Si no existe la variable, se la
crea y se le asigna el valor especificado.

DEFAULT cadena La cadena de texto predeterminada que se debe mostrar en el control.


opcional cadena se debe especificar como una cadena entre comillas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 146 de 898


Comandos

Parámetros de la casilla de verificación


Nombre Descripción

CHECKBOX Crea una casilla de verificación para presentar una opción al usuario.

TITLE texto_título La etiqueta del control.


texto_título se debe especificar como una cadena entre comillas.

TO nombre_var El nombre de la variable lógica que almacena el valor Verdadero o Falso especificado
por el usuario.
Si ya existe la variable, se asigna el valor especificado. Si no existe la variable, se la
crea y se le asigna el valor especificado.

CHECKED Ajusta el control para que esté seleccionado como opción predeterminada.
opcional

Parámetros del botón de radio


Nombre Descripción

RADIOBUTTON Crea botones de radio para presentar opciones recíprocamente excluyentes al usuario.

TITLE lista_valores La lista de valores que se muestran para el control.


Los valores se deben especificar como una cadena entre comillas. Separe cada valor
con un punto y coma (;).

TO nombre_var El nombre de la variable numérica que almacena la posición numérica del valor del
botón de radio seleccionado por el usuario.
Si ya existe la variable, se asigna el valor especificado. Si no existe la variable, se la
crea y se le asigna el valor especificado.

DEFAULT núm_elemento El valor numérico que corresponde al elemento de la lista que desea seleccionar como
valor predeterminado.
opcional
Por ejemplo, si la lista_valores es "Rojo;Verde;Azul", especifique DEFAULT 2 para selec-
cionar Verde como opción predeterminada.

HORZ Muestra los valores del control horizontalmente. Como opción predeterminada, los valo-
res se muestran verticalmente.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 147 de 898


Comandos

Parámetros de la lista desplegable


Nombre Descripción

DROPDOWN Crea una lista desplegable para presentar una lista de opciones al usuario.

TITLE lista_valores La lista de valores que se muestran para el control.


Los valores se deben especificar como una cadena entre comillas. Separe cada valor
con un punto y coma (;).

TO nombre_var El nombre de la variable de caracteres que almacena el valor de la lista desplegable


seleccionado por el usuario.
Si ya existe la variable, se asigna el valor especificado. Si no existe la variable, se la
crea y se le asigna el valor especificado.

DEFAULT núm_elemento El valor numérico que corresponde al elemento de la lista que desea seleccionar como
valor predeterminado.
opcional
Por ejemplo, si la lista_valores es "Rojo;Verde;Azul", especifique DEFAULT 2 para
seleccionar Verde como opción predeterminada cuando se muestre la lista des-
plegable.

Parámetros de la lista de elementos del proyecto


Nombre Descripción

ITEM Crea una lista de elementos del proyecto para presentar una lista de elementos de pro-
yecto de ACL, tales como campos, al usuario

TITLE categoría_ele- La categoría del elemento del proyecto que se debe incluir en el control.
mento_de_proyecto
Puede especificar una o más categorías. El usuario puede seleccionar un solo valor en
la lista de elementos del proyecto.
Encierre la categoría_elemento_de_proyecto entre comillas, sin espacios ni pun-
tuación entre las categorías.
Para conocer los códigos que se utilizan para especificar las categorías, consulte "Códi-
gos de las categorías de elementos del proyecto" en la página 150.
Nota
No mezcle categorías diferentes en el mismo control ITEM, a menos que
tenga un motivo para hacerlo. Por ejemplo, no mezcle tablas y campos.
La lista de elementos del proyecto resultante podría ser confusa para el
usuario.

TO nombre_var El nombre de la variable de caracteres que almacena el nombre del elemento del pro-
yecto seleccionado por el usuario.
Si ya existe la variable, se asigna el valor especificado. Si no existe la variable, se la
crea y se le asigna el valor especificado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 148 de 898


Comandos

Nombre Descripción

DEFAULT cadena El nombre exacto del elemento del proyecto que usted desea seleccionar como valor
predeterminado.
opcional
cadena se debe especificar como una cadena entre comillas.

Ejemplos
Solicitar una tabla y un script al usuario
En su script, necesita solicitarle al usuario que seleccione el script y la tabla de ACL que se deben usar para
ejecutar un análisis.
Usted especifica que la tabla Inventario_Metaphor_2012 del proyecto ACL_Demo.acl se selecciona de
manera predeterminada como la tabla de ACL, pero el usuario puede seleccionar cualquier tabla del pro-
yecto.
El script que se ejecutará también se debe seleccionar en la lista de scripts del proyecto de ACL:

DIALOG (DIALOG TITLE "Análisis de inventario" WIDTH 500 HEIGHT 200 ) (BUTTONSET TITLE
"&Aceptar;&Cancelar" AT 370 12 DEFAULT 1 ) (TEXT TITLE "Escoja los elementos del proyecto de
ACL que se analizarán." AT 50 16 ) (TEXT TITLE "Tabla:" AT 50 50 ) (ITEM TITLE "f" TO "v_tabla" AT
50 70 DEFAULT "Inventario_Metaphor_2012" ) (TEXT TITLE "Script:" AT 230 50 ) (ITEM TITLE "b"
TO "v_script" AT 230 70 )

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Interactividad
Use DIALOG para crear un script interactivo. Cuando se procesa el comando DIALOG, el script se detiene y
aparece un cuadro de diálogo que le pide al usuario información de entrada que ACL utilizará en el pro-
cesamiento subsiguiente.
Puede crear cuadros de diálogo separados que soliciten información de a un elemento por vez o crear un
cuadro de diálogo que solicite múltiples elementos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 149 de 898


Comandos

Comparación entre ACCEPT y DIALOG


El comando ACCEPT le permite crear un cuadro de diálogo interactivo básico que puede tener uno o más
de los siguientes tipos de controles:
l cuadro de texto
l lista de elementos del proyecto
Para una capacidad de interacción básica, tal vez solo necesite ACCEPT. Si desea obtener más infor-
mación, consulte "Comando ACCEPT" en la página 54.

Códigos de las categorías de elementos del proyecto


Utilice los siguientes códigos para especificar la categoría del elemento del proyecto que se debe mostrar
en una lista de elementos del proyecto.

Categorías de proyectos

Código Categoría

f Tablas

b Scripts

i Índices

r Vistas y reportes

w Áreas_de_trabajo

Categorías de campos

Código Categoría

C Campos de caracteres

N Campos numéricos

D Campos de fechahora

L Campos lógicos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 150 de 898


Comandos

Categorías de variables

Código Categoría

c Variables de caracteres

n Variables numéricas

d Variables de fechahora

l Variables lógicas

Tipo de datos de entrada


Algunos de los controles del comando DIALOG almacenan la información de entrada del usuario en varia-
bles de caracteres. Si necesita información numérica o de fechahora, puede utilizar las funciones VALUE( )
o CTOD( ) para convertir el contenido de una variable de caracteres en un valor numérico o de fechahora:

SET FILTER TO BETWEEN(%v_campo_fecha%, CTOD(%v_fecha_inicio%), CTOD(%v_fecha_fina-


lización%))

En el ejemplo, las fechas de inicio y finalización de este filtro se almacenan como valores de caracteres. Se
deben convertir en valores de fecha para ser utilizadas en un campo de fecha con el tipo de datos
Fechahora.
Al encerrar el nombre de la variable entre signos de porcentaje (%), se reemplaza el nombre de la variable
por los valores de caracteres de la variable. A continuación, la función CTOD( ) convierte el valor de carac-
teres en un valor de fecha.

Posición del comando DIALOG


Es recomendable, de ser posible, colocar todos los comandos DIALOG al inicio de un script. Si solicita
todas las entradas al comienzo, el script se puede ejecutar sin obstáculos una vez que el usuario ingresa la
información necesaria.
Nota
No puede usar el comando DIALOG dentro del comando GROUP.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 151 de 898


Comandos

Comando DIRECTORY
Genera una lista de archivos y carpetas en el directorio especificado.

Sintaxis
DIRECTORY < especificación_archivo> <SUPPRESS> <SUBDIRECTORY> <APPEND> <TO
nombre_tabla|nombre_archivo>

Parámetros
Nombre Descripción

especificación_archivo Los archivos o la carpeta de Windows que se deben incluir en la lista y para los que se
debe mostrar información.
opcional
Puede utilizar el carácter comodín asterisco (*) para listar todos los archivos con una
extensión en particular, todos los archivos que comiencen con una cadena en par-
ticular o todos los archivos de una carpeta. Por ejemplo:
o *.fil para listar todos los archivos con la extensión .fil (archivos de datos de ACL).
o Inv*.* para listar todos los archivos que comiencen con "Inv" independientemente
de la extensión de archivo que tengan
o Resultados\* o Resultados\*.* para listar todos los archivos de la carpeta
Resultados.
Para limitar los archivos que se listan a una carpeta en particular, puede especificar
una ruta relativa a la carpeta del proyecto de ACL o especificar una ruta completa. Por
ejemplo:
o Resultados\*.* muestra el contenido de la subcarpeta Resultados de la carpeta
de proyecto de ACL
o C:\Datos de ACL\Resultados\*.* muestra el contenido de la carpeta espe-
cificada
Nota
El carácter comodín no se puede usar en los niveles intermedios de una
ruta de archivo especificada. Solo se puede usar en el nivel final de la
ruta, tal como se mostró más atrás.
Los nombres de rutas o de archivos que contienen espacios deben
incluirse entre comillas dobles.
Si utiliza especificación_archivo, debe colocarlo antes de cualquier otro parámetro. Si
especificación_archivo aparece en otra posición, el comando DIRECTORY no se pro-
cesa y se genera un error.
Si se omite especificación_archivo, se listan todos los archivos de la carpeta que con-
tiene el proyecto de ACL. No puede utilizar ninguno de los otros parámetros si se omite
especificación_archivo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 152 de 898


Comandos

Nombre Descripción

SUPPRESS Suprime la información de la ruta en la salida y deja solo los nombres de los archivos y
las propiedades.
opcional

SUBDIRECTORY Incluye el contenido de las subcarpetas en el listado de directorios.


opcional Por ejemplo, si especificación_archivo especifica Resultados\*.fil, se buscarán los
archivos .fil. en la carpeta Resultados y en todas las subcarpetas incluidas en la car-
peta Resultados.
Según la cantidad de subcarpetas y archivos que se deban incluir en la lista, el uso de
SUBDIRECTORY puede provocar una demora mientras se realiza la búsqueda en las
subcarpetas. ACL muestra un cuadro de diálogo que indica el progreso del comando.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

TO nombre_tabla | nom- El lugar al que se deben enviar los resultados del comando:
bre_archivo o nombre_tabla: guarda los resultados en una tabla de ACL
opcional
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 153 de 898


Comandos

Nombre Descripción

Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
Si omite TO, la lista de directorios aparece en el área de visualización de ACL.

Ejemplos
Diferentes opciones para hacer listas de archivos
La capacidad de hacer listas de archivos resulta útil para la investigación ad hoc y para incorporar en la
creación de scripts.
A continuación, se incluyen varias opciones diferentes para enumerar archivos con el comando
DIRECTORY.

Hacer una lista de todos los archivos


Lista todos los archivos en la carpeta que contiene el proyecto de ACL:

DIRECTORY

Hacer una lista de todos los archivos de un tipo específico


Lista todos los archivos .fil (archivos de datos de ACL) en la carpeta que contiene el proyecto de ACL:

DIRECTORY *.fil

Usar comodines para hacer una lista de los archivos


Lista todos los nombres de archivo que comienzan con “Inv” en la carpeta que contiene el proyecto de
ACL:

DIRECTORY Inv*.*

Hacer una lista de todos los archivos de una subcarpeta dentro de la carpeta del proyecto de ACL
Lista todos los archivos de la subcarpeta Resultados dentro de la carpeta que contiene el proyecto de
ACL:

DIRECTORY "Resultados\*"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 154 de 898


Comandos

Hacer una lista de todos los archivos de una carpeta especificada


Hace una lista de todos los archivos de la subcarpeta Resultados:

DIRECTORY "C:\Datos de ACL\Resultados\*"

Hacer una lista de todos los archivos de un tipo específico en una ubicación especificada
Lista todos los archivos .fil (archivos de datos de ACL) en la carpeta especificada y en todas las sub-
carpetas:

DIRECTORY "C:\Datos de ACL\Resultados\*.fil" SUBDIRECTORY

Hacer una lista de todos los archivos de una carpeta especificada y enviar la lista a una tabla de ACL
Lista todos los archivos de la carpeta Resultados y envía la lista a una tabla de ACL en la carpeta que
contiene el proyecto de ACL:

DIRECTORY "C:\Datos de ACL\Resultados\*" TO Contenido_Carpeta_Resultados.fil

La nueva tabla Contenido_Carpeta_Resultados se agrega al proyecto abierto.

Hacer una lista de todos los archivos de una carpeta y enviar la lista a una tabla de ACL de otra carpeta
Lista todos los archivos de la carpeta Datos de ACL\Resultados y envía la lista a una tabla de ACL
en la carpeta GL Audit 2014\Resultados:

DIRECTORY "C:\Datos de ACL\Resultados\*" TO "C:\Proyectos de ACL \GL Audit 2014\Re-


sultados\Contenido_Carpeta_Resultados.fil"

La nueva tabla Contenido_Carpeta_Resultados se agrega al proyecto abierto. El archivo de datos


asociado (Contenido_Carpeta_Resultados.fil) se crea en la carpeta de salida especificada, que
puede o no ser la carpeta que contiene el proyecto de ACL.

Observaciones
Propiedades mostradas por DIRECTORY
El comando DIRECTORY es similar al comando DIR en Windows. Además de listar los archivos y sub-
carpetas en una carpeta, el comando DIRECTORY también muestra las siguientes propiedades de archivo
y carpeta:

o Tamaño del archivo o Fecha de creación o Fecha de acceso o Fecha de modificación


o Atributos o Hora de creación o Hora de acceso o Hora de modificación

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 155 de 898


Comandos

o la cantidad total de
archivos y carpetas que
coinciden con los cri-
terios especificados

Usos de DIRECTORY en un script


Cuando se utiliza en un script, el comando DIRECTORY permite examinar el sistema de archivos. Por
ejemplo, puede utilizar DIRECTORY junto con otros comandos para detectar la presencia o ausencia de
archivos, comprobar el tamaño de un archivo o tomar decisiones sobre la base de otras propiedades del
archivo.

Salida de los resultados de DIRECTORY


Puede ejecutar el comando desde la línea de comandos para mostrar una lista de directorios en la pan-
talla o guardar el listado en una tabla de ACL o archivo .txt.

Cómo abrir resultados de DIRECTORY basados en una tabla


El comando DIRECTORY no incluye el parámetro OPEN. Si utiliza el comando en un script y envía los
resultados a una tabla de ACL y desea abrir la tabla de resultados, coloque el comando OPEN a con-
tinuación del comando DIRECTORY. Por ejemplo:

DIRECTORY "C:\Datos de ACL\Resultados\*" TO Contenido_Carpeta_Resultados.fil


OPEN Contenido_Carpeta_Resultados

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 156 de 898


Comandos

Comando DISPLAY
Muestra información acerca de proyectos de ACL o de la computadora en la que se ejecuta ACL. También
puede mostrar el resultado de una expresión o la salida de una función.

Sintaxis y parámetros
Sintaxis Propósito

Muestra las definiciones de los campos, y todas las tablas hijas rela-
DISPLAY cionadas, de la tabla de ACL actualmente activa

Muestra una lista de archivos de proyecto y tablas de ACL abiertos.


DISPLAY OPEN
o Tablas de ACL: muestra el nombre del archivo de datos de origen, no
el nombre del formato de tabla.
o modo de múltiples tablas: el archivo de datos de origen identificado
como PRIMARY se asocia con la tabla activa en ese momento.
o tablas relacionadas: si la tabla principal está abierta, muestra el
archivo de datos de origen tanto para las tablas principal como secun-
darias, incluso si la tabla secundaria no está abierta en la ficha Vista.

Muestra el nombre y el formato de tabla de la tabla primaria o secundaria


DISPLAY
{<PRIMARY>|SECONDARY} o PRIMARY (o ninguna palabra clave especificada): muestra infor-
mación de la tabla actualmente activa.
o SECONDARY: muestra información de la tabla secundaria.
En el modo de múltiples tablas, SECONDARY se refiere a la tabla
secundaria asociada a la tabla activa en ese momento.
La información que se muestra incluye lo siguiente:
o el nombre del formato de tabla
o el nombre del archivo de datos de origen
o todas las relaciones entre la tabla y otras tablas
o la información de definición de campo del formato de tabla

Muestra el historial de tabla de la tabla de ACL actualmente activa.


DISPLAY HISTORY
Nota
Una tabla puede tener un historial de tabla asociado o no.

Muestra la información de relaciones de la tabla de ACL actualmente


DISPLAY RELATION activa:
o los nombres de todas las tablas hijas
o nombres de los campos clave
o nombres de los índices

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 157 de 898


Comandos

Sintaxis Propósito

Muestra el valor de una variable individual o de todas las variables.


DISPLAY {nombre_
variable|VARIABLES} o nombre_variable: el nombre de una variable individual de la cual se
debe mostrar el valor.
o VARIABLES: muestra los valores de todas las variables del sistema y
definidas por el usuario, y la memoria restante disponible para alma-
cenar variables.

Muestra información sobre la versión de ACL instalada, utilizando el


DISPLAY VERSION siguiente formato:
o Versión: número de versión principal.número de versión secundaria
o Parche: número de parche
o Tipo: edición de ACL 000 (no Unicode) o 001 (Unicode)
o Build: número de build del software

Muestra la fecha y hora del sistema operativo actual.


DISPLAY {DATE|TIME}
DATE | TIME: especifique cualquiera de las palabras clave. Las dos pala-
bras clave hacen lo mismo.

Muestra la cantidad de memoria física (RAM) disponible para ser utilizada


DISPLAY {FREE|SPACE} por ACL.
La cantidad que se muestra no incluye la memoria reservada para varia-
bles. Por valor predeterminado, ACL reserva 60 KB de memoria física para
almacenar variables, pero la cantidad aumenta automáticamente según
sea necesario.
DATE | TIME: especifique cualquiera de las palabras clave. Las dos pala-
bras clave hacen lo mismo.

Muestra el resultado de una expresión.


DISPLAY expresión
expresión: la expresión para la cual se debe mostrar el resultado.

Muestra la salida de una función.


DISPLAY función
función: la función para la cual se debe mostrar la salida.

Ejemplos
Muestra el formato de una tabla de ACL
Mostrar el formato de una tabla puede resultar útil en varias circunstancias. Por ejemplo, es posible que
desee combinar dos o más tablas y necesite examinar las longitudes de los campos y los tipos de datos.
El ejemplo que se incluye a continuación muestra el formato de la tabla Ap_Trans:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 158 de 898


Comandos

OPEN Trans_Cp
DISPLAY

El comando DISPLAY envía a la pantalla la salida que se muestra a continuación.


Nota
Si introduce DISPLAY directamente en la línea de comandos de ACL, la salida aparece de
manera inmediata.
Si ejecuta DISPLAY en un script, haga doble clic en la entrada DISPLAY correspondiente
del log de comandos para mostrar la salida.

Salida a la pantalla
Relación
'Proveedor' relacionado por 'Núm_proveedor' con el índice 'Proveedor_en_Núm_proveedor'
Archivo
'Ap_Trans.fil' (formato 'Ap_Trans') es su archivo PRIMARY.
La longitud de registros es 59
Campos

Nombre Tipo Inicio Longitud Decimales Explicación del campo

Núm_pro- ASCII 1 5 AS "Número;Proveedor" WIDTH 7


veedor

Núm_factura ASCII 6 15 AS "Número;Factura"

Fecha_fac- DATETIME 21 8 PICTURE "MM/DD/YY" AS "Fecha;Factura"


tura WIDTH 8

Importe_fac- NUMERIC (numé- 29 12 2 PICTURE "(9.999.999,99)" AS "Impor-


tura rico) te;Factura" WIDTH 12

Númprod ASCII 41 9 AS "Número;Producto"

Cantidad MICRO 50 4 0 PICTURE "(9.999.999)"

Costo_uni- NUMERIC (numé- 54 6 2 PICTURE "(9.999.999)" AS "Costo;Unitario"


tario rico) SUPPRESS

Muestra los valores de todas las variables de un proyecto de ACL


DISPLAY VARIABLES genera la misma información que aparece en la ficha Variables en el Navegador.
Una de las ventajas de usar DISPLAY VARIABLES es que se puede copiar y pegar la información visible.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 159 de 898


Comandos

El ejemplo que se incluye a continuación crea dos variables definidas por el usuario y dos variables del sis-
tema, y después muestra los valores de las variables:

ASSIGN v_nombre_tabla = "Trans_Cp"


ASSIGN v_nombre_campo = "Importe_factura"
OPEN %v_nombre_tabla%
TOTAL FIELDS %v_nombre_campo%
DISPLAY VARIABLES

El comando DISPLAY envía a la pantalla la salida que se muestra a continuación.


Nota
Si introduce DISPLAY VARIABLES directamente en la línea de comandos de ACL, la
salida aparece de manera inmediata.
Si ejecuta DISPLAY VARIABLES en un script, haga doble clic en la entrada DISPLAY
VARIABLES correspondiente del log de comandos para mostrar la salida.

Salida a la pantalla

Nombre Tipo Valor

TOTAL1 N 278.641,33

OUTPUTFOLDER C "/Tablas/Cuentas_por_pagar"

v_nombre_campo C "Importe_factura"

v_nombre_tabla C "Ap_Trans"

Muestra el resultado de una expresión


Para el registro seleccionado, el siguiente ejemplo muestra el resultado de multiplicar el valor del campo
Precio_venta por el valor del campo Cantidad_disponible:

DISPLAY Precio_venta * Cantidad_disponible

Mostrar la salida de una función


Para el registro seleccionado, el siguiente ejemplo muestra la cantidad de días que han transcurrido
desde la fecha del campo Fecha_factura:

DISPLAY AGE(Fecha_factura)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 160 de 898


Comandos

Observaciones
Ubicación de los resultados del comando
DISPLAY ejecutado desde la línea de comandos de ACL: los resultados se muestran en la pantalla.
DISPLAY ejecutado en un script: los resultados se escriben en el log de comandos de ACL. Puede hacer
doble clic en la entrada del log de comandos para mostrar los resultados en la pantalla.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 161 de 898


Comandos

Comando DO REPORT
Genera el reporte de ACL especificado.

Sintaxis
DO REPORT nombre_reporte

Parámetros
Nombre Descripción

nombre_reporte El nombre de la vista que se debe generar e imprimir como un reporte.

Ejemplo
Impresión de la vista predeterminada
Abre la tabla AP_Trans e imprime la vista predeterminado:

OPEN Trans_CP
DO REPORT Vista_predeterminada

Observaciones
Ejecución de DO REPORT en la línea de comandos o en un script
Los ajustes que se utilicen para imprimir el reporte dependen del lugar en el que ejecute el comando:
l desde la línea de comandos: se abre el cuadro de diálogo Imprimir para que seleccione las pági-
nas que desea imprimir y configure otras opciones para el reporte
l en un script: el reporte se imprime inmediatamente utilizando la configuración predeterminada del
reporte

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 162 de 898


Comandos

Comando DO SCRIPT
Ejecuta un script secundario o un script externo desde un script de ACL.

Sintaxis
DO <SCRIPT> nombre_script {<IF prueba>|<WHILE prueba>}

Parámetros
Nombre Descripción

SCRIPT nombre_script El nombre del script que se debe ejecutar. Puede ejecutar los scripts secundarios del pro-
yecto de ACL o los scripts externos que se almacenan en los archivos de texto con exten-
siones como .aclscript, .txt. o .bat.
Puede especificar una ruta de archivo a un script externo. Si la ruta contiene espacios,
debe encerrarla entre comillas.
Nota
No puede invocar un script que ya está en ejecución. Por ejemplo, si
ScriptA llama a ScriptB, ScriptB no puede llamar a ScriptA. ScriptA toda-
vía se está ejecutando mientras espera que ScriptB se complete.

IF prueba Una expresión condicional que se evalúa una vez para determinar si se debe ejecutar el
script. Si la condición se evalúa como verdadera, se ejecuta el script; de lo contrario, no
opcional
se ejecuta.
No se puede usar junto con WHILE en el mismo comando. Si se utilizan ambos, WHILE
se ignora cuando se procesa el script. Se ingresa un comentario en el log, pero el script
no deja de ejecutarse.

WHILE prueba Una expresión condicional que se evalúa después de que el script se ejecuta para deter-
minar si se debe ejecutar el script nuevamente. Si la prueba se evalúa como verdadera,
opcional
el script se ejecuta nuevamente; de lo contrario, no se ejecuta.
Nota
Si usa WHILE, asegúrese de que su prueba finalmente se evalúe como
falsa. Si no lo hace, el script entrará en un bucle infinito. Si se crea un
bucle infinito, puede presionar la tecla Esc para cancelar el pro-
cesamiento del script.
No se puede usar junto con IF en el mismo comando. Si se utilizan ambos, WHILE se
ignora cuando se procesa el script. Se ingresa un comentario en el log, pero el script no
deja de ejecutarse.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 163 de 898


Comandos

Ejemplos
Ejecución de un subscript reiteradamente hasta que se valide la entrada
Usted tiene un subscript que recolecta información del usuario a través de un cuadro de diálogo. Hace lo
siguiente:
1. Le pide al usuario los valores necesarios.
2. Comprueba la información introducida por el usuario.
3. Establece la variable v_validada en verdadero cuando se validan los valores de información de
entrada.
Para asegurarse de que el usuario introduzca información válida, usted usa DO SCRIPT e incluye una
condición WHILE para que el script repita este comando hasta que se valide la entrada. Una vez que el
valor de la variable cambie, el script principal pasa al siguiente comando:

DO SCRIPT ObtenerEntradaUsuario WHILE v_validada = F

Ejecutar un subscript desde una ubicación compartida


Usted mantiene subscripts útiles en una ubicación compartida. Cuando necesita uno de los subscripts
durante un análisis, hace referencia a él utilizando la ruta completa a su ubicación compartida:

DO SCRIPT "C:\My utility scripts\ObtenerEntradaUsuario.aclscript" WHILE v_validada = F

Observaciones
Comandos relacionados
DO SCRIPT es equivalente al comando DO BATCH que se puede encontrar en scripts creados con ver-
siones anteriores de ACL.
No puede incluir el comando DO SCRIPT dentro de un comando GROUP.

Utilidad de un script externo


Almacenar un script de forma externa e invocarlo desde un script de ACL resulta útil cuando se desea vol-
ver a usar el mismo subscript en diferentes scripts y proyectos de ACL.
Puede almacenar una copia única del script en una ubicación y actualizarlo en un solo lugar en vez de
mantenerlo en varias ubicaciones.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 164 de 898


Comandos

Comando DUMP
Muestra el contenido de un archivo, o el registro actual, en las codificaciones de caracteres hexadecimal,
ASCII y EBCDIC.
Nota
Este comando solo se puede ingresar en la línea de comandos. No se puede utilizar en
scripts.

Sintaxis
DUMP {RECORD|nombre_archivo} <SKIP bytes> <COLUMN bytes> <HORIZONTAL>

Parámetros
Nombre Descripción

RECORD Muestra el contenido del registro seleccionado.


Es obligatorio si no especifica un nombre_archivo.

nombre_archivo El nombre del archivo que se desea mostrar.


Es obligatorio si no especifica RECORD.
Nota
Para mostrar las codificaciones de caracteres de una tabla de ACL, debe
especificar el nombre del archivo de datos de origen y la extensión de la
tabla. Por ejemplo: Ap_Trans.fil

SKIP bytes La cantidad de bytes que se deben saltear antes de comenzar el vaciamiento. El valor
predeterminado es 0.
opcional

COLUMN bytes En la salida, el ancho de las columnas en bytes.


opcional Nota
El número que se especifique con bytes hace referencia a los bytes inclui-
dos en el registro o la tabla de ACL.
Los caracteres codificados en la salida tal vez no tengan una relación de
uno a uno con los caracteres de la vista. Por ejemplo, la codificación
hexadecimal del número 1 es 31.
El valor predeterminado es de 16 bytes para cada columna en una visualización vertical
y de 64 bytes para una sola columna en una visualización horizontal. La cantidad
máxima de bytes que se puede especificar es 255.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 165 de 898


Comandos

Nombre Descripción

HORIZONTAL Muestra las codificaciones de caracteres en filas horizontales en lugar de hacerlo en blo-
ques verticales lado a lado (valor predeterminado).
opcional

Ejemplos
Mostrar la codificación de caracteres de la tabla Inventario
El siguiente ejemplo muestra la codificación de caracteres hexadecimal, ASCII y EBCDIC de los datos de
la tabla Inventario. La salida se organiza en filas horizontales (la codificación hexadecimal utiliza una fila
doble). Cada fila representa 97 bytes de datos en la tabla de ACL:

DUMP Inventario.fil COLUMN 97 HORIZONTAL

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 166 de 898


Comandos

Comando DUPLICATES
Detecta si existen valores duplicados o registros duplicados completos en una tabla de ACL.

Sintaxis
DUPLICATES <ON> {campo_clave <D> <...n>|ALL} <OTHER {campo <...n>|ALL}>
<UNFORMATTED> <TO {SCREEN|nombre_tabla|nombre_archivo|PRINT}> <APPEND> <IF
prueba> <WHILE prueba> <FIRST rango|NEXT rango> <HEADER texto_encabezado> <FOOTER
texto_pie_de_página> <PRESORT> <OPEN> <LOCAL> <ISOLOCALE código_lugar>

Parámetros
Nombre Descripción

ON campo_clave D El o los campos clave, o la expresión, que se pondrá a prueba en busca de duplicados.
<...n>|ALL o campo_clave: utilice el o los campos especificados
Si prueba más de un campo, los registros que se identifican como duplicados deben
tener valores idénticos en cada uno de los campos especificados.
Incluya D para ordenar el campo clave en orden descendente. El criterio de orde-
namiento predeterminado es ascendente.
o ALL: utilice todos los campos de la tabla
Si prueba todos los campos de la tabla, los registros que se identifican como dupli-
cados deben ser absolutamente idénticos.
La única opción para ALL es un ordenamiento ascendente.
Nota
Las partes no definidas de los registros no se prueban.

OTHER campo <...n> | ALL Uno o más campos adicionales para incluir en la salida.
opcional o OTHER campo <...n>: incluya el o los campos especificados
o OTHER ALL: incluya todos los campos de la tabla que no se especifican como cam-
pos clave

UNFORMATTED Suprime los encabezados de página y los saltos de página cuando los resultados se
envían a un archivo.
opcional

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | nombre_archivo | o SCREEN: muestra los resultados en el área de visualización de ACL
PRINT o nombre_tabla: guarda los resultados en una tabla de ACL
opcional Especifique el nombre_tabla como una cadena entre comillas con la extensión de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 167 de 898


Comandos

Nombre Descripción

archivo .FIL. Por ejemplo: TO "Salida.FIL"


Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 168 de 898


Comandos

Nombre Descripción

opcional o FIRST: comienza el procesamiento desde el primer registro


o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

PRESORT Ordena la tabla por el campo primario antes de ejecutar el comando.


opcional Nota
No puede utilizar PRESORT dentro del comando GROUP.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

ISOLOCALE código_lugar Nota


opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.
Use los siguientes códigos:
o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Variables de salida de ACL


Nombre Contiene

GAPDUPn La cantidad total de grupos de duplicados inexactos, faltantes o duplicados identificados


por el comando.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 169 de 898


Comandos

Ejemplos
Probar la presencia de valores duplicados en un campo
El siguiente ejemplo:
l prueba si existen valores duplicados en el campo Número_factura
l envía todos los registros que contengan números de factura duplicados a una nueva tabla de ACL

DUPLICATES ON Número_factura OTHER Número_proveedor Fecha_factura Importe_factura


PRESORT TO "Facturas_duplicadas.FIL"

Proba si existen valores duplicados en dos o más campos en combinación


El siguiente ejemplo:
l prueba si existen combinaciones de valores duplicadas en los campos Número_factura y Número_
proveedor
l envía todos los registros que contengan el mismo número de factura y el mismo número de pro-
veedor a una nueva tabla de ACL
La diferencia entre esta prueba y la prueba anterior es que los números de factura idénticos de dos pro-
veedores diferentes no se reportan como un falso positivo.

DUPLICATES ON Número_factura Número_proveedor OTHER Fecha_factura Importe_factura


PRESORT TO "Facturas_duplicadas.FIL"

Probar la presencia de registros duplicados


Los siguientes ejemplos:
l prueban la presencia de valores duplicados en cada campo de una tabla Inventario
l envían todos los registros totalmente idénticos a una nueva tabla de ACL

DUPLICATES ON NúmProd ClaseProd Ubicación DescProd EstadoProd CostoUnitario


FechaCosto PrecioVenta FechaPrecio PRESORT TO "Elementos_inventario_duplicados.FIL"

Puede simplificar la sintaxis utilizando ALL :

DUPLICATES ON ALL PRESORT TO "Elementos_inventario_duplicados.FIL"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 170 de 898


Comandos

Comando ESCAPE
Termina el script que se está procesando, o todos los scripts, sin salir de ACL.

Sintaxis
ESCAPE <ALL> <IF prueba>

Parámetros
Nombre Descripción

ALL Detener todos los scripts activos. Si se omite, se detiene el script actual.
opcional

IF prueba Una prueba que se debe evaluar como verdadera antes de que se ejecute el comando.
Si la prueba se evalúa como falsa, el comando no se ejecuta.
opcional

Ejemplos
Dar por finalizado un script de manera condicional
Usted cuenta la cantidad de registros de una tabla y usa el comando ESCAPE para detener la ejecución del
script si el número de registros es inferior a 100:

COUNT
ESCAPE IF COUNT1 < 100

Observaciones
Cuándo usar ESCAPE
Utilice ESCAPE para detener la ejecución de un script o subscript de acuerdo con una condición o para
detener la ejecución de todos los scripts que se están ejecutando.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 171 de 898


Comandos

Uso de ESCAPE en subscripts


Si ejecuta ESCAPE dentro de un subscript, el subscript detiene su ejecución y el script principal reanuda
el procesamiento desde el comando DO SCRIPT que invocó el subscript.
Si incluye la opción ALL en el comando ESCAPE del subscript, se detiene el procesamiento tanto del
subscript como del script principal:

ESCAPE ALL

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 172 de 898


Comandos

Comando EVALUATE
Para el muestreo por registros o el muestreo por unidad monetaria, proyecta los errores detectados en los
datos de muestra a toda la población y calcula los límites superiores del índice de desviación o el importe
erróneo.
Muestreo de registros Muestreo de unidad monetaria

Sintaxis
EVALUATE RECORD CONFIDENCE nivel_de_confianza SIZE tamaño_muestra
ERRORLIMIT número_de_errores <TO {SCREEN|nombre_archivo}>

Parámetros
Nota
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

RECORD Evaluar los errores detectados en una muestra de registros.

CONFIDENCE nivel_de_ El mismo nivel de confianza que especificó al calcular el tamaño de la muestra.
confianza

SIZE tamaño_muestra El número de registros de la muestra.


Nota
Especifique el tamaño de la muestra real tal como se extrajo, que puede
diferir del tamaño de la muestra que ACL calculó inicialmente.

ERROR cantidad_de_erro- El número total de errores o desviaciones que encontró en la muestra.


res

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 173 de 898


Comandos

Nombre Descripción

l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"

Variables de salida de ACL


Nombre Contiene

MLEn La frecuencia del límite superior de errores (índice de desviación superior calculada)
que calcula el comando.

Ejemplos
Proyectar errores detectados en los datos de muestra a toda la población
Finalizó las pruebas de los datos de muestra y registró las desviaciones de los controles que detectó.
Ahora, puede proyectar los error errores que haya encontrado a la población completa.
El ejemplo que se incluye a continuación proyecta a toda la población dos errores que se detectaron en
los datos muestreados y calcula una frecuencia del límite superior de errores (índice de desviación
superior calculada) de 6,63 %.

EVALUATE RECORD CONFIDENCE 95 SIZE 95 ERRORLIMIT 2 TO SCREEN

Si desea ver una explicación detallada de la manera en la que ACL calcula los valores al evaluar errores,
consulte Evaluar errores en una muestra de registros.

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Sintaxis
EVALUATE MONETARY CONFIDENCE nivel_de_confianza <ERRORLIMIT valor_contable;
importe_erróneo <;...n>> INTERVAL valor_intervalo <TO {SCREEN|nombre_de_archivo}>

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 174 de 898


Comandos

Parámetros
Nota
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

MONETARY Evaluar los errores detectados en una muestra por unidad monetaria.

CONFIDENCE nivel_de_ El mismo nivel de confianza que especificó al calcular el tamaño de la muestra.
confianza

ERRORLIMIT valor_con- Todos los errores de información que encontró en la muestra.


table,importe_erróneo
Especifique el valor contable del importe y el importe erróneo, separados por coma. Por
ejemplo, si un importe tiene un valor contable de $1000 y un valor de auditoría de $930,
ingrese 1000,70.
Ingrese sobrestimaciones como importes positivos y subestimaciones como importes
negativos. Por ejemplo, si un importe tiene un valor contable de $1250 y un valor de audi-
toría de $1450, ingrese 1250,-200.
Separe varios pares valor_contable; importe_erróneo con un punto y coma:

1000;70;1250;-200

INTERVAL valor_intervalo El valor de intervalo que usó al tomar la muestra.


Nota
El valor del intervalo que usó puede diferir del valor del intervalo ini-
cialmente calculado por ACL.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 175 de 898


Comandos

Variables de salida de ACL


Nombre Contiene

MLEn El valor de errores más probable (información errónea proyectada) que calcula el
comando.

UELn El valor del límite superior de error (límite superior de información errónea) que calcula
el comando.

Ejemplos
Proyectar errores detectados en los datos de muestra a toda la población
Finalizó las pruebas de los datos de muestra y registró las desviaciones de los controles que detectó.
Ahora, puede proyectar los error errores que haya encontrado a la población completa.
El ejemplo que se incluye a continuación proyecta tres errores que se detectaron en los datos mues-
treados a toda la población y calcula varios valores, entre los que se incluyen los siguientes:
l Precisión básica: la asignación básica para riesgo de muestreo (18.850,00)
l Error más probable: el importe de error proyectado para la población (1.201,69)
l Límite de error superior: el límite de error superior para la población (22.624,32)

EVALUATE MONETARY CONFIDENCE 95 ERRORLIMIT 1000;70;1250;-200;3200;900


INTERVAL 6283,33 TO SCREEN

Si desea ver una explicación detallada de la manera en la que ACL calcula los valores al evaluar errores,
consulte Evaluar errores en una muestra por unidad monetaria.

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 176 de 898


Comandos

Comando EXECUTE
Ejecuta una aplicación o proceso externo a ACL. Emula el comando Ejecutar de Windows. Se puede uti-
lizar para interactuar con el símbolo del sistema de Windows.
Nota
Dado que el comando EXECUTE le da la posibilidad de interactuar con el sistema ope-
rativo y las aplicaciones externas a ACL, pueden surgir problemas técnicos que exceden el
alcance de la funcionalidad propia de ACL.
Los Servicios de soporte de ACL pueden ayudar con el funcionamiento del comando
EXECUTE dentro de ACL, pero los problemas que surgen con los procesos y las apli-
caciones externas a ACL no están cubiertos por los Servicios de soporte.

Sintaxis
EXECUTE Sintaxis_comando_Ejecutar_de_Windows <ASYNC>

Parámetros
Nombre Descripción

Sintaxis_comando_Eje- El nombre de la aplicación que se debe ejecutar, la carpeta o el archivo que se debe
cutar_de_Windows abrir o el comando que se debe ejecutar, seguido de los modificadores de comando o
argumentos necesarios.
Requiere la sintaxis válida del comando Ejecutar de Windows encerrada entre comillas.

ASYNC Ejecuta el comando en modo asincrónico.


opcional En el modo asincrónico, el script de ACL continúa ejecutándose sin esperar que se com-
plete el proceso iniciado por el comando EXECUTE.
Si omite ASYNC, se debe completar el proceso iniciado por el comando EXECUTE antes
de que el comando de ACL continúe. No se puede acceder a ACL mientras se están eje-
cutando procesos externos.
Nota
Al ejecutar EXECUTE desde la línea de comandos de ACL, debe espe-
cificar ASYNC.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 177 de 898


Comandos

Variables de salida de ACL


Nombre Contiene

RETURN_CODE El código devuelto por un proceso o una aplicación externos con el comando
EXECUTE.

¿Qué son los códigos de retorno?


Los códigos de retorno son números generados por el proceso o la aplicación exter-
nos, que se envían de regreso a ACL para indicar el resultado del proceso externo.
ACL no genera el código de retorno, solo lo recibe.

Códigos de retorno típicos


Los códigos de retorno típicos son valores enteros que se asignan a notificaciones o
mensajes de error específicos. Por ejemplo, el código de retorno “0” podría significar
“La operación finalizó con éxito”. El código de retorno “2” podría significar “El sistema
no puede encontrar el archivo especificado”.

El significado de los códigos de retorno específicos


Los códigos de retorno específicos y sus significados varían según el proceso o la apli-
cación externos. Con frecuencia, se pueden consultar las listas de códigos de retorno,
también denominados ‘códigos de error’ o ‘códigos de salida’, y sus significados en la
documentación de la aplicación externa correspondiente. Las listas de códigos de
retorno también se pueden consultar en Internet.

Variable creada únicamente en el modo predeterminado


La variable RETURN_CODE se crea cuando se ejecuta el comando EXECUTE en
modo predeterminado. La variable no se crea cuando el comando se ejecuta en modo
asincrónico.

Ejemplos
Abrir una aplicación
Abre Microsoft Excel:

EXECUTE "Excel"

Abre Adobe Acrobat Reader:

EXECUTE "AcroRd32.exe"

Cerrar una aplicación

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 178 de 898


Comandos

Cierra Microsoft Excel:

EXECUTE "TASKKILL /f /im Excel.exe"

Nota
Utilice el interruptor /f con cautela. Obliga a una aplicación a cerrarse sin presentar ningún
cuadro de diálogo, como los de guardar los cambios.

Abrir un archivo
Abre el libro de Excel AP_Trans.xlsx:

EXECUTE '"C:\Proyectos de ACL\Datos de origen\AP_Trans.xlsx"'

Crear una nueva carpeta


Crea una nueva carpeta denominada Datos de origen:

EXECUTE 'cmd /c MD "C:\Proyectos de ACL\Datos de origen"'

Ejecutar scripts externos o archivos por lotes que no son de ACL (.bat)
Ejecuta el script Mi_lote.bat:

EXECUTE '"C:\Proyectos ACL\Archivos por lote\Mi_lote.bat"'

Pasar parámetros a un archivo por lotes ajeno a ACL


Pasa dos parámetros a Mi_lote.bat. Los parámetros pueden ser literales o variables de ACL:

EXECUTE '"C:\Proyectos ACL\Archivos por lote\Mi_lote.bat" param1 %v_param2%'

Ejecutar scripts de ACL en otros proyectos de ACL


Ejecuta "AP_Trans_script" en AP Trans Tests.acl"

EXECUTE 'aclwin.exe "C:\ACL Projects\AP Trans Tests.acl" /b AP_Trans_script'

Nota
Si se ejecuta un script de ACL en otro proyecto, se inicia una segunda instancia de ACL. El
script del segundo proyecto debe terminar con el comando QUIT para que la segunda ins-
tancia de ACL se cierre y se devuelva el control a la instancia inicial de ACL.

Incorporar un período de espera en un script de ACL

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 179 de 898


Comandos

Ambos ejemplos crean un período de espera de 30 segundos:

EXECUTE "TIMEOUT /t 30"

EXECUTE "cmd /c PING -n 31 127.0.0.1 > nul"

Observaciones
Usar EXECUTE para realizar tareas útiles
El comando EXECUTE permite ejecutar comandos de Windows y DOS desde la línea de comandos de
ACL o desde un script ACL.
Puede utilizar esta capacidad para aumentar la automatización de los scripts de ACL llevando a cabo una
variedad de tareas útiles que no son posibles usando solo la sintaxis de scripts de ACL.

Ejemplos de tareas que se pueden iniciar con EXECUTE

Abrir otros programas y Pasar parámetros a un Acceder a datos desde ubi- Incorporar listas de cuen-
aplicaciones y realiza archivo por lotes caciones de red tas de Active Directory
tareas requeridas por el
script ACL

Abrir cualquier archivo en Ejecutar scripts de ACL en Utilizar FTP para acceder Realizar integración con
su aplicación pre- otros proyectos de ACL a datos desde ubicaciones VBScript
determinada remotas

Realizar tareas admi- Incorporar períodos de Comprimir y descomprimir Realizar integración con
nistrativas en archivos y espera en los scripts ACL datos bases de datos SQL
carpetas, tales como
copiar, mover, crear, eli-
minar o comparar archivos
o carpetas que existen
fuera de ACL.

Ejecutar scripts externos o Incorporar la pro- Encriptar y desencriptar Abrir páginas web
archivos por lotes que no gramación de tareas de datos
son de ACL (.bat) Windows en scripts ACL

Nota
Los detalles específicos de cómo llevar a cabo cualquiera de estas tareas están más allá del
alcance de la Documentación de ayuda de ACL. Para obtener ayuda, consulte la documentación
correspondiente del sistema operativo Windows u otra documentación de terceros.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 180 de 898


Comandos

Modo predeterminado y modo asincrónico


Puede ejecutar el comando EXECUTE tanto en el modo predeterminado como en el modo asincrónico:
l Modo predeterminado: el proceso iniciado por EXECUTE se debe completar antes de que pueda
continuar el script de ACL.
No se puede acceder a ACL mientras se están ejecutando procesos externos.
l Modo asincrónico: el script de ACL continúa ejecutándose sin esperar que se complete el proceso
iniciado por el comando EXECUTE.Se puede acceder a
ACL mientras se están ejecutando procesos externos.
Si especifica ASYNC, el comando EXECUTE se ejecuta en modo asíncrono.

¿Qué modo debo utilizar?


Al crear scripts ACL que utilizan el comando EXECUTE debe tener en cuenta que el modo de operación
sea el adecuado.

Usar el modo predeterminado Usar el modo asincrónico / ASYNC

o tareas administrativas en archivo y carpeta o las tareas externas pueden hacer que se abra una
o especificación de los períodos de espera interfaz de la aplicación o un cuadro de diálogo emer-
o todas las tareas de las cuales dependen las tareas gente
posteriores
o la ejecución posterior del script depende del resultado
de la variable RETURN_CODE

Scripts de ACL que se ejecutan sin intervención del usuario


Si desea que un script de ACL que contiene el comando EXECUTE se ejecute sin intervención del usuario,
utilice uno de los siguientes métodos:
l utilice el modo asincrónico para todas las tareas que puedan hacer que se abra una interfaz de la apli-
cación o un cuadro de diálogo emergente
l evite abrir elementos de la interfaz en los scripts sin intervención del usuario
Nota
Hasta que los elementos de la interfaz se cierran, representan procesos que aún se están
ejecutando. Si estos elementos de la interfaz se abren con EXECUTE en el modo pre-
determinado, impiden la ejecución de las siguientes líneas de un script de ACL y hacen que
el script se cuelgue.

Comillas
La sintaxis del comando Ejecutar de Windows que usted utiliza con el comando EXECUTE debe ence-
rrarse entre comillas simples o dobles.
El siguiente ejemplo utiliza el comando MD de Windows para crear una nueva carpeta:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 181 de 898


Comandos

EXECUTE 'cmd /c md C:\Nueva_Carpeta_Datos'

Comillas anidadas
Si alguna ruta dentro de la sintaxis del comando Ejecutar contiene espacios, las rutas deben estar ence-
rradas entre comillas.
Al encerrar rutas entre comillas, tiene dos opciones:
l Comillas dobles dentro de comillas simples: Use comillas simples para encerrar la cadena com-
pleta del comando Ejecutar y use comillas dobles dentro de las simples para encerrar las rutas:

EXECUTE 'cmd /c md "C:\Nueva carpeta de datos"'

Probablemente, este método le resulte más fácil de leer que el segundo método.
Nota
No es posible invertir el orden de anidamiento utilizando comillas dobles para ence-
rrar toda la cadena y comillas simples para encerrar rutas.
l Dos comillas dobles: Use comillas dobles para encerrar la cadena completa del comando Eje-
cutar y use dos comillas dobles para encerrar las rutas:

EXECUTE "cmd /c md ""C:\Nueva carpeta de datos"""

Si usa este método, las comillas dobles que se usan en la parte interna deben estar una junto a la
otra y no puede haber un espacio entre ellas.

Comandos internos y externos


Los comandos de Windows pueden ser o bien internos o externos .
l Los comandos internos: se pueden ejecutar solamente desde el símbolo del sistema, lo que sig-
nifica que usted tiene que abrir el intérprete de comandos utilizando cmd /c o cmd /k antes de espe-
cificar el comando.
l Los comandos externos: se pueden ejecutar desde el símbolo del sistema o directamente uti-
lizando el comando EXECUTE, lo cual significa que, si lo desea, puede abrir el intérprete de coman-
dos, pero no es obligatorio que lo haga.
El ejemplo siguiente utiliza el comando interno de Windows DIR (muestra el contenido de un directorio) y
el comando externo de Windows COMP (compara dos archivos), para ilustrar la diferencia:

EXECUTE 'cmd /k dir "C:\ACL DATA\Archivos de datos de muestra"'


EXECUTE 'comp C:\Archivo_1.txt C:\Archivo_2.txt'

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 182 de 898


Comandos

Usted puede evitar esta complicación mediante la creación de scripts externos o archivos por lotes que con-
tengan los comandos de Windows y utilizar el comando EXECUTE solo para iniciar el archivo por lotes. Por
ejemplo:

EXECUTE 'C:\Mi_lote.bat'

Sintaxis del comando Ejecutar de múltiples líneas


El comando EXECUTE no admite la sintaxis del comando Ejecutar de múltiples líneas. Para incorporar
comandos Ejecutar de múltiples líneas en un script ACL, utilice uno de los métodos siguientes:

Método Ejemplo

Repita el
comando EXECUTE 'cmd /c md "C:\Nueva Carpeta Datos"' EXECUTE 'cmd /c copy C:\File_1.txt "C:\Nueva Car-
EXECUTE peta Datos"'
para cada
comando
Ejecutar.

Combine
comandos EXECUTE 'cmd /c md "C:\Nueva Carpeta Datos" & copy C:\File_1.txt "C:\Nueva Carpeta Datos"'
Ejecutar
utilizando
'&'.

Cree un
script EXECUTE 'C:\Mi_lote.bat'
externo o
archivo de
lote para
contener
varios
comandos
Ejecutar y
utilice el
comando
EXECUTE
úni-
camente
para ini-
ciar el
archivo de
lotes.

Comando EXECUTE en los estudios analíticos del Servidor de AX


Si desea utilizar el comando EXECUTE en estudios analíticos del AX Servidor, el AX Servidor debe estar
configurado para permitir que se ejecute el comando. Si desea obtener más información, consulte

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 183 de 898


Comandos

Configuración del Servidor de AX.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 184 de 898


Comandos

Comando EXPORT
Exporta datos desde ACL al formato de archivo especificado o a Resuldatos en ACL GRC.

Sintaxis
EXPORT <FIELDS> nombre_campo <AS nombre_exportación> <...n> <UNICODE> tipo_expor-
tación <SCHEMA> PASSWORD núm TO {nombre_archivo|aclgrc_id} <OVERWRITE> <IF test>
<WHILE test> <{FIRST rango|NEXT rango}> <APPEND> <KEEPTITLE> <SEPARATOR carácter>
<QUALIFIER carácter> <WORKSHEET nombre_hoja_trabajo>

Parámetros
Nombre Descripción

FIELDS nombre_campo Los campos que se deben exportar. Separe los nombres de campo con espacios.
AS nombre_exportación
Puede incluir un nombre diferente para el campo en el archivo de exportación utilizando
<...n>
AS nombre_exportación. Encierre nombre_exportación entre comillas.

UNICODE Disponible únicamente en la edición Unicode de ACL. Se aplica solo a archivos de texto
(ASCII), texto delimitado (DELIMITED) y XML y a la salida del Portapapeles de Windows.
opcional
Exporta los datos de ACL con la codificación de caracteres Unicode UTF-16 LE aplicada.
o Especifique UNICODE: si los datos que está exportando contienen caracteres no
admitidos por ASCII (ANSI) extendido
o No especifique UNICODE: si todos los caracteres de los datos que está exportando
son admitidos por ASCII (ANSI) extendido
Los datos exportados están codificados como ASCII (ANSI) extendido.
Nota
Los caracteres no admitidos se omiten del archivo exportado.
Si desea obtener más información, consulte Productos Unicode de ACL.

tipo_exportación El destino o el formato de archivo de salida con una de las siguientes opciones:
o ACCESS: archivo de base de datos Microsoft Access (.mdb). Por valor pre-
determinado, los datos se exportan como Unicode.
o ACLGRC: Resultados en ACL GRC
o ASCII: archivo de texto sin formato ASCII (.txt).
o CLIPBOARD: Portapapeles de Windows
o DBASE: archivo compatible con dBASE (.dbf)
o DELIMITED: archivo de texto delimitado (.del).
o EXCEL: archivo de Microsoft Excel (.xls) compatible con Excel 1997 a 2003
o JSON: archivo JSON (.json)
o LOTUS: archivo de Lotus 123

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 185 de 898


Comandos

Nombre Descripción

o WDPF6: archivo de Wordperfect 6


o WORD: Archivo de MS Word (.doc)
o WP: Archivo de Wordperfect.
o XLS21: archivo de Microsoft Excel versión 2.1.
o XLSX: archivo .xlsx de Microsoft Excel. Por valor predeterminado, los datos se expor-
tan como Unicode.
o XML: archivo XML (.xml)

SCHEMA Se aplica solo a la salida en archivos XML.


opcional Incluya el esquema XML en el archivo XML exportado. El esquema XML contiene meta-
datos que describen la estructura del archivo XML, incluido el tipo de datos de los cam-
pos.
Puede validar el archivo con el esquema una vez que el archivo se haya exportado.

PASSWORD núm Se aplica únicamente a Resultados de ACL GRC.


La definición de contraseña que se debe usar.
La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD. No
se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de contra-
señas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en la
página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.
PASSWORD núm se debe colocar inmediatamente antes de TO o al final de la cadena
de la sintaxis del comando. La contraseña es un token de acceso a ACL GRC. Si desea
obtener más información, consulte "Exportación a ACL GRC Resultados" en la
página 191.
Nota
Si está ejecutando el script desde ACL Analytics (activación en línea), no
necesita PASSWORD. Se utiliza automáticamente el token de acceso
ACL GRC del usuario actual. La ejecución del script en cualquier otro
contexto, incluida la ventana Aplicación de análisis o ACL Analytics (acti-
vación sin conexión), requiere PASSWORD.

TO nombre_archivo | acl- El destino de la exportación:


grc_id o TO nombre_archivo: exporta los datos a un archivo
Si es necesario, puede incluir una ruta de acceso absoluta o relativa al archivo, pero
la carpeta de Windows ya debe existir. Debe especificar el valor nombre_archivo
como una cadena entre comillas.
o TO aclgrc_id: exporta datos a Resultados de ACL GRC
El valor aclgrc_iddebe incluir el número de ID de la prueba de control y, si está rea-
lizando la exportación a un centro de datos ubicado fuera de América del Norte, el

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 186 de 898


Comandos

Nombre Descripción

código del centro de datos. El valor id_aclgrc debe estar entre comillas.
El número de identificación de la prueba de control y el código del centro de datos
deben estar separados por la arroba (@). Por ejemplo, TO "99@eu".
Si no conoce el número de ID de la prueba de control, utilice la interfaz de usuario de
ACL para comenzar una exportación a Resultados. Cancele la exportación una vez
que haya identificado el número de ID de la prueba de control. Si desea obtener más
información, consulte Exportar excepciones a ACL GRC.
El código del centro de datos especifica a cuál servidor regional de ACL GRC va a
exportar los datos:
l ap: Pacífico asiático
l au: Australia
l ca: Canadá
l eu: Europa
l us: Norteamérica
Puede utilizar únicamente el código del centro de datos o los códigos autorizados
para la instalación de ACL GRC de su organización. El centro de datos de Nor-
teamérica es el valor predeterminado, por lo que especificar "@us" es opcional.

OVERWRITE Se aplica únicamente a la exportación a ACL GRC Resultados.


opcional Cualquier dato existente en la prueba de control objetivo (tabla) se sobrescribe con los
datos exportados. Debe tener el rol de Gerente profesional en la Colección para sobres-
cribir los datos.
Si omite OVERWRITE y los datos ya existen en la prueba de control de destino (tabla),
los datos exportados se anexan a los datos existentes. Si desea obtener más infor-
mación sobre la anexión en Resultados, consulte "Observaciones", más adelante.
Cualquier interpretación relacionada con la prueba de control de destino (tabla) se actua-
liza de manera dinámica para reflejar los datos importados, ya sea que sobrescriba o
anexe.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Se aplica únicamente a archivos de texto (ASCII) y texto delimitado (DELIMITED).


opcional Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 187 de 898


Comandos

Nombre Descripción

Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

KEEPTITLE Se aplica únicamente a archivos de texto (ASCII) y texto delimitado (DELIMITED).


opcional Incluya los nombres de campo de ACL con los datos exportados. Si los omite, no apa-
recerá ningún nombre de campo en el archivo de salida.

SEPARATOR carácter Solo se aplica a archivos de texto delimitado (DELIMITED).


opcional El carácter que se debe utilizar como separador entre campos. Debe especificar el carác-
ter como una cadena entre comillas.
Como opción predeterminada, ACL utiliza una coma.

QUALIFIER carácter Solo se aplica a archivos de texto delimitado (DELIMITED).


opcional El carácter que se debe utilizar como calificador de texto para encerrar e identificar los
campos. Debe especificar el carácter como una cadena entre comillas.
Como opción predeterminada, ACL utiliza comillas dobles.

WORKSHEET nombre_ Solo se aplica a archivos de Microsoft Excel (.xlsx).


hoja_trabajo
El nombre de la hoja de cálculo de Excel que se creó en el archivo Excel nuevo o exis-
opcional tente. Se debe colocar en último lugar en la sintaxis del comando EXPORT.
Por valor predeterminado, ACL utiliza el nombre de la tabla de ACL que está exportando
como el nombre de la hoja de cálculo.
El nombre_hoja_trabajo solo puede tener caracteres alfanuméricos o un carácter de
guión bajo ( _ ). El nombre no puede contener caracteres especiales, espacios ni comen-
zar con un número. Puede encerrar el valor entre comillas.
Si desea obtener información detallada acerca de la sobrescritura de los libros y las
hojas de cálculo de Excel al exportar, consulte "El parámetro WORKSHEET y la sobres-
critura" en la página 190.

Ejemplos
Exportación de datos a un archivo de Excel .xlsx
Usted exporta campos específicos desde la tabla Proveedor a un archivo de Excel .xlsx:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 188 de 898


Comandos

OPEN Proveedor
EXPORT FIELDS Núm_Proveedor Nombre_Proveedor Ciudad_Proveedor XLSX TO "Expor-
tacionesProveedor"

Exportación de datos a un archivo Excel .xlsx y especificación de un nombre de hoja de cálculo


Usted exporta campos específicos desde la tabla Proveedor a un hoja de cálculo denominada Pro-
veedores_US de un archivo de Excel .xlsx:

OPEN Proveedor
EXPORT FIELDS Núm_Proveedor Nombre_Proveedor Ciudad_Proveedor XLSX to "Expor-
tacionesProveedor" WORKSHEET Proveedores_US

Exportación de datos a varios archivos delimitados usando GROUP


Usted exporta campos específicos desde la tabla Proveedor a dos archivos delimitados:
l un archivo para los nombres de proveedores de la "A" a la "M"
l un archivo para los nombres de proveedores de la "N" a la "Z"
Con el comando GROUP, usted prueba el nombre de proveedor de cada registro con una condición IF:

GROUP
EXPORT FIELDS Núm_Proveedor Nombre_Proveedor DELIMITED TO "AaM" IF BETWEEN
(UPPER(VENDOR_NAME); "A"; "M")
EXPORT FIELDS Núm_Proveedor Nombre_Proveedor DELIMITED TO "NaZ" IF BETWEEN
(UPPER(VENDOR_NAME); "N"; "Z")
END

Exportación de datos a Resultados de ACL GRC


Usted exporta campos específicos desde la tabla AR_Excepciones a Resultados de ACL GRC. Sobres-
cribe los datos existentes en la prueba de control de destino (tabla):

OPEN Excepciones_AR
EXPORT FIELDS Tipo Importe Ref Sin Vencimiento ACLGRC PASSWORD 1 TO "10926@us"
OVERWRITE

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 189 de 898


Comandos

Uso de EXPORT con el comando GROUP


Para la mayoría de los formatos de exportación, puede exportar datos a varios archivos simultáneamente
utilizando el comando GROUP.
Sólo se puede crear un archivo a la vez cuando se exportan datos a Microsoft Excel y Microsoft Access.

Exportación a Excel
Al exportar datos a un archivo de Excel, se aplican varios límites:
l Puede exportar un máximo de 1.048.576 registros a un archivo Excel xlsx y un máximo de 65.536
registros a Excel 97 y 2003.
Las tablas de ACL que superan estos máximos se exportan con éxito, pero los registros sobrantes
se ignoran y no se exportan.
l La longitud máxima de los campos exportados es de 254 caracteres.
(247 caracteres para Excel 2.1)
l La longitud máxima de los nombres de los campos exportados es de 64 caracteres.
(248 caracteres para Excel 2.1)

El parámetro WORKSHEET y la sobrescritura


A continuación, se explica el resultado de usar o no usar el parámetro WORKSHEET al exportar desde
una tabla de ACL a una tabla de Excel:

Parámetro de nombre de archivo de Con el uso del parámetro Sin el uso del parámetro
ACL / nombre de archivo de Excel WORKSHEET WORKSHEET

No existe un archivo de Excel con Se crea un nuevo archivo de Excel Se crea un nuevo archivo de Excel,
un nombre de archivo idéntico con una hoja de cálculo con el nom- con una hoja de cálculo que utiliza
bre especificado el nombre de la tabla de ACL expor-
tada

Existe un archivo de Excel con un Se agrega una hoja de cálculo con El archivo de Excel existente se
nombre idéntico y un nombre de el nombre especificado al archivo de sobrescribe con un nuevo archivo de
hoja de cálculo diferente Excel existente Excel, con una hoja de cálculo que
utiliza el nombre de la tabla de ACL
Existe un archivo de Excel con un Si la hoja de cálculo existente fue ori- exportada
nombre idéntico y un nombre de ginalmente creada desde ACL, se
hoja de cálculo idéntico sobrescribe con una hoja de cálculo
con el nombre especificado.
Si la hoja de cálculo existente fue
creada originalmente en Excel, apa-
rece un mensaje de error y se can-
cela la operación de exportación.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 190 de 898


Comandos

Exportación a ACL GRC Resultados


La tabla abajo contiene información adicional acerca de la exportación a una prueba de control en Resul-
tados.

Elemento Detalles

Permisos necesarios La capacidad de exportar resultados a una prueba de control en Resultados requiere una asig-
nación específica de roles de ACL GRC o privilegios de administrador:
o Los usuarios con el rol de Usuario profesional o Gerente profesional para una colección de
Resultados pueden exportar resultados a cualquier prueba de control de la colección.
Nota
Únicamente los usuarios con el rol de Gerente profesional pueden exportar
y sobrescribir los datos existentes en una prueba de control.
o Los administradores de la cuenta de ACL GRC y los administradores de Resultados obtie-
nen automáticamente el rol de Gerente profesional sobre todas las colecciones de la orga-
nización de ACL GRC que administran.

Límites de la expor- Los siguientes límites se aplican cuando se exporta a una prueba de control:
tación o Un máximo de 100.000 registros por exportación
o Un máximo de 100.000 registros por prueba de control.
o Un máximo de 100 campos por registro
o Un máximo de 256 caracteres por campo
Puede exportar la misma prueba de control varias veces, pero no puede superar los límites
generales.

Anexar archivos Sin importar cuál sea su orden en una tabla de ACL, los campos exportados se anexan a los
campos existentes de una prueba de control si tienen nombres de campo físicos coincidentes.
En ACL, el nombre del campo físico es el nombre en el formato de tabla. Los campos expor-
tados que no coinciden con el nombre de ningún campo existente se agregan como columnas
adicionales a la tabla en Resultados.
No se consideran los nombres visibles de los campos en ACL ni en Resultados. Sin embargo,
si utiliza el parámetro opcional AS nombre_exportación, el valor nombre_exportación se utiliza
como el nombre del campo físico.
Nota
Si está haciendo un proceso de ida y vuelta con los datos entre Resultados y
ACL, y los datos quedan mal alineados en Resultados, probablemente haya
establecido una correspondencia incorrecta entre los nombres de los campos.
Si desea obtener más información, consulte "Consideraciones de los nombres
de campos al importar y exportar datos de Resultados" en la página 252.

Creación de una Comando PASSWORD


definición de contra-
seña y espe- Si utiliza el comando PASSWORD para crear la definición de contraseña numerada para
cificación de un conectarse a ACL GRC, no se especifica ningún valor de contraseña, por lo que aparece una
valor de contraseña solicitud de contraseña cuando el script intenta ejecutarse.
Si desea obtener más información, consulte "Comando PASSWORD" en la página 323.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 191 de 898


Comandos

Elemento Detalles

Comando SET PASSWORD


Si utiliza el comando SET PASSWORD para crear la definición de contraseña numerada para
conectarse a ACL GRC, se especifica un valor de contraseña, por lo que no aparece una soli-
citud de contraseña, lo cual es adecuado para scripts diseñados para ejecutarse sin super-
visión del usuario.
Si desea obtener más información, consulte Comando SET PASSWORD.

Token de acceso de ACL GRC


Independientemente del método que utilice para crear la definición de la contraseña, el valor
de la contraseña requerida es un token de acceso a ACL GRC:
o Método PASSWORD: Los usuarios pueden obtener un token de acceso seleccionando
Herramientas > Token de acceso a ACLGRC e iniciando sesión en ACL GRC. Se devuelve
un token de acceso, que los usuarios pueden copiar y pegar en la solicitud de contraseña.
o Método SET PASSWORD: Para insertar un token de acceso en la sintaxis del comando
SET PASSWORD en un script de ACL, haga clic con el botón derecho del ratón en el Editor
de scripts, seleccione Insertar > Token de ACL GRC e inicie sesión en ACL GRC. Se
inserta un token de acceso en el script en la posición del cursor.
¡Precaución!
El token de acceso devuelto concuerda con la cuenta utilizada para iniciar
sesión en ACL GRC. Como escritor de scripts puede no ser apropiado que uti-
lice su propio token de acceso si está escribiendo un script que será usado por
otras personas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 192 de 898


Comandos

Comando EXTRACT
Extrae datos de una tabla ACL y envía esos datos a una tabla de ACL nueva o los anexa a una tabla de
ACL existente. Puede extraer registros completos o campos seleccionados.

Sintaxis
EXTRACT {RECORD | FIELDS nombre_campo <AS nombre_visible> <...n>|FIELDS ALL} TO nom-
bre_tabla <IF prueba> <WHILE prueba> <FIRST rango|NEXT rango> <EOF> <APPEND> <OPEN>
<LOCAL>

Parámetros
Nombre Descripción

RECORD | FIELDS nom- Los campos que se deben incluir en la salida:


bre_campo |FIELDS ALL o RECORD: utilice el registro completo del campo de datos de origen: todos los cam-
pos de la tabla y todas las partes sin definir del registro
Los campos se utilizan en el orden en el que aparecen en el formato de tabla.
Conserva los campos calculados.
o FIELDS nombre_del_campo: usar los campos especificados
Los campos se utilizan en el orden en el que usted los indica.
Convierte los campos calculados en campos físicos del tipo de datos adecuado en la
tabla de destino: ASCII o Unicode (de acuerdo con la edición de ACL), ACL (el tipo de
datos numéricos nativo), Fechahora o Lógico. Completa los campos físicos con los
valores calculados reales.
o FIELDS ALL: usa todos los campos de tabla
Los campos se utilizan en el orden en el que aparecen en el formato de tabla.
Convierte los campos calculados en campos físicos del tipo de datos adecuado en la
tabla de destino: ASCII o Unicode (de acuerdo con la edición de ACL), ACL (el tipo de
datos numéricos nativo), Fechahora o Lógico. Completa los campos físicos con los
valores calculados reales.

AS nombre_visible Se utiliza únicamente al extraer por medio de FIELDS nombre_campo.


opcional El nombre visible (título de columna alternativo) para el campo en la vista de la nueva
tabla de ACL. Si desea que el nombre visible sea el mismo que el nombre del campo o
un nombre visible existente en la tabla de origen, no use AS.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 193 de 898


Comandos

Nombre Descripción

Nota
AS solo funciona cuando se extrae a una nueva tabla. Si está agregando
a una tabla existente, los títulos de columna alternativos de la tabla exis-
tente tienen prioridad.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

EOF Ejecute el comando una vez más después de que se alcance el final del archivo.
opcional De esta manera, se asegura de que se procese el registro final de la tabla cuando se
encuentra dentro de un comando GROUP. Utilice EOF solo si todos los campos son cam-
pos calculados que hacen referencia a registros anteriores.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 194 de 898


Comandos

Nombre Descripción

Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

Ejemplos
Extracción de todos los registros de una tabla a una nueva tabla
Usted crea un duplicado exacto de la tabla Cuentas _por_cobrar_Cliente extrayendo todos los registros a
una nueva tabla de ACL. Todos los campos calculados se conservan como campos calculados:

OPEN Cuentas_por_cobrar_Cliente
EXTRACT RECORD TO "Cuentas_por_cobrar_Cliente_2"

Extracción de todos los campos de una tabla a una nueva tabla


Usted extrae todos los campos definidos de la tabla Cuentas_por_cobrar_Cliente a una nueva tabla de
ACL. Los campos calculados se convierten en campos físicos y se completan con los valores calculados
reales:

OPEN Cuentas_por_cobrar_Cliente
EXTRACT FIELDS ALL TO "Cuentas_por_cobrar_Cliente_2"

Extracción de todos los registros de una tabla y anexión a una tabla existente
Usted extrae todos los registros de la tabla Cuentas_por_cobrar_Cliente y los anexa a un grupo al final de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 195 de 898


Comandos

la tabla Cuentas_por_cobrar_cliente_maestra:

OPEN Cuentas_por_cobrar_Cliente
EXTRACT RECORD TO "Cuentas_por_cobrar_Cliente_maestra" APPEND

Extracción de todos los registros de una tabla y anexión a una tabla existente en una carpeta diferente
Usted extrae todos los registros de la tabla Cuentas_por_cobrar_Cliente y los anexa a un grupo al final
de la tabla Cuentas_por_cobrar_cliente_maestra, que se encuentra en una carpeta diferente de la car-
peta del proyecto de ACL:

OPEN Cuentas_por_cobrar_Cliente
EXTRACT RECORD TO ""C:\Usuarios\Datos del Cliente\Cuentas_por_cobrar_maestra" APPEND

Extracción de un subconjunto de campos de una tabla a una nueva tabla


Usted extrae tres campos de la tabla Cuentas_por_cobrar_Cliente a una nueva tabla de ACL:

OPEN Cuentas_por_cobrar_Cliente
EXTRACT FIELDS Nombre Vencimiento Fecha TO "Cuentas_por_cobrar_cliente_fechas.fil"

Creación de nombres visibles para los campos extraídos


Usted extrae tres campos de la tabla Cuentas_por_cobrar_Cliente y crea nombres visibles para los cam-
pos de la nueva tabla de ACL.

OPEN Cuentas_por_cobrar_Cliente
EXTRACT FIELDS Nombre AS "Cliente;Nombre" Vencimiento AS "Vencimiento;Fecha" Date AS
"Factura;Fecha" TO "Cuentas_por_cobrar_cliente_fechas.fil"

Extracción de campos sobre la base de una condición


Usted extrae tres campos de la tabla Cuentas_por_cobrar_Cliente a una nueva tabla de ACL si la fecha
de la columna Vencimiento es anterior al 1 de julio de 2014:

OPEN Cuentas_por_cobrar_Cliente
EXTRACT FIELDS Nombre Vencimiento Fecha IF Vencimiento < `20140701` TO "Vencido.fil"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 196 de 898


Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Comparación entre EXTRACT y la copia de una tabla


EXTRACT crea un nuevo archivo de datos de origen (.fil) además de un nuevo formato de tabla.
Al copiar una tabla con el Navegador (Editar > Copiar), se crea un nuevo formato de tabla que permanece
asociado al archivo de datos original. No se crea un nuevo archivo de datos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 197 de 898


Comandos

Comando FIELDSHIFT
Cambia la posición inicial de una definición de campo en un formato de tabla.

Sintaxis
FIELDSHIFT START posición_inicial COLUMNS bytes_para_desplazar <FILTER nombre_filtro_
datos> <OK>

Parámetros
Nombre Descripción

START posición_inicial La posición del byte inicial de la primera definición de campo que desea desplazar.
También se desplazan todas las definiciones de campo a la derecha de la definición
de campo especificada.
Si especifica una posición de byte que no es la inicial, se utiliza la siguiente posición
de byte inicial.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

En general, para los datos Unicode, debe especificar una posición de


byte de inicio impar. Si especifica una posición de inicio par, es posible
que los caracteres no se vean correctamente.

COLUMNS bytes_para_ La cantidad de bytes que se debe usar para desplazar la definición de campo.
desplazar
Escriba un número positivo para desplazar una definición de campo hacia la derecha.
Escriba un número negativo para desplazar una definición de campo hacia la
izquierda.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 198 de 898


Comandos

Nombre Descripción

Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

Para los datos Unicode, especifique solo un número par de bytes. Si


especifica un número de bytes impar, es posible que los caracteres no
se vean correctamente.

FILTER nombre_filtro_ El nombre del filtro que identifica las definiciones de campo asociadas con una defi-
datos nición de registro específica.
opcional

Aceptar Elimina o sobrescribe los elementos sin pedirle que confirme la acción.
opcional

Ejemplos
Desplazamiento de definiciones de campo
Usted desplaza la definición de campo comenzando por el byte 11 (y todas las definiciones de campo pos-
teriores) 4 bytes hacia la derecha:

FIELDSHIFT START 12 COLUMNS 4

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Las definiciones de campo desplazadas deben permanecer dentro de la longitud del


registro
Al desplazar una o más definiciones de campo hacia la derecha o la izquierda, los campos no pueden supe-
rar la longitud del campo en ninguna dirección.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 199 de 898


Comandos

Recuerde que FIELDSHIFT mueve tanto la definición de campo especificada como las definiciones de
campo que se encuentran a la derecha de la definición especificada. Si el bloque de definiciones des-
plazadas llega a superar la longitud del registro en alguna de las direcciones, aparece un mensaje de
error y no se ejecuta el comando.
Consejo
Si el mensaje de error aparece porque usted está excediendo el final del registro, pruebe
quitar la definición de campo final para hacer espacio para las definiciones de campo que
se están desplazando.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 200 de 898


Comandos

Comando FIND
Busca el primer valor que coincida con la cadena de caracteres especificada en un campo de caracteres
indexado.
Nota
El comando FIND y la función FIND( ) son dos funciones independientes de ACL, que tie-
nen diferencias significativas. Si desea obtener información acerca de la función, consulte
"Función FIND( )" en la página 530.

Sintaxis
FIND valor_búsqueda

Parámetros
Nombre Descripción

valor_búsqueda La cadena de caracteres que se buscará.


valor_búsqueda distingue entre mayúsculas y minúsculas, y no puede incluir espacios al
principio.
No encierre el valor literal entre comillas, a menos que las comillas formen parte de los
datos que se están buscando.

Ejemplos
Búsqueda de un valor específico
Desea localizar el primer valor del campo de caracteres Número_de_tarjeta que coinciden de manera
exacta con el valor "8590124" o comienzan con él.
Primero indiza el campo Número_de_tarjeta en orden ascendente. Después ejecuta FIND:

INDEX ON Número_de_tarjeta TO "NúmTarj" OPEN


SET INDEX TO "NúmTarj"
FIND 8590124

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 201 de 898


Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cuándo usar FIND


Utilice el comando FIND para pasar directamente al primer registro de una tabla que contenga el valor_
búsqueda en el campo de caracteres indexado.

Requisitos de INDEX
Para utilizar el comando, la tabla en la que busca debe estar indexada en un campo de caracteres en
orden ascendente.
Si hay varios campos de caracteres indexados en orden ascendente, sólo se busca en el primer campo
especificado en el índice. El comando no se puede utilizar para buscar campos indexados que no sean de
caracteres o campos de caracteres que estén indexados en orden descendente.

Coincidencia parcial
Admite la coincidencia parcial. El valor de la búsqueda puede estar incluido en un valor más extenso den-
tro del campo indexado. Sin embargo, el valor de búsqueda debe aparecer al principio del campo para
que se considere una coincidencia.

Salida de FIND según la coincidencia


El comando FIND produce uno de los siguientes resultados, según si se encuentra una coincidencia con
el valor de la búsqueda:
l se encuentra el valor de la búsqueda: se selecciona el primer registro coincidente en la tabla.
l no se encuentra el valor de la búsqueda: la tabla se ubica en el primer registro con un valor supe-
rior al valor de la búsqueda
Si el campo indexado no contiene valores que sean mayores que el valor de la búsqueda, la tabla
se ubica en el primer registro. En ambos casos, se muestra el mensaje "Ningún índice es igual a la
clave".
El comando FIND no se ve afectado por la opción Comparaciones de caracteres exactos (SET EXACT
ON/OFF).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 202 de 898


Comandos

Comando FUZZYDUP
Detecta valores casi idénticos (duplicados inexactos) en un campo de caracteres.

Sintaxis
FUZZYDUP ON campo_clave <OTHER campos> LEVDISTANCE valor <DIFFPCT porcentaje>
<RESULTSIZE porcentaje> <EXACT> <IF test> TO nombre_tabla <LOCAL> <OPEN>

Parámetros
Nombre Descripción

ON campo_clave El campo de caracteres o la expresión que se probará para detectar duplicados ine-
xactos.

OTHER campos Una lista de campos o expresiones que se incluirán en la salida.


opcional

LEVDISTANCE valor La máxima Distancia de Levenshtein permitida entre dos cadenas para que se puedan
identificar como duplicados inexactos e incluir en los resultados.
El valor de LEVDISTANCE no puede ser menor que 1 ni mayor que 10. Al incrementar el
valor de LEVDISTANCE aumenta la cantidad de resultados porque se incluyen valores
con un mayor grado de diferencias; es decir valores que difieren más entre sí.
Si desea obtener más información, consulte "Comportamiento de FUZZYDUP" en la
página 206.

DIFFPCT porcentaje Un umbral que limita el 'porcentaje de diferencia' o la proporción de una cadena que
puede ser diferente.
opcional
El porcentaje resultante de un cálculo interno de ACL sobre los posibles pares dupli-
cados inexactos debe ser menor que o igual al valor de DIFFPCT para que el par se
incluya en los resultados. El valor de DIFFPCT no puede ser menor que 1 ni mayor que
99.
Si se omite DIFFPCT, el umbral se desactiva y el porcentaje de diferencia no se tiene en
cuenta durante el procesamiento del comando FUZZYDUP.
Si desea obtener más información, consulte "Comportamiento de FUZZYDUP" en la
página 206.

RESULTSIZE porcentaje El tamaño máximo del conjunto de resultados de salida como un porcentaje de la canti-
dad de registros del campo clave.
opcional
Por ejemplo, para un campo clave con 50.000 registros, un RESULTSIZE de 3 finalizaría
con el procesamiento si los resultados superan los 1500 duplicados inexactos (50.000 x

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 203 de 898


Comandos

Nombre Descripción

0,03). No se produce ninguna tabla de salida si el procesamiento finaliza.


El valor de RESULTSIZE no puede ser menor que 1 ni mayor que 1000 (mil) por ciento.
El límite de 1000 % es para adaptarse a la naturaleza de la coincidencia de muchos a
muchos, que puede producir resultados más numerosos que el conjunto de datos de
prueba original.
Si se omite RESULTSIZE, el umbral se desactiva y tamaño del resultado no se tiene en
cuenta durante el procesamiento del comando FUZZYDUP.
¡Precaución!
La omisión de RESULTSIZE puede generar un conjunto de resultados
excesivamente grande que tarda mucho tiempo en procesarse o que
puede ocasionar que se exceda la memoria disponible, lo cual finaliza el
procesamiento. Omita RESULTSIZE solo si está seguro de que los resul-
tados tendrán un tamaño manejable.

EXACT Incluye duplicados exactos, así como duplicados inexactos en los resultados.
opcional

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 204 de 898


Comandos

Variables de salida de ACL


Nombre Contiene

GAPDUPn La cantidad total de grupos de duplicados inexactos, faltantes o duplicados identificados


por el comando.

Ejemplos
Comprobar un campo de apellido en busca de duplicados inexactos
Usted somete a prueba un campo de apellidos para detectar duplicados inexactos (el campo Apellido de la
tabla Lista_empleados en ACL DATA\Archivos de datos de muestra\Datos_empleados_
Metaphor.ACL). Los resultados se envían a una nueva tabla ACL.
l Además del campo de prueba, otros campos se incluyen en los resultados.
l La máxima Distancia de Levenshtein permitida es 1.
l La proporción de una cadena que puede ser diferente está limitada a 50 %.
l El tamaño de los resultados está limitado al 20 % del tamaño del campo de prueba.
l Además de los duplicados inexactos, se incluyen los duplicados exactos.

FUZZYDUP ON Apellido OTHER Nombre NroEmpl LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20


EXACT TO "Apellido_impreciso" OPEN

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
El comando FUZZYDUP busca valores casi idénticos (duplicados inexactos) o encuentra ortografía incon-
sistente en los datos ingresados manualmente.
A diferencia de la función ISFUZZYDUP( ), que identifica una lista exhaustiva de duplicados inexactos que
difieren por un solo carácter, el comando FUZZYDUP identifica todos los duplicados inexactos en un
campo, los organiza en grupos y genera resultados no exhaustivos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 205 de 898


Comandos

Qué significa no exhaustivo


No exhaustivo significa que los grupos de duplicados inexactos individuales en los resultados pueden no
contener todos los duplicados inexactos en un campo de prueba que estén dentro del grado de diferencia
especificado por el propietario del grupo. Sin embargo, si el propietario de un grupo es un duplicado impre-
ciso de otro valor en el campo de prueba, los dos valores aparecerán juntos en un grupo en algún lugar de
los resultados.
Si producir una lista exhaustiva de duplicados inexactos para un valor específico en el campo de prueba
es importante para su análisis, puede utilizar la función ISFUZZYDUP( ) para este fin.

Comportamiento de FUZZYDUP
El comando FUZZYDUP tiene dos parámetros que le permiten controlar el grado de diferencia entre los
duplicados inexactos y el tamaño de los resultados:
l LEVDISTANCE
l DIFFPCT
Es posible que tenga que probar diferentes combinaciones de valores de configuración para estos dos
parámetros a fin de determinar qué funciona mejor para un conjunto de datos en particular.

LEVDISTANCE (Distancia de Levenshtein)


Cuando procesa los datos, el comando FUZZYDUP calcula la Distancia de Levenshtein entre cada par
evaluado de cadenas en el campo de prueba y calcula el porcentaje de diferencia. La Distancia de Levens-
htein es un valor que representa el mínimo número de ediciones de caracteres individuales requerido
para hacer que una cadena sea idéntica a otra. Si desea obtener más información, consulte "Función
LEVDIST( )" en la página 591.

DIFFPCT (Porcentaje de diferencia)


El porcentaje de diferencia es el porcentaje de la cadena más corta de las dos cadenas evaluadas que es
diferente, y es resultado del siguiente cálculo interno de ACL, que utiliza la Distancia de Levenshtein entre
las dos cadenas:
Distancia de Levenshtein / número de caracteres en la cadena más corta × 100 = porcentaje de diferencia

Más información
Para obtener información detallada acerca de la configuración de la diferencia de los duplicados ine-
xactos, sobre cómo controlar el tamaño de los resultados y sobre los grupos de duplicados inexactos, con-
sulte la Descripción general de los duplicados inexactos.

Distinción entre mayúsculas y minúsculas


El comando FUZZYDUP no distingue entre mayúsculas y minúsculas; por lo tanto, "SMITH" es equi-
valente a "smith".

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 206 de 898


Comandos

Recorte automático de los espacios en blanco al final


El comando FUZZYDUP recorta automáticamente los espacios en blanco en el campo_clave, por lo que no
es necesario utilizar las funciones ALLTRIM( ) o TRIM( ) cuando se especifica un campo clave para el
campo_clave.
Si concatena campos para campo_clave, debe usar ALLTRIM( ), tal como se muestra a continuación.

Mejorar la efectividad de FUZZYDUP


Concatenar campos
Concatenar dos o más campos de prueba puede mejorar la efectividad del comando FUZZYDUP al aumen-
tar el grado de unicidad de los valores de prueba.
Por ejemplo:

FUZZYDUP ON ALLTRIM(Nombre)+ALLTRIM(Apellido) OTHER Nombre Apellido NroEmpl


LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Nombre_Apellido_inexacto" OPEN

La función OMIT( )
La función OMIT( ) también puede mejorar la eficacia del comando al eliminar elementos genéricos como
"Corporación" o "Inc." de los valores del campo.
La eliminación de los elementos genéricos centra la comparación de cadenas de FUZZYDUP sólo en la por-
ción de las cadenas donde puede ocurrir una diferencia significativa.
Si desea obtener más información, consulte "Función OMIT( )" en la página 642.

Otros métodos de comparación de cadenas


l La función DICECOEFFICIENT( ): ofrece un método de comparación de cadenas que le quita el
énfasis o ignora completamente la posición relativa de los caracteres o de los bloques de caracteres.
l Las funciones SOUNDSLIKE( ) y SOUNDEX( ): proporcionan un método para comparar cadenas
basándose en una comparación fonética (sonido) en lugar de una comparación ortográfica (escri-
tura).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 207 de 898


Comandos

Comando GAPS
Detecta si un campo numérico o de fechahora de una tabla de ACL contiene uno o más faltantes en la
secuencia de datos.

Sintaxis
GAPS <ON> campo_clave <D> <UNFORMATTED> <PRESORT> <MISSING límite>
<HEADER texto_encabezado> <FOOTER texto_pie_de_página> <IF prueba> <WHILE prueba>
<FIRST rango|NEXT rango> <TO {SCREEN|nombre_tabla|nombre_archivo|PRINT}> <APPEND>
<LOCAL> <OPEN>

Parámetros
Nombre Descripción

ON campo_clave D Los campos o expresiones en los que se buscarán faltantes.


Incluya D para ordenar el campo clave en orden descendente. El criterio de orde-
namiento predeterminado es ascendente.

UNFORMATTED Suprime los encabezados de página y los saltos de página cuando los resultados se
envían a un archivo.
opcional

PRESORT Ordena la tabla por el campo primario antes de ejecutar el comando.


opcional Nota
No puede utilizar PRESORT dentro del comando GROUP.

MISSING límite Los resultados de la salida contienen elementos faltantes individuales en lugar de inter-
valos de faltantes.
opcional
El valor de límite especifica la máxima cantidad de elementos faltantes que se repor-
tará para cada faltante identificado. El valor predeterminado es 5. Si se excede el límite
para un faltante determinado, los elementos faltantes se reportan como un intervalo de
ese faltante específico.
El valor de límite no restringe la cantidad total de elementos faltantes reportados, sólo
restringe el número de elementos faltantes reportados dentro de un faltante específico.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 208 de 898


Comandos

Nombre Descripción

página texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
anula la variable de sistema FOOTER de ACL.
opcional

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | nombre_archivo | o SCREEN: muestra los resultados en el área de visualización de ACL
PRINT o nombre_tabla: guarda los resultados en una tabla de ACL
opcional Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 209 de 898


Comandos

Nombre Descripción

Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

Variables de salida de ACL


Nombre Contiene

GAPDUPn La cantidad total de grupos de duplicados inexactos, faltantes o duplicados iden-


tificados por el comando.

Ejemplos
Prueba para detectar números de factura faltantes
Usted utiliza GAPS para garantizar que no falte ningún número de factura en una tabla Facturas :

OPEN Facturas
GAPS ON Núm_Factura PRESORT TO "Facturas_Faltantes.fil"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 210 de 898


Comandos

Observaciones
Uso de GAPS en campos de caracteres
Además de probar campos numéricos o de fechahora, también puede probar si hay faltantes en datos
numéricos que aparecen en un campo de carácter. Por ejemplo, puede verificar los números de cheque,
que suelen tener el formato de datos de carácter.
Si hay letras y números juntos en un campo de carácter, únicamente se prueban los números y se ignoran
las letras.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 211 de 898


Comandos

Comando GROUP
Ejecuta uno o más comandos de ACLScript en un registro antes de pasar al siguiente registro de la tabla,
con solo una pasada a través de la tabla. La ejecución de los comandos se puede controlar por medio de
las condiciones.

Sintaxis
GROUP <IF prueba> <WHILE prueba> <FIRST|NEXT rango|NEXT rango>
comando
<...n>
<ELSE IF prueba>
comando
<...n>
<ELSE>
comando
<...n>
END

Nota
Algunos comandos de ACL no se pueden usar con el comando GROUP. Si desea obte-
ner más información, consulte "Comandos que se pueden utilizar dentro del comando
GROUP" en la página 216.

Parámetros
Nombre Descripción

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

comando <...n> Uno o más comandos de ACLScript que se deben ejecutar dentro del GROUP. Para

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 212 de 898


Comandos

Nombre Descripción

ver una lista completa de los comandos admitidos dentro de GROUP, consulte "Coman-
dos que se pueden utilizar dentro del comando GROUP" en la página 216.
Si hay un IF o ELSE IF antes, la prueba se debe evaluar como verdadera.
Si el comando se indica dentro de ELSE, el comando se ejecuta si hay registros que no
han sido procesados por ninguno de los comandos precedentes. Puede incluir múl-
tiples comandos, con cada comando comenzando en una línea separada.

ELSE IF prueba Abre un bloque ELSE IF para el comando GROUP. La condición somete a prueba regis-
tros que no coincidieron con la prueba del comando GROUP o cualquier prueba ELSE
opcional
IF previa.
Puede incluir múltiples pruebas ELSE IF y estas se evalúan de arriba hacia abajo,
hasta que el registro se evalúe como verdadero y los comandos que siguen a esa ins-
trucción ELSE IF se ejecuten.

ELSE Abre un bloque ELSE para el comando GROUP. Los comandos que siguen se eje-
cutan para los registros que se evaluaron como falsos en todas las pruebas anteriores.
opcional

END El final del comando GROUP.

Ejemplos
GROUP simple
Los grupos simples comienzan con un comando GROUP, siguen con una serie de comandos y terminan
con un comando END:

GROUP
COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
END

GROUP IF
Los grupos condicionales ejecutan comandos basados en una condición verdadera o falsa. El siguiente
comando GROUP se ejecuta solamente en registros con un valor de Clase_producto menor que 5:

GROUP IF Clase_producto < "05"


COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 213 de 898


Comandos

CLASSIFY ON Ubicación SUBTOTAL Cantidad


END

GROUP IF ...ELSE
Los registros que no cumplen la condición de la prueba son ignorados, a menos que usted incluya el blo-
que ELSE.
Cualquier número de comandos puede seguir una instrucción ELSE. En el siguiente ejemplo, todos los
registros que no cumplen con la condición se procesan totalizando su campo Cantidad:

GROUP IF Clase_producto < "05"


COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
ELSE
TOTAL Cantidad
END

GROUP IF...ELSE IF...ELSE


Puede incluir varios bloques ELSE IF en un grupo, siempre que cada bloque ELSE IF contenga una
prueba diferente. En el siguiente ejemplo, los bloques ELSE IF y el bloque ELSE generan cuatro totales:

GROUP IF Clase_producto < "05"


COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
ELSE IF Clase_producto = "05"
TOTAL Cantidad
ELSE IF Clase_producto = "06"
TOTAL Cantidad
ELSE IF Clase_producto = "07"
TOTAL Cantidad
ELSE
TOTAL Cantidad
END

Comandos GROUP anidados


Los grupos anidados son grupos incluidos dentro de otros grupos. Los grupos anidados proporcionan un
poderoso método para controlar qué comandos se ejecutan para qué registro. La mayoría de las apli-
caciones no requieren un nivel de funcionalidad tan avanzado, pero se encuentra disponible, si fuera nece-
sario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 214 de 898


Comandos

Como en otros grupos, utilice el comando END para finalizar un grupo anidado. ACL inicia el pro-
cesamiento de los datos solo después de que todos los comandos de grupo han finalizado:

GROUP IF Clase_producto < "05"


COUNT
STRATIFY ON Cantidad SUBTOTAL Cantidad MIN 0 MAX 100 INT 10
GROUP IF Cantidad > 0
STATISTICS ON Cantidad
HISTOGRAM ON Cantidad
END
ELSE
TOTAL Cantidad
END

En este ejemplo, todos los comandos desde COUNT hasta el próximo GROUP inclusive se ejecutan solo si
Clase_producto es menor que 05.
Los comandos STATISTICS e HISTOGRAM se ejecutan si Cantidad es mayor que cero. Sin embargo,
dado que el segundo comando GROUP está anidado, los comandos STATISTICS e HISTOGRAM se eje-
cutan solo para aquellos registros que cumplan con las condiciones Clase_producto < "05" y Cantidad > 0.

Generación de variables del sistema dentro de un GROUP


Puede usar GROUP para crear varias variables del sistema para un único comando.
En general, al ejecutar un comando como TOTAL, COUNT o STATISTICS, únicamente se genera una
variable del sistema. Cada vez que ejecute el comando, sobrescribe el valor de la última ejecución del
comando. Los comandos que se ejecutan dentro de un GROUP crean una variable específica para cada ins-
tancia del comando dentro del GROUP.
En este ejemplo, el comando TOTAL calcula la suma del campo Importe para cada clase de producto en la
tabla Metaphor_Trans_2002. Cuando se ejecuta el código, se generan las siguientes variables y se las
puede usar en comandos posteriores después del GROUP:
l TOTAL2: la suma del campo Importe para la clase de producto 03
l TOTAL3: la suma del campo Importe para la clase de producto 05
l TOTAL4: la suma del campo Importe para la clase de producto 08
l TOTAL5: la suma del campo Importe para la clase de producto 09

OPEN Metaphor_Trans_2002
GROUP
TOTAL AMOUNT IF PRODCLS = "03"
TOTAL AMOUNT IF PRODCLS = "05"
TOTAL AMOUNT IF PRODCLS = "08"
TOTAL AMOUNT IF PRODCLS = "09"
END
CLOSE Metaphor_Trans_2002

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 215 de 898


Comandos

Observaciones
Consejo
Si desea ver un tutorial detallado que cubre los comandos GROUP y LOOP, consulte
"Agrupación y bucles" en la página 33.

Comandos que se pueden utilizar dentro del comando GROUP


La siguiente tabla enumera comandos de ACL que se pueden utilizar dentro del comando GROUP.
Si un comando no aparece a continuación, no es posible usarlo dentro de GROUP.

AGE ASSIGN BENFORD

CLASSIFY COMMENT COUNT

CROSSTAB DUPLICATES EXPORT

EXTRACT GAPS GROUP

HISTOGRAM JOIN LIST

LOOP MERGE PROFILE

REPORT SEQUENCE STATISTICS

STRATIFY SUMMARIZE TOTAL

VERIFY

Agrupación y bucles
El comando GROUP le permite ejecutar varios comandos en un registro antes de pasar al siguiente regis-
tro de la tabla, lo cual reduce significativamente el tiempo de procesamiento.
Puede utilizar el comando LOOP dentro del comando GROUP si necesita ejecutar una serie de coman-
dos más de una vez en un registro.

Uso de variables con GROUP


Variables definidas por el usuario
Para usar una variable dentro del comando GROUP, defina la variable antes de introducir el bloque
GROUP.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 216 de 898


Comandos

Nota
Si bien puede inicializar y definir una variable dentro de un bloque GROUP, no es reco-
mendable que lo haga. El uso de variables que se inicializan dentro de un bloque GROUP
pueden generar resultados inesperados.
Dentro de un GROUP, puede evaluar variables utilizando la sustitución de variables. El valor de la variable
permanece igual que al introducir el comando GROUP.
No puede definir una variable dentro de un comando GROUP y luego hacer referencia a ella con la sus-
titución de variables:

ASSIGN v_prueba = "hola"


GROUP
ASSIGN v_prueba2 = "%v_prueba% mundo"
COMMENT esto no sería válido: v_prueba3 = "%v_prueba2% nuevamente"
END

Variables definidas por el sistema


Algunos comandos, como TOTAL y STATISTICS generan variables del sistema sobre la base de los cál-
culos que realizan los comandos. Si utiliza un GROUP para ejecutar estos comandos, las variables del sis-
tema que se obtienen se numeran de manera consecutiva, comenzando por el número de línea del
comando dentro de GROUP (excluidas las líneas vacías) y llegando hasta n. El valor de n se incrementa en
1 por cada número de línea en GROUP.
Nota
Debe esperar hasta que GROUP finalice antes de usar cualquier variable generada por el
sistema creada dentro del GROUP. El comando se debe ejecutar con cada registro de la
tabla antes de que la variable esté disponible. Utilice estas variables después de la palabra
clave END de GROUP.
En el siguiente ejemplo, el primer comando TOTAL genera la variable TOTAL2 y el segundo genera
TOTAL4. Ambas variables están disponibles para ser usadas en comandos posteriores una vez que se
completa GROUP:

GROUP
TOTAL Descuento IF Prioridad_orden = "Baja"
ASSIGN v_var = "prueba"
TOTAL Descuento IF Prioridad_orden = "Alta"
END

Notas sobre la sintaxis


l La sintaxis de múltiples líneas indicada para el comando GROUP es obligatoria y, por lo tanto, el
comando GROUP no se puede ingresar en la línea de comandos.
l Cada comando GROUP deberá terminar con un comando END.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 217 de 898


Comandos

l Cuando utilice el comando GROUP en sus scripts, puede mejorar la legibilidad del bloque de
comandos al dejar sangría en los comandos indicados dentro del grupo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 218 de 898


Comandos

Comando HELP
Inicia los documentos de Ayuda de ACL Analytics en un navegador.

Sintaxis
HELP

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 219 de 898


Comandos

Comando HISTOGRAM
Agrupa registros sobre la base de los valores de un campo de caracteres o numérico, hace un recuento
de la cantidad de registros de cada grupo y muestra los grupos y los recuentos en un gráfico de barras.

Sintaxis
HISTOGRAM {<ON> campo_caracteres|<ON> campo_numérico MINIMUM valor MAXIMUM valor
{<INTERVALS número>|FREE valor_intervalo <...n> último_intervalo}} <TO {SCREEN|nombre_
archivo|GRAPH|PRINT}> <IF prueba> <WHILE prueba> <FIRST rango|NEXT rango> <HEADER
texto_encabezado> <FOOTER texto_pie_de_página> <KEY salto_campo> <SUPPRESS>
<COLUMNS número> <APPEND> <LOCAL> <OPEN>

Parámetros
Nombre Descripción

ON campo_caracteres La expresión o el campo de caracteres que se debe utilizar para el histograma.

ON campo_numérico La expresión o el campo numérico que se debe utilizar para el histograma.

MINIMUM valor Se aplica sólo a campos numéricos. El valor mínimo del primer intervalo numérico.
MINIMUM es opcional si se está utilizando FREE; de lo contrario, es obligatorio.

MAXIMUM valor Se aplica sólo a campos numéricos. El valor máximo del último intervalo numérico.
MAXIMUM es opcional si se está utilizando FREE; de lo contrario, es obligatorio.

INTERVALS número Se aplica sólo a campos numéricos.


opcional El número de intervalos de igual tamaño que ACL genera en el rango especificado por
los valores MINIMUM y MAXIMUM. Si no especifica un número de intervalos, se utiliza
el número predeterminado.
El valor predeterminado se especifica con el número Intervalos en la ficha Comando
del cuadro de diálogo Opciones.

FREE valor_intervalo Se aplica sólo a campos numéricos.


<...n> último_intervalo
Crea intervalos de tamaño personalizado especificando el punto de inicio de cada inter-
opcional valo y el punto final del último intervalo.
Si especifica los valores MINIMUM y MAXIMUM, esos valores son el punto inicial del pri-
mer intervalo y el punto final del último intervalo, y cada valor_intervalo crea un inter-
valo adicional dentro del rango. Los valores del intervalo que especifique deben ser
superiores al valor MINIMUM e iguales o inferiores al valor MAXIMUM.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 220 de 898


Comandos

Nombre Descripción

Los valores del intervalo deben estar en una secuencia numérica y no pueden tener
valores duplicados:

FREE -1000; 0; 1000; 2000; 3000

Si especifica tanto FREE como INTERVALS, se ignora INTERVALS.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo | GRAPH | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o GRAPH: muestra los resultados en un gráfico en el área de visualización de ACL
o PRINT: envía los resultados a la impresora predeterminada
Nota
Los resultados del histograma que se envían a un archivo aparecen
como una representación de texto de un gráfico de barras.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

KEY salto_campo El campo o la expresión que agrupa los cálculos de subtotal de grupos. Se calcula un
subtotal cada vez que cambia el valor de salto_campo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 221 de 898


Comandos

Nombre Descripción

opcional salto_campo debe ser un campo de caracteres o una expresión. Puede especificar un
solo campo, pero puede usar una expresión que contenga más de un campo.

SUPPRESS Los valores por encima del valor MÁXIMO y por debajo del valor MÍNIMO se excluyen
de la salida del comando.
opcional

COLUMNS número La longitud del eje X en la representación de texto del gráfico de barras si envía los
resultados del histograma a un archivo de texto.
opcional
El valor número es el número de espacios de caracteres (columnas de texto) que se
deben utilizar para el eje X (y las etiquetas del eje Y). Si omite COLUMNS, se utiliza el
valor predeterminado de 78 espacios de caracteres.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

Ejemplos
Histograma básico de salario por horas
Usted utiliza HISTOGRAM para crear un gráfico que muestra la distribución de los salarios entre 0 y 100
dólares por hora:

HISTOGRAM ON Tarifa MINIMUM 0 MAXIMUM 100 TO GRAPH

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 222 de 898


Comandos

Histograma con intervalos definidos para salario por horas


Continuando con el ejemplo anterior, usted utiliza HISTOGRAM para especificar los rangos del gráfico de
una manera que tiene más sentido.
La mayoría de los salarios se encuentran entre 20 y 50 dólares por hora; por lo tanto, el gráfico incluye los
siguientes números de intervalos:
l tres en el rango de 20 a 50
l uno para 0-20
l uno para 50-100
l uno para > 100

HISTOGRAM ON Tarifa MINIMUM 0 MAXIMUM 100 FREE 20;30;40;50;100 TO GRAPH

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Rellenar los valores bajo y elevado


Puede ejecutar los comandos STATISTICS o PROFILE en un campo numérico antes de ejecutar el
comando HISTOGRAM para rellenar automáticamente los valores de los parámetros MINIMUM y
MAXIMUM con los valores más bajos y más elevados del campo.

Comandos relacionados
La creación de un histograma utilizando un campo de caracteres es similar a la clasificación. La creación de
un histograma utilizando un campo numérico es similar a la estratificación.
A diferencia de otras operaciones de agrupamiento de ACL, los histogramas no admiten la subtotalización
de los campos numéricos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 223 de 898


Comandos

IF
Especifica una condición que debe evaluarse como verdadera para que se ejecute un comando.

Sintaxis
IF prueba comando

Parámetros
Nombre Descripción

prueba La condición que se debe cumplir para que se ejecute el comando.

comando Cualquier comando de ACLScript que se deba ejecutar si prueba se evalúa como ver-
dadera.

Ejemplos
Ejecución de un comando de manera condicional
Usted desea usar CLASSIFY en una tabla, pero únicamente si la variable v_recuento es mayor que diez:

IF v_contador > 10 CLASSIFY ON Ubicación TO "Contar_por_ubicación.fil" OPEN

Ejecución de un comando sobre la base de una decisión del usuario


Usted desea permitir que el usuario del script decida si clasificar una tabla.
En su script, incluye un cuadro de diálogo con una casilla de verificación que, si está seleccionada, per-
mite que se ejecute el comando CLASSIFY. La casilla de verificación almacena un valor de entrada de
Verdadero o Falso en la variable lógica v_casilla_verificación_clasificar.
Usted utiliza una prueba IF para determinar el valor de v_casilla_verificación_clasificar y, si el valor es Ver-
dadero, se ejecuta el comando CLASSIFY:

IF v_casilla_verificación_clasificar=T CLASSIFY ON Ubicación TO "Contar_por_ubicación.fil" OPEN

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 224 de 898


Comandos

Observaciones
Comparación entre el comando IF y el parámetro IF
La lógica del comando IF difiere de la del parámetro IF que es admitido por la mayoría de los comandos:
l El comando IF: determina si el comando asociado se ejecuta o no, basándose en el valor de la expre-
sión de prueba
l El parámetro IF: determina si el comando se ejecuta en cada registro de una tabla de ACL según el
valor de la expresión prueba

Toma de decisiones en los scripts


En un script, puede ingresar una serie de pruebas de comando IF y ejecutar diferentes comandos de
acuerdo con los resultados. El comando IF también se puede utilizar para probar el valor de una variable a
fin de determinar si debe haber procesamiento adicional.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 225 de 898


Comandos

Comando IMPORT ACCESS


Crea una tabla de ACL definiendo e importando un archivo de base de datos Microsoft Access.

Sintaxis
IMPORT ACCESS TO tabla <PASSWORD núm> nombrearchivo_importación FROM nom-
brearchivo_origen TABLE nombre_tabla_entrada CHARMAX longitud_campo_máx MEMOMAX lon-
gitud_campo_máx

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

PASSWORD núm Solo se usa con archivos de Access protegidos con contraseña.
opcional La definición de contraseña que se debe usar.
La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD.
No se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de
contraseñas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en
la página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una
extensión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 226 de 898


Comandos

Nombre Descripción

carpeta existente o una diferente:


o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-
cificar la ubicación del archivo:
o "C:\datos\nombrearchivo_origen"
o "datos\nombrearchivo_origen"

TABLE nombre_tabla_ El nombre de la tabla en el archivo de base de datos de Microsoft Access que se impor-
entrada tará.

CHARMAX longitud_ La longitud máxima en caracteres de cualquier campo en la tabla de ACL que se ori-
campo_máx gina como datos de carácter en el origen desde el cual está realizando la importación.
Puede especificar entre 1 y 255 caracteres.

MEMOMAX longitud_ La longitud máxima en caracteres para los campos de texto, nota o memo que está
campo_máx importando.
Puede especificar entre 1 y 32767 caracteres (ACL no Unicode) o 16383 caracteres
(ACL Unicode).

Ejemplos
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Importación a una tabla


Tiene un archivo de Microsoft Access denominado Códigos_aceptables.mdb. Debe importar la tabla
[Códigos_aceptables] desde el archivo a ACL. Para hacerlo, utilice el siguiente comando y cree una tabla
denominada códigos_aceptables en ACL.
La longitud de los campos de memorándum o caracteres importados se establece según la longitud del
valor más extenso del campo o según la cantidad máxima especificada de caracteres (el valor que sea más
menor):

SET ECHO NONE


SET PASSWORD 1 TO "qr347wx"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 227 de 898


Comandos

SET ECHO ON
IMPORT ACCESS TO códigos_aceptables PASSWORD 1 "C:\ACL DATA\Sample Data File-
s\códigos_aceptables.fil" FROM "Códigos_aceptables.mdb" TABLE "[Códigos_Aceptables]"
CHARMAX 60 MEMOMAX 70

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 228 de 898


Comandos

Comando IMPORT DELIMITED


Crea una tabla de ACL definiendo e importando un archivo de texto delimitado.

Sintaxis
IMPORT DELIMITED TO tabla nombrearchivo_importación FROM nombrearchivo_origen <SERVER
nombre_perfil> codificación_car_origen SEPARATOR {car|TAB|SPACE} QUALIFIER {car|NONE}
CONSECUTIVE STARTLINE número_de_línea <KEEPTITLE> <CRCLEAR> <LFCLEAR>
<REPLACENULL> <ALLCHAR> {ALLFIELDS|[sintaxis_campo] <...n> <IGNORE núm_campo>
<...n>}

sintaxis_campo ::=
FIELD nombre tipo AT posición_inicial DEC valor WID bytes PIC formato AS nombre_visible

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una exten-
sión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 229 de 898


Comandos

Nombre Descripción

cificar la ubicación del archivo:


o "C:\datos\nombrearchivo_origen"
o "datos\nombrearchivo_origen"

SERVER nombre_del_per- El nombre de perfil del servidor para el Servidor de AX donde están ubicados los datos
fil que desea importar.
opcional

codificación_car_origen La codificación y el conjunto de caracteres de los datos de origen.


Según la edición de ACL que esté utilizando y la codificación de los datos de origen, uti-
lice una de las siguientes opciones:
o 0: ACL No Unicode o ACL Unicode (datos ASCII)
o 2: Unicode ACL (datos Unicode, codificación UTF-16 LE)
o código_numérico: ACL Unicode (datos Unicode que no utilizan la codificación UTF-
16 LE)
Para determinar el código numérico que coincide con la codificación de los datos de
origen, realice una importación utilizando el Asistente de Definición de Datos, selec-
cione Texto codificado y busque la codificación coincidente en la lista desplegable.

SEPARATOR car El carácter que se debe utilizar como separador entre campos. Debe especificar el carác-
| TAB | SPACE ter como una cadena entre comillas.
Puede especificar un separador de espacio o tabulación escribiendo el carácter entre
comillas o utilizando una palabra clave:
o SEPARATOR " " o SEPARATOR TAB
o SEPARATOR " " o SEPARATOR SPACE

QUALIFIER car | NONE El carácter que se debe utilizar como calificador de texto para encerrar e identificar los
campos. Debe especificar el carácter como una cadena entre comillas.
Para especificar el carácter de comillas dobles como calificador de texto, encierre el
signo de las comillas dobles entre comillas simples: QUALIFIER '"'.
Puede especificar que no haya calificadores de texto utilizando cualquiera de los siguien-
tes métodos:
o QUALIFIER ""
o QUALIFIER NONE

CONSECUTIVE Los calificadores de texto consecutivos se deben tratar como un solo calificador.

STARTLINE número_de_ La línea en la que comienzan los datos.


línea
Por ejemplo, si las primeras cuatro líneas de datos contienen información de enca-
bezado que usted no desea, especifique 5 en número_de_línea.

KEEPTITLE Tratar a la primera fila de datos como nombres de campos en lugar de datos. Si se omite,
se utilizan nombres de campo genéricos.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 230 de 898


Comandos

Nombre Descripción

Nota
La fila que se utiliza como nombres de campo es el número de línea que
se especifique con STARTLINE.
Si especifica la sintaxis de FIELD de manera individual, FIELD nombre tiene prioridad
sobre los valores de la primera fila del archivo delimitado. En esta situación,
KEEPTITLE le permite prevenir la importación de los valores de la primera fila.

CRCLEAR Reemplaza los caracteres de retorno de carro (CR) que aparecen entre los calificadores
con caracteres de espacios. Debe especificar QUALIFIER con un valor car para usar
opcional
CRCLEAR.
Si usa tanto el parámetro CRCLEAR como LFCLEAR, el parámetro CRCLEAR debe
estar primero.

LFCLEAR Reemplaza los caracteres de salto de línea (LF) que aparecen entre los calificadores
con caracteres de espacios. Debe especificar QUALIFIER con un valor car para usar
opcional
LFCLEAR.
Si usa tanto el parámetro CRCLEAR como LFCLEAR, el parámetro CRCLEAR debe
estar primero.

REPLACENULL Reemplaza todos los caracteres NUL que aparecen en el archivo delimitado por carac-
teres de espacio. La cantidad de caracteres NUL reemplazados se registra en el log.
opcional

ALLCHAR Se asigna el tipo de datos de Carácter automáticamente a todos los campos importados.
opcional Consejo
Asignar un tipo de datos de Carácter a todos los campos importados sim-
plifica el proceso de importar archivos de texto delimitado. Una vez que
los datos se encuentran en ACL, puede asignarles diferentes tipos de
datos, como Numéricos o Fechahora, a los campos y especificar los deta-
lles de formato.
ALLCHAR resulta útil al importar una tabla con campos identificadores a
los que ACLasigna automáticamente tipos de datos Numéricos cuando
en realidad se deberían usar tipos de datos de Carácter.

ALLFIELDS Se importan todos los campos del archivo de datos de origen.


Si desea obtener información sobre la manera en la que ACL asigna los tipos de datos
cuando usted utiliza ALLFIELDS, consulte "Observaciones" en la página 234.
Nota
Si usted especifica ALLFIELDS, no especifique ninguna sintaxis
FIELD individual o IGNORE.

FIELD nombre tipo Los campos individuales para importar desde el archivo de datos de origen, incluidos el
nombre y el tipo de datos del campo. Para excluir un campo de la importación, no lo
especifique.
Si desea obtener información acerca de los tipos, consulte "Identificadores de los tipos
de datos de los campos" en la página 235.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 231 de 898


Comandos

Nombre Descripción

Nota
tipo se ignora si especifica ALLCHAR.

AT posición_inicial La posición del byte de inicio para el campo en el archivo de datos de ACL.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En general, en ACL Unicode, debe especificar una posición de byte de


inicio impar. Si especifica una posición de inicio par, es posible que los
caracteres no se vean correctamente.

DEC valor La cantidad de lugares decimales para los campos numéricos.


Nota
DEC se ignora si especifica ALLCHAR.

WID bytes La longitud del campo en bytes en el formato de tabla de ACL.


Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En ACL Unicode, especifique solo un número par de bytes. Si especifica


un número de bytes impar, es posible que los caracteres no se vean
correctamente.

PIC formato Nota


Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vistas
y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exactamente
con el formato físico de los datos de origen. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.
Nota
PIC se ignora si especifica ALLCHAR.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista de la nueva

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 232 de 898


Comandos

Nombre Descripción

tabla de ACL.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.
AS es obligatorio cuando se está definiendo un FIELD. Para que el nombre visible sea el
mismo que el nombre del campo, introduzca un valor en blanco en nombre_visible con
la siguiente sintaxis: AS "". Asegúrese de que no haya un espacio entre las dos comillas.

IGNORE núm_campo Excluye el campo del formato de tabla.


<...n>
núm_campo especifica la posición del campo en los datos de origen. Por ejemplo,
opcional IGNORE 5 excluye el quinto campo en los datos de origen del formato de tabla de ACL.
Nota
Los datos del campo se importan, pero no se definen y no aparecen en la
nueva tabla de ACL. Si es necesario, es posible definir los datos más
tarde y agregarlos a la tabla.
Para excluir completamente a un campo para que no se lo importe, no lo
especifique al especificar los campos de forma individual.

Ejemplos
Importación de todos los campos
Usted importa todos los campos desde un archivo delimitado por comas a una tabla de ACL llamada
Empleados . El archivo utiliza comillas como calificador de texto. Los tipos de datos se asignan de manera
automática sobre la base de un conjunto de reglas que se describen en "Observaciones" en la página
siguiente:

IMPORT DELIMITED TO Empleados "Empleados.fil" FROM "Empleados.csv" 0 SEPARATOR ","


QUALIFIER '"' CONSECUTIVE STARTLINE 1 KEEPTITLE ALLFIELDS

Importación de todos los campos, asignar automáticamente un tipo de datos de Carácter


Usted importa todos los campos desde un archivo delimitado por comas a una tabla de ACL llamada
Empleados . El archivo utiliza comillas como calificador de texto. Se asigna el tipo de datos de Carácter
automáticamente a todos los campos importados:

IMPORT DELIMITED TO Empleados "Empleados.fil" FROM "Empleados.csv" 0 SEPARATOR ","


QUALIFIER '"' CONSECUTIVE STARTLINE 1 KEEPTITLE ALLCHAR ALLFIELDS

Importación de los campos especificados, asignar automáticamente un tipo de datos de Carácter


Usted importa los campos especificados desde un archivo delimitado por tabulaciones a una tabla de ACL

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 233 de 898


Comandos

llamada Empleados . El archivo utiliza comillas como calificador de texto. Se asigna el tipo de datos de
Carácter automáticamente a todos los campos importados:

IMPORT DELIMITED TO Empleados "Empleados.fil" FROM "Empleados.csv" 0 SEPARATOR TAB


QUALIFIER '"' CONSECUTIVE STARTLINE 1 KEEPTITLE ALLCHAR FIELD "Nombre" C AT 1
DEC 0 WID 25 PIC "" AS "Nombre" FIELD "Apellido" C AT 26 DEC 0 WID 25 PIC "" AS "Apellido"
FIELD "NúmTarj" C AT 51 DEC 0 WID 16 PIC "" AS "Número tarjeta" FIELD "NroEmpl" C AT 67
DEC 0 WID 6 PIC "" AS "Número Empleado" FIELD "FechaContratación" C AT 73 DEC 0 WID 10
PIC "" AS "Fecha de contratación" FIELD "Salario" C AT 83 DEC 0 WID 5 PIC "" AS "" FIELD "Bono_
2016" C AT 88 DEC 0 WID 10 PIC "" AS "Bono 2016"

Importación de campos especificados, asignar tipos de datos de manera individual


Usted importa los campos especificados desde un archivo delimitado por punto y coma a una tabla de
ACL llamada Empleados . El archivo no utiliza calificadores de texto. Usted especifica el tipo de datos de
cada campo importado:

IMPORT DELIMITED TO Empleados "Empleados.fil" FROM "Empleados.csv" 0 SEPARATOR ";"


QUALIFIER "" CONSECUTIVE STARTLINE 1 KEEPTITLE FIELD "Nombre" C AT 1 DEC 0 WID 25
PIC "" AS "Nombre" FIELD "Apellido" C AT 26 DEC 0 WID 25 PIC "" AS "Apellido" FIELD "NúmTarj"
C AT 51 DEC 0 WID 16 PIC "" AS "Número tarjeta" FIELD "NroEmpl" C AT 67 DEC 0 WID 6 PIC ""
AS "Número empleado" FIELD "FechaContratación" D AT 73 DEC 0 WID 10 PIC "MM/DD/AAAA"
AS "Fecha de contratación" FIELD "Salario" N AT 83 DEC 0 WID 5 PIC "" AS "" FIELD "Bono_2016"
N AT 88 DEC 2 WID 10 PIC "" AS "Bono 2016"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo asigna ACL los tipos de datos cuando usted utiliza ALLFIELDS


Al utilizar el parámetro ALLFIELDS, en lugar de definir los campos de manera individual, ACL examina un
subconjunto de registros al principio del archivo delimitado y los asigna tipos de datos sobre la base de un
conjunto de reglas que se describen a continuación.
Una vez que los datos se encuentran en ACL, puede asignarles diferentes tipos de datos, como Numé-
ricos o Fechahora, a los campos y especificar los detalles de formato.

Tipo de datos asig-


Descripción de los valores de campo en el archivo delimitado Ejemplos nado

Los valores se encierran entre calificadores de texto "Proveedores ABC" Carácter

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 234 de 898


Comandos

Tipo de datos asig-


Descripción de los valores de campo en el archivo delimitado Ejemplos nado

"6.990,75"

Los valores incluyen un carácter no numérico en cualquier lugar del $995 Carácter
campo, con la excepción de las comas y los puntos que se utilizan
(995)
como separadores numéricos y el signo negativo (-)

Los valores incluyen únicamente números, separadores numéricos o 6.990,75 Numérico


el signo negativo
-6.990,75
995

En un campo hay uno o más valores en blanco Carácter

Valores de fechahora con separadores o meses alfabéticos 2016/12/31 Carácter


31 dic 2016

Valores de fechahora que son solo números 20161231 Numérico

Identificadores de los tipos de datos de los campos


La siguiente tabla incluye las letras que debe usar al especificar el tipo para FIELD. Cada letra corresponde
a un tipo de datos.
Por ejemplo, si está definiendo un campo Apellido, que utiliza tipos de datos de carácter, especificará "C":
FIELD "Apellido" C.
Nota
Cuando utilice el Asistente de definición de datos para definir una tabla que incluya cam-
pos EBCDIC, Unicode o ASCII, se le asignará la letra "C" automáticamente a los campos
(correspondiente al tipo CHARACTER [carácter]).
Al ingresar manualmente un enunciado IMPORT o editar un enunciado IMPORT existente,
puede utilizar los valores más específicos de las letras "E" o "U" en lugar de los campos
EBCDIC o Unicode.

Letra Tipo de datos

A ACL

B BINARY (binario)

C CHARACTER (carácter)

D DATETIME

E EBCDIC

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 235 de 898


Comandos

Letra Tipo de datos

F FLOAT (flotante)

G ACCPAC

I IBMFLOAT

K UNSIGNED

L LÓGICOS

N PRINT

P PACKED (compactado)

Q BASIC

R MICRO

S CUSTOM

T PCASCII

U UNICODE

V VAXFLOAT

X NUMERIC (numérico)

Y UNISYS

Z ZONED (zonado)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 236 de 898


Comandos

Comando IMPORT EXCEL


Crea una tabla de ACL definiendo e importando un intervalo con nombre o una hoja de cálculo de Microsoft
Excel.

Sintaxis
IMPORT EXCEL TO tabla nombrearchivo_importación FROM nombrearchivo_origen TABLE hoja-
dedatos_entrada_o_intervalo_nombrado <KEEPTITLE> {ALLFIELDS|CHARMAX longitud_campo_
máx|[sintaxis_campo] <...n> <IGNORE núm_campo> <...n>} <OPEN>

sintaxis_campo ::=
FIELD nombre tipo {PIC formato|WID caracteres DEC valor} AS nombre_visible

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una exten-
sión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-
cificar la ubicación del archivo:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 237 de 898


Comandos

Nombre Descripción

o "C:\datos\nombrearchivo_origen"
o "datos\nombrearchivo_origen"

TABLE hojadedatos_o_ La hoja de cálculo de Microsoft Excel o el intervalo con nombre del archivo de datos de
intervalo_nombrado origen que se importará:
o debe introducir un signo "$" al final del nombre de la hoja de cálculo
o hojadedatos_o_intervalo_nombrado se debe especificar como una cadena entre
comillas

KEEPTITLE Tratar a la primera fila de datos como nombres de campos en lugar de datos. Si se omite,
se utilizan nombres de campo genéricos.
opcional
Si está definiendo los campos de manera individual, KEEPTITLE debe aparecer antes
del primer FIELD.

ALLFIELDS Se importan todos los campos del archivo de datos de origen.


Nota
Si usted especifica ALLFIELDS, no especifique ninguna sintaxis
FIELD individual, CHARMAX o IGNORE.

CHARMAX longitud_ Solo se aplica cuando no está definiendo campos de manera individual.
campo_máx
La longitud máxima en caracteres de cualquier campo de la tabla de ACL que se origina
como datos de carácter en el archivo de datos de origen.

FIELD nombre tipo Los campos individuales para importar desde el archivo de datos de origen, incluidos el
nombre y el tipo de datos del campo. Para excluir un campo de la importación, no lo
especifique.
Si desea obtener información acerca de los tipos, consulte "Identificadores de los tipos
de datos de los campos" en la página 241.

PIC formato Nota


Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vistas
y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exactamente
con el formato físico de los datos de origen. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

WID caracteres La longitud del campo en caracteres en el formato de tabla de ACL.

DEC valor La cantidad de lugares decimales para los campos numéricos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 238 de 898


Comandos

Nombre Descripción

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista de la nueva
tabla de ACL.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.
AS es obligatorio cuando se está definiendo un FIELD. Para que el nombre visible sea el
mismo que el nombre del campo, introduzca un valor en blanco en nombre_visible con
la siguiente sintaxis: AS "". Asegúrese de que no haya un espacio entre las dos comillas.

IGNORE núm_campo Excluye el campo del formato de tabla.


<...n>
núm_campo especifica la posición del campo en los datos de origen. Por ejemplo,
opcional IGNORE 5 excluye el quinto campo en los datos de origen del formato de tabla de ACL.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

Ejemplos
Importación de campos especificados
Usted realiza una importación que define una nueva tabla de ACL denominada Tarjetas_crédito. Utiliza la
primera fila de datos de Excel como los nombres de los campos.
La tabla de ACL define e incluye tres campos de la tabla de origen, pero excluye los campos restantes:

IMPORT EXCEL TO Tarjetas_crédito "Tarjetas crédito.fil" FROM "Tarjetas_crédito_Metaphor.xls"


TABLE "Tarjetas_crédito_corps$" KEEPTITLEFIELD "CARDNUM" N WID 16 DEC 0 AS "Número tar-
jeta" FIELD "EXPDT" D WID 10 PIC "AAAA-MM-DD" AS "Fecha vencimiento" FIELD
"PASTDUEAMT" N WID 6 DEC 2 AS "Vencido" IGNORE 2 IGNORE 3 IGNORE 5 IGNORE 6
IGNORE 7 IGNORE 9 IGNORE 10 IGNORE 11 IGNORE 12

Importación de todos los campos


Usted realiza una importación que define una nueva tabla de ACL denominada Transacciones_mayo. Uti-
liza la primera fila de datos de Excel como los nombres de los campos.
La tabla de ACL incluye todos los campos de la tabla de origen y utiliza definiciones de campo pre-
determinadas.

Longitud de campo ajustada al valor más extenso


En el primer ejemplo, los campos que se originan como datos de carácter en el archivo de datos de origen
se ajustan a la longitud del valor más extenso del campo:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 239 de 898


Comandos

IMPORT EXCEL TO Transacciones_mayo "Transacciones_mayo.fil" FROM "Transacciones_mayo-


.xls" TABLE "Trans1_Mayo$" KEEPTITLE ALLFIELDS

Restricción de la longitud del campo


En el segundo ejemplo, los campos que se originan como datos de carácter en el archivo de datos de ori-
gen se ajustan a la longitud del valor más extenso del campo o al valor CHARMAX de 100 caracteres (el
que sea más corto):

IMPORT EXCEL TO Transacciones_mayo "Transacciones_mayo.fil" FROM "Transacciones_mayo-


.xls" TABLE "Trans1_Mayo$" KEEPTITLE CHARMAX 100

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Definir campos individualmente o importar todos los campos utilizando una defi-
nición predeterminada
Al importar un archivo de Excel a una tabla de ACL, puede utilizar parámetros FIELD para definir cada
campo de manera individual o puede utilizar el parámetro ALLFIELDS o el parámetro CHARMAX para
importar todos los campos con las definiciones de campo ACL predeterminadas.

Tamaño máximo de la importación de datos


Formato de archivo .xlsx o .xlsm
La cantidad máxima de columnas de Excel y la cantidad máxima de caracteres en un campo, que se pue-
den importar desde archivos .xlsx o .xlsm no se limita a un número específico.
La importación desde estos tipos de archivo de Excel se rige por el límite de longitud de registros de los
archivos de datos de ACL (.fil) de 32 KB. Si algún registro del archivo de Excel de origen generaría un
registro de ACL más extenso que 32 KB, no se puede concretar la importación.

Formato de archivo .xls


La importación de archivos .xls (Excel 97 - 2003) utiliza un tipo de procesamiento diferente y está sujeta a
un máximo de:
l 255 columnas
l 255 caracteres por campo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 240 de 898


Comandos

l 32 KB por registro


l 65.000 filas

Identificadores de los tipos de datos de los campos


La siguiente tabla incluye las letras que debe usar al especificar el tipo para FIELD. Cada letra corresponde
a un tipo de datos.
Por ejemplo, si está definiendo un campo Apellido, que utiliza tipos de datos de carácter, especificará "C":
FIELD "Apellido" C.
Nota
Cuando utilice el Asistente de definición de datos para definir una tabla que incluya cam-
pos EBCDIC, Unicode o ASCII, se le asignará la letra "C" automáticamente a los campos
(correspondiente al tipo CHARACTER [carácter]).
Al ingresar manualmente un enunciado IMPORT o editar un enunciado IMPORT existente,
puede utilizar los valores más específicos de las letras "E" o "U" en lugar de los campos
EBCDIC o Unicode.

Letra Tipo de datos

A ACL

B BINARY (binario)

C CHARACTER (carácter)

D DATETIME

E EBCDIC

F FLOAT (flotante)

G ACCPAC

I IBMFLOAT

K UNSIGNED

L LÓGICOS

N PRINT

P PACKED (compactado)

Q BASIC

R MICRO

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 241 de 898


Comandos

Letra Tipo de datos

S CUSTOM

T PCASCII

U UNICODE

V VAXFLOAT

X NUMERIC (numérico)

Y UNISYS

Z ZONED (zonado)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 242 de 898


Comandos

Comando IMPORT GRCPROJECT


Crea una tabla de ACL importando una tabla de Proyectos de ACL GRC.

Sintaxis
IMPORT GRCPROJECT TO tabla nombrearchivo_importación PASSWORD núm FROM id_org/id_
tipo <FIELD nombre AS nombre_visible <...n>>

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una exten-
sión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

PASSWORD núm La definición de contraseña que se debe usar.


La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD. No
se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de contra-
señas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en la
página 381.
Si desea obtener más información sobre la especificación o configuración de contra-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 243 de 898


Comandos

Nombre Descripción

señas, consulte Comando PASSWORD y Comando SET.


Nota
Si está ejecutando el script desde ACL Analytics (activación en línea), no
necesita PASSWORD. Se utiliza automáticamente el token de acceso
ACL GRC del usuario actual. La ejecución del script en cualquier otro
contexto, incluida la ventana Aplicación de análisis o ACL Analytics (acti-
vación sin conexión), requiere PASSWORD.

FROM id_org id_tipo La organización y el tipo de información que define los datos que se están importando:
o id_org: la organización de Proyectos de la cual está importando datos
o id_tipo: el tipo de información que está importando
El valor id_org y el valor id_tipo deben estar separados por una barra, sin espacios:
FROM "125@eu/audits".
La cadena completa debe estar encerrada entre comillas.

Identificador de la organización
id_org debe incluir el número de ID de la organización y, si está realizando la impor-
tación desde un centro de datos ubicado fuera de América del Norte, el código del centro
de datos. El número de ID de la organización y el código del centro de datos deben estar
separados por el signo (@): FROM "125@eu".
El código del centro de datos especifica desde qué servidor regional de ACL GRC está
importando los datos:
o ap: Pacífico asiático
o au: Australia
o ca: Canadá
o eu: Europa
o us: Norteamérica
Puede utilizar únicamente el código del centro de datos o los códigos autorizados para
la instalación de ACL GRC de su organización. El centro de datos de Norteamérica es el
valor predeterminado, por lo que especificar "@us" es opcional.
Si no conoce el número de ID de la organización, utilice la interfaz de usuario de ACL
para importar una tabla desde Proyectos. El número de ID de la organización está
incluido en el comando en el log. Si desea obtener más información, consulte Definición
de datos de ACL GRC.

ID tipo
id_tipo especifica el tipo de información que está importando. La información en Pro-
yectos está contenida en una serie de cuadros relacionados.
Para id_tipo, utilice uno de los valores que se incluyen a continuación. Escriba el valor
exactamente como aparece e incluya guiones bajos, según corresponda:
o auditorías: Proyectos
o planes_prueba_control: Planes de prueba de controles
o prueba_control: Prueba de controles
o controles: Controles
o buscar_acciones: Acciones
o hallazgos: Problemas
o mitigaciones: Asociaciones de Control de riesgos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 244 de 898


Comandos

Nombre Descripción

o narrativas: Narrativas
o objetivos: Objetivos
o riesgos: Riesgos
o revisiones de confiabilidad: Revisiones de confiabilidad
Consejo
Para obtener información sobre cómo se relacionan las tablas en Pro-
yectos y los campos claves que puede utilizar para unir las tablas una
vez que las haya importado a ACL, consulte Definición de datos de ACL
GRC.

FIELD nombre AS nom- Campos individuales de los datos de origen que se deben importar. Especifique el nom-
bre_visible <...n> bre.
opcional Si omite FIELD, se importan todos los campos.
o nombre debe coincidir de forma exacta con el nombre del campo físico en la tabla Pro-
yectos, lo cual incluye mayúsculas y minúsculas
o nombre visible (título de columna alternativo) es el nombre visible para el campo en
la vista de la nueva tabla de ACL. Debe especificar un nombre visible para cada
FIELD nombre. Especifique nombre_visible como una cadena entre comillas.
Utilice un punto y coma (;) entre las palabras si desea que haya un salto de línea en
el título de la columna.
A diferencia de algunos otros comandos IMPORT de ACL, no puede especificar nom-
bre_visible en blanco para utilizar el nombre del campo como el nombre visible.
Consejo
Para obtener los nombres de campos físicos, utilice la interfaz de usuario
de ACL para importar la tabla apropiada de Proyectos. Los nombres de
campos físicos están contenidos en el comando en el log.
Las importaciones posteriores se pueden incluir en scripts.

Ejemplos
Importación de todos los campos de la tabla Proyectos
Usted importa todos los campos de la tabla Proyectos para todos los proyectos activos que pertenecen a la
organización 286 a una tabla de ACL denominada "Todos_los_proyectos . Usted incluye una definición de
contraseña numerada para autenticar la conexión:

IMPORT GRCPROJECT TO Todos_los_proyectos "C:\ACL GRC Project Data\Todos_los_pro-


yectos.fil" PASSWORD 1 FROM "286@us/audits"

Importación de campos especificados desde la tabla Proyectos


Usted importa los campos especificados de la tabla Proyectos para todos los proyectos activos que

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 245 de 898


Comandos

pertenecen a la organización 286 a una tabla de ACL denominada "Todos_los_proyectos :

IMPORT GRCPROJECT TO Todos_los_proyectos "C:\ACL GRC Project Data\Todos_los_pro-


yectos.fil" FROM "286@us/audits" FIELD "id" AS "Id" FIELD "descripción" AS "Descripción" FIELD
"nombre" AS "Nombre" FIELD "fecha_inicio" AS "Fecha inicio" FIELD "estado" AS "Estado" FIELD
"creado_en" AS "Creado en"

Importación de todos los campos de la tabla Asuntos


Usted importa todos los campos de la tabla Asuntos para todos los proyectos activos que pertenecen a la
organización 286 a una tabla de ACL denominada Todos_los_asuntos :

IMPORT GRCPROJECT TO Todos_los_asuntos "C:\ACL GRC Project Data\Todos_los_asuntos.fil"


FROM "286@us/findings"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Creación de una definición de contraseña y especificación de un valor de contra-


seña
Comando PASSWORD
Si utiliza el comando PASSWORD para crear la definición de contraseña numerada para conectarse a
ACL GRC, no se especifica ningún valor de contraseña, por lo que aparece una solicitud de contraseña
cuando el script intenta ejecutarse.
Si desea obtener más información, consulte "Comando PASSWORD" en la página 323.

Comando SET PASSWORD


Si utiliza el comando SET PASSWORD para crear la definición de contraseña numerada para conectarse
a ACL GRC, se especifica un valor de contraseña, por lo que no aparece una solicitud de contraseña, lo
cual es adecuado para scripts diseñados para ejecutarse sin supervisión del usuario.
Si desea obtener más información, consulte Comando SET PASSWORD.

Token de acceso de ACL GRC


Independientemente del método que utilice para crear la definición de la contraseña, el valor de la contra-
seña requerida es un token de acceso a ACL GRC:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 246 de 898


Comandos

l Método PASSWORD: Los usuarios pueden obtener un token de acceso seleccionando Herra-
mientas > Token de acceso a ACLGRC e iniciando sesión en ACL GRC. Se devuelve un token de
acceso, que los usuarios pueden copiar y pegar en la solicitud de contraseña.
l Método SET PASSWORD: Para insertar un token de acceso en la sintaxis del comando SET
PASSWORD en un script de ACL, haga clic con el botón derecho del ratón en el Editor de scripts ,
seleccione Insertar > Token de ACL GRC e inicie sesión en ACL GRC. Se inserta un token de
acceso en el script en la posición del cursor.
¡Precaución!
El token de acceso devuelto concuerda con la cuenta utilizada para iniciar sesión en ACL
GRC. Como escritor de scripts puede no ser apropiado que utilice su propio token de
acceso si está escribiendo un script que será usado por otras personas.

Capacidad de depuración para la importación


Existe una capacidad de depuración simple para las importaciones desde ACL GRC.
Los datos importados se almacenan de manera temporal en un archivo JSON intermedio en la carpeta que
contiene el proyecto de ACL de destino. Puede crear un archivo de texto en cualquier carpeta que con-
tenga un proyecto de ACL, lo que hace que se conserve el archivo JSON en lugar de eliminarlo después de
importar los datos a ACL.
l El archivo JSON está presente: Si la importación desde ACL GRC falla, pero el archivo JSON está
presente en su computadora, usted sabe que el problema es de ACL y no de ACL GRC.
l El archivo JSON no está presente: Si la importación desde ACL GRC falla y el archivo JSON no
está presente en su computadora, usted sabe que el problema es de ACL GRC.
Esta información puede ayudar a resolver problemas.

Configure la retención del archivo JSON intermedio


En la carpeta que contiene el proyecto de ACL de destino, cree un archivo de texto vacío que tenga exac-
tamente el siguiente nombre: _grc_import_debug.txt
Al importar desde Resultados o Proyectos en ACL GRC, el archivo JSON intermedio se conserva con el
nombre results.json. El archivo se sobrescribe que con cada importación de ACL GRC.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 247 de 898


Comandos

Comando IMPORT GRCRESULTS


Crea una tabla de ACL importando una tabla o interpretación de Resultados de ACL GRC.

Sintaxis
IMPORT GRCRESULTS TO tabla importar_nombredearchivo PASSWORD núm FROM Ruta_recur-
sos_Resultados <FIELD nombre AS nombre_visible <...n>>

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una
extensión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

PASSWORD núm La definición de contraseña que se debe usar.


La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD.
No se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de
contraseñas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en
la página 381.
Si desea obtener más información sobre la especificación o configuración de contra-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 248 de 898


Comandos

Nombre Descripción

señas, consulte Comando PASSWORD y Comando SET.


Nota
Si está ejecutando el script desde ACL Analytics (activación en línea),
no necesita PASSWORD. Se utiliza automáticamente el token de
acceso ACL GRC del usuario actual. La ejecución del script en cual-
quier otro contexto, incluida la ventana Aplicación de análisis o ACL
Analytics (activación sin conexión), requiere PASSWORD.

FROM Ruta_recursos_ La ruta a los datos que está importando.


Results
La forma de la ruta varía según los datos que está importando. Si desea obtener infor-
mación detallada acerca de la forma de la ruta, consulte "Ruta de Resultados" en la
página 251.
Nota
La forma de la ruta de Resultados es proporcionada por una API y está
sujeta a cambios. La manera más sencilla y confiable de obtener la sin-
taxis correcta y actualizada para la ruta es realizar una importación
manual de los datos de destino y copiar la ruta desde el log del
comando.

FIELD nombre AS nom- Campos individuales de los datos de origen que se deben importar. Especifique el nom-
bre_visible <...n> bre.
opcional Si omite FIELD, se importan todos los campos.

Nombre
nombre debe coincidir de forma exacta con el nombre del campo físico en la tabla de
Resultados, lo cual incluye mayúsculas y minúsculas. Para ver el nombre del campo
físico, complete una de las siguientes acciones:
o En Resultados, haga clic en el encabezado de una columna en la Vista de la tabla.
El nombre del campo físico aparece después de Nombre campo.
o En ACL, al importar una tabla de Resultados, el nombre del campo físico aparece
entre paréntesis después del nombre visible en el cuadro de diálogo que le permite
seleccionar campos.
Nota
El nombre del campo físico Resultados no es el nombre visible que se
usa en los encabezados de las columnas de la Vista de la tabla.
Consulte también "Consideraciones de los nombres de campos al importar y exportar
datos de Resultados" en la página 252.

Nombre visible
nombre visible (título de columna alternativo) es el nombre visible para el campo en la
vista de la nueva tabla de ACL. Debe especificar un nombre visible para cada FIELD
nombre. Especifique nombre_visible como una cadena entre comillas.
Utilice un punto y coma (;) entre las palabras si desea que haya un salto de línea en el
título de la columna.
A diferencia de algunos otros comandos IMPORT de ACL, no puede especificar nom-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 249 de 898


Comandos

Nombre Descripción

bre_visible en blanco para utilizar el nombre del campo como el nombre visible.

Ejemplos
Importación de campos especificados desde una tabla de Resultados
Usted importa campos especificados desde una tabla de Resultados a una tabla de ACL denominada
Excepciones gastos representación:

IMPORT GRCRESULTS TO Excepciones_gastos_representación "C:\Secondary Analysis\ Excep-


ciones_gastos_representación.fil" PASSWORD 1 FROM "results/api/orgs/11594/control_tes-
ts/185699/exceptions" FIELD "metadata.status" AS "Estado" FIELD "Número empleado" AS
"Número empleado" FIELD "DATE" AS "Fecha" FIELD "CADRNUM" AS "Número tarjeta" FIELD
"CODES" AS "Códigos Mc" FIELD "AMOUNT" AS "Importe" FIELD "DESCRIPTION" AS "Des-
cripción"

Importación de todos los campos desde una tabla de Resultados


Usted importa todos los campos desde una tabla de Resultados a una tabla de ACL que tiene el nombre
de Excepciones gastos representación:

IMPORT GRCRESULTS TO Excepciones gastos representación "C:\Secondary Ana-


lysis\Excepciones_gastos_representación.fil" PASSWORD 1 FROM "results/api/orgs/11594/control_
tests/185699/exceptions"

Importación de datos desde una interpretación en Resultados


Usted importa una interpretación de Resultados a una tabla de ACL que tiene el nombre de Excepciones
gastos representación filtradas :

IMPORT GRCRESULTS TO Excepciones_gastos_representación_filtradas "C:\Secondary Analysis\


Excepciones_gastos_representación_filtradas.fil" FROM "results/api/orgs/11594/control_tes-
ts/185699/interpretations/22699/exceptions

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 250 de 898


Comandos

Conservación de los filtros y el ordenamiento


Al importar datos desde Resultados, cualquier personalización de datos, como el ordenamiento o los filtros,
se retiene o se ignora en la tabla de ACL resultante según la manera en la que usted importe los datos:
l importar una tabla: se ignora la personalización de datos. Se importan todos los datos de la tabla,
excepto por los campos que usted decida omitir.
l importar una interpretación: se conserva la personalización de los datos

Ruta de Resultados
Nota
La forma de la ruta de Resultados es proporcionada por una API y está sujeta a cambios.
La manera más sencilla y confiable de obtener la sintaxis correcta y actualizada para la ruta
es realizar una importación manual de los datos de destino y copiar la ruta desde el log del
comando.
La ruta de Resultados en el parámetro FROM tiene la siguiente forma general:
FROM "results <-código de región>/api/orgs/<ID org>/control_tests/<ID prueba de control>/exceptions
Por ejemplo: FROM "results/api/orgs/11594/control_tests/4356/exceptions"
El valor de ID de la organización se muestra en la barra de direcciones del navegador al iniciar sesión en
ACL Launchpad. El valor de ID de la prueba de control y de ID de la interpretación se muestran en la barra
de direcciones al visualizar esas tablas en Resultados.
La tabla que se incluye a continuación proporciona todas las variaciones de la ruta de Resultados.

Para importar: Utilice esta forma de la ruta de Resultados:

Datos de la prueba de con- FROM "results/api/orgs/11594/control_tests/4356/exceptions"


trol (tabla)

Pista de auditoría de la FROM "results/api/orgs/11594/control_tests/4356/audit_trail"


prueba de control (tabla)

Comentarios de la prueba FROM "results/api/orgs/11594/control_tests/4356/comments"


de control (tabla)

Interpretación FROM "results/api/orgs/11594/control_tests/4356/interpretations/1192/exceptions"

Datos de una región de o Pacífico de Asia: FROM "results-ap/api/orgs/11594/control_tests/4356/exceptions"


ACL GRC que no es la o Australia: FROM "results-au/api/orgs/11594/control_tests/4356/exceptions"
región predeterminada o Canadá: FROM "results-ca/api/orgs/11594/control_tests/4356/exceptions"
(us) o Europa: FROM "results-eu/api/orgs/11594/control_tests/4356/exceptions"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 251 de 898


Comandos

Columnas de información generadas por el sistema


Al importar datos desde Resultados, tiene la posibilidad de importar también una o más de las columnas
de información generadas por el sistema que aparecen a continuación.
Las columnas generadas por el sistema son:
l parte de las tablas de Resultados y contienen información de procesamiento relacionada con los
registros individuales; o bien
l información adicional: nombre de la colección, nombre de la tabla o número de ID del registro
Debe especificar los nombres de los campos de las columnas generadas por el sistema tal como apa-
recen a continuación. Los nombres visibles predeterminados se aplican al importar desde Resultados a
través de la interfaz de usuario de ACL. Puede cambiar los nombres visibles si está realizando un script
del proceso de importación.

Nombre del campo Nombre visible predeterminado

metadata.priority Prioridad

metadata.status Estado

metadata.publish_date Publicado/a

metadata.publisher Nombre del editor

metadata.assignee Asignado

metadata.group Grupo

metadata.updated_at Actualizado/a

metadata.closed_at Cerrado/a

extras.collection Colección

extras.results_table Tabla de resultados

extras.record_id ID del registro

Consideraciones de los nombres de campos al importar y exportar datos de Resul-


tados
Si tiene pensado intercambiar datos entre Resultados y ACL, necesita asegurarse de que todos los nom-
bres de campos de la prueba de control de Resultados cumplan con los requisitos más estrictos de nom-
bres de campos de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 252 de 898


Comandos

Por ejemplo, cualquier carácter especial en los nombres de campos de Resultados se convierte auto-
máticamente en guiones bajos cuando se importa a ACL y esto significa que los nombres ya no coincidirán
con los nombres originales de Resultados. Si más tarde exporta los datos de ACL nuevamente a la tabla ori-
ginal de Resultados, los campos ya no coinciden correctamente y, como consecuencia, los datos no que-
dan alineados.
Para evita este problema con los datos que planea intercambiar, asegúrese de que antes de cargar los
datos a Resultados desde archivos CSV o de Excel, se cumplan los siguientes requisitos de nombres de
campos de ACL:
l no pueden tener caracteres especiales ni espacios
l no pueden comenzar con un número
l solo pueden tener caracteres alfanuméricos o el carácter de guion bajo ( _ )

Creación de una definición de contraseña y especificación de un valor de contraseña


Comando PASSWORD
Si utiliza el comando PASSWORD para crear la definición de contraseña numerada para conectarse a ACL
GRC, no se especifica ningún valor de contraseña, por lo que aparece una solicitud de contraseña cuando
el script intenta ejecutarse.
Si desea obtener más información, consulte "Comando PASSWORD" en la página 323.

Comando SET PASSWORD


Si utiliza el comando SET PASSWORD para crear la definición de contraseña numerada para conectarse
a ACL GRC, se especifica un valor de contraseña, por lo que no aparece una solicitud de contraseña, lo
cual es adecuado para scripts diseñados para ejecutarse sin supervisión del usuario.
Si desea obtener más información, consulte Comando SET PASSWORD.

Token de acceso de ACL GRC


Independientemente del método que utilice para crear la definición de la contraseña, el valor de la contra-
seña requerida es un token de acceso a ACL GRC:
l Método PASSWORD: Los usuarios pueden obtener un token de acceso seleccionando Herra-
mientas > Token de acceso a ACLGRC e iniciando sesión en ACL GRC. Se devuelve un token de
acceso, que los usuarios pueden copiar y pegar en la solicitud de contraseña.
l Método SET PASSWORD: Para insertar un token de acceso en la sintaxis del comando SET
PASSWORD en un script de ACL, haga clic con el botón derecho del ratón en el Editor de scripts ,
seleccione Insertar > Token de ACL GRC e inicie sesión en ACL GRC. Se inserta un token de
acceso en el script en la posición del cursor.
¡Precaución!
El token de acceso devuelto concuerda con la cuenta utilizada para iniciar sesión en ACL
GRC. Como escritor de scripts puede no ser apropiado que utilice su propio token de
acceso si está escribiendo un script que será usado por otras personas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 253 de 898


Comandos

Capacidad de depuración para la importación


Existe una capacidad de depuración simple para las importaciones desde ACL GRC.
Los datos importados se almacenan de manera temporal en un archivo JSON intermedio en la carpeta
que contiene el proyecto de ACL de destino. Puede crear un archivo de texto en cualquier carpeta que
contenga un proyecto de ACL, lo que hace que se conserve el archivo JSON en lugar de eliminarlo des-
pués de importar los datos a ACL.
l El archivo JSON está presente: Si la importación desde ACL GRC falla, pero el archivo
JSON está presente en su computadora, usted sabe que el problema es de ACL y no de ACL GRC.
l El archivo JSON no está presente: Si la importación desde ACL GRC falla y el archivo JSON no
está presente en su computadora, usted sabe que el problema es de ACL GRC.
Esta información puede ayudar a resolver problemas.

Configure la retención del archivo JSON intermedio


En la carpeta que contiene el proyecto de ACL de destino, cree un archivo de texto vacío que tenga exac-
tamente el siguiente nombre: _grc_import_debug.txt
Al importar desde Resultados o Proyectos en ACL GRC, el archivo JSON intermedio se conserva con el
nombre results.json. El archivo se sobrescribe que con cada importación de ACL GRC.

Importación de tablas extensas


Tal vez no sea posible importar correctamente las tablas que tienen gran cantidad de campos con un
comando IMPORT GRCRESULTS. Si necesita trabajar con una única tabla fuera de Resultados y la tabla
contiene gran cantidad de campos, use una de las siguientes opciones:
l Divida la tabla: use dos o más comandos IMPORT GRCRESULTS para importar un subconjunto
de tablas resultantes en ACL Analytics utilizando el comando JOIN
l Exporte la tabla a un archivo: use la exportación al formado CSV y, a continuación, importe el
archivo que obtuvo ACL Analytics utilizando el comando IMPORT DELIMITED

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 254 de 898


Comandos

Comando IMPORT LAYOUT


Importa un archivo de formato de tabla (.layout) externo a un proyecto de ACL.
Nota:
Antes de la versión 11 de ACL Analytics, los archivos de formato de tabla externos tenían la
extensión .fmt. Aún puede importar un archivo de formato de tabla con la extensión .fmt
especificando manualmente la extensión.

Sintaxis
IMPORT LAYOUT archivo_de_formato_externo TO nombre_de_formato_de_tabla

Parámetros
Nombre Descripción

archivo_de_formato_ El nombre del archivo de formato de tabla externo. Si el nombre o la ruta del archivo
externo incluyen espacios, debe encerrarlos entre comillas; por ejemplo, "Trans Cp.layout".
Como valor predeterminado, se utiliza la extensión de archivo .layout; por lo tanto, no es
necesario especificarla. Si es necesario, puede usar otra extensión de archivo, como
.fmt.
Si el archivo de formato no está ubicado en la misma carpeta que el proyecto de ACL,
debe utilizar una ruta absoluta o una ruta relativa para especificar la ubicación del
archivo; por ejemplo, "C:\Formatos guardados\Trans_Cp.layout" o
"Formatos guardados\Trans_Cp.layout".

TO nombre_de_formato_ El nombre del formato de tabla importado en el proyecto de ACL; por ejemplo,
de_tabla "Trans Cp Mayo". Si el nombre_de_formato_de_tabla contiene espacios, debe espe-
cificarlo como una cadena encerrada entre comillas. Puede especificar un nombre_de_
formato_de_tabla diferente del nombre del archivo_de_formato_externo.

Ejemplo
Importación de un archivo de formato de tabla externo
Usted importa un archivo de formato de tabla externo denominado Trans_Cp.layout y crea un nuevo for-
mato de tabla denominado Trans _Cp_Mayo en el proyecto de ACL:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 255 de 898


Comandos

IMPORT LAYOUT "C:\Formatos guardados\Trans_Cp.layout" TO "Trans_Cp_Mayo"

Observaciones
Cuándo usar IMPORT LAYOUT
Importar un archivo de formato de tabla externo y asociarlo con un archivo de datos puede ahorrar el tra-
bajo de crear un nuevo formato de tabla desde cero:
l Si el formato de tabla importado especifica una asociación con un archivo de datos de ACL (.fil)
determinado y existe un archivo de datos con el mismo nombre en la carpeta del proyecto, el for-
mato de tabla importado se asocia automáticamente con el archivo de datos de la carpeta.
l Si no hay un archivo de datos con el mismo nombre en la carpeta del proyecto, debe enlazar el for-
mato de tabla importado a un nuevo origen de datos.

Los formatos de tabla y los archivos de datos de origen deben coincidir


El formato de tabla importado y el archivo de datos al cual está asociado deben coincidir. La estructura de
los datos del archivo de datos debe coincidir con las definiciones de campo que se especifican en los meta-
datos del formato de tabla.
La estructura de los datos hace referencia a los elementos (campos) de datos que se incluyen en el
archivo de datos, a la cantidad y el orden de los campos, y al tipo de datos y la longitud de los campos. Si
el formato de tabla y el archivo de datos no coinciden, los datos que obtenga serán confusos o incom-
pletos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 256 de 898


Comandos

Comando IMPORT ODBC


Crea una tabla de ACL definiendo e importando datos desde un origen de datos ODBC.
ODBC significa Open Database Connectivity (Conectividad de base de datos abierta), un método estándar
para acceder a bases de datos.

Sintaxis
IMPORT ODBC SOURCE nombre_origen TABLE nombre_tabla <QUALIFIER calificador_datos>
<OWNER nombre_usuario> <USERID id_usuario> <PASSWORD núm> <WHERE cláusula_
where> <TO nombre_tabla> <WIDTH longitud_campo_máxima> <MAXIMUM longitud_campo_
máxima> <FIELDS campo <;...n>>

Parámetros
Nombre Descripción

SOURCE nombre_origen El nombre del origen de datos (DSN) del origen de datos ODBC con el que desea conec-
tarse. El DSN debe existir previamente y estar configurado correctamente.
Nota
Está limitado a los orígenes de datos que utilizan los controladores
ODBC de Windows instalados en su equipo. Los conectores de datos de
ACL nativos que se pueden utilizar con el comando ACCESSDATA pue-
den no estar disponibles con IMPORT ODBC.

TABLE nombre_tabla El nombre de tabla en el origen de datos ODBC desde el que desea importar datos.
nombre_tabla normalmente se refiere a una tabla de base de datos en el origen de
datos, pero también puede referirse a cualquier información que ACL importe como una
tabla. Por ejemplo, si utiliza Microsoft Text Driver, nombre_tabla se refiere al archivo de
texto desde el que desea importar datos.

QUALIFIER calificador_ El carácter que se debe utilizar como calificador de texto para encerrar e identificar los
datos campos. Debe especificar el carácter como una cadena entre comillas.
opcional Utilice comillas simples para especificar el carácter de comillas: '"'.

OWNER nombre_usuario El nombre de la cuenta de usuario de la base de datos que es el propietaria de la tabla a
la que se conectará.
opcional

USERID id_usuario El nombre de usuario para acceder al origen de datos.


opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 257 de 898


Comandos

Nombre Descripción

PASSWORD núm La definición de contraseña que se debe usar.


opcional La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD. No
se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de contra-
señas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en la
página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.

WHERE cláusula_where Una cláusula WHERE de SQL que limita los registros que se devuelven de acuerdo con
los criterios que usted especifique. Debe ser un enunciado SQL válido y se debe ingre-
opcional
sar como una cadena entre comillas:

WHERE "SALARY > 50000".

TO nombre_tabla El nombre del archivo de datos de ACL que se debe crear.


opcional Especifique nombre_tabla como una cadena entre comillas con una extensión de
archivo .FIL. Por ejemplo: TO "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o TO "C:\datos\Facturas.FIL"
o TO "datos\FacturasFIL".

WIDTH longitud_campo_ La longitud máxima en caracteres de cualquier campo en la tabla de ACL que se origina
máxima como datos de carácter en el origen desde el cual está realizando la importación.
opcional Puede ingresar cualquier valor entre 1 y 254. El valor predeterminado es 50. Los datos
que superen la longitud de campo máxima se truncan al importarlos a ACL.

MAXIMUM longitud_ La longitud máxima en caracteres para los campos de texto, nota o memo que está
campo_máxima importando.
opcional Puede ingresar cualquier valor entre 1 y 1100. El valor predeterminado es 100. Los
datos que superen la longitud de campo máxima se truncan al importarlos a ACL.

FIELDS field <;...n> Campos individuales de los datos de origen que se deben importar. Especifique el nom-
bre.
opcional
Si especifica varios campos, cada campo debe estar separado por una coma. Si omite
FIELDS, se importan todos los campos.
Al escribir los nombres de campo entre comillas, éstos distinguen entre mayúsculas y
minúsculas. Si utiliza comillas, los nombres de campo deben coincidir exactamente entre

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 258 de 898


Comandos

Nombre Descripción

el parámetro FIELDS y el origen de datos ODBC en lo que respecta a mayúsculas y


minúsculas. Si utiliza comillas y las mayúsculas y minúsculas de los nombres de campo
no coinciden, no se importarán los campos.
Nota
FIELDS se debe colocar último entre los parámetros IMPORT ODBC. Si
FIELDS no se ubica en último lugar, el comando no se completa correc-
tamente.

Ejemplos
Importación de datos desde SQL Server
Usted importa datos desde una base de datos SQL Server a una tabla de ACL denominada Trans_Dec11:

IMPORT ODBC SOURCE "SQLServerAudit" TABLE "Transacciones" OWNER "auditoría" TO


"C:\ACL DATA\Trans_Dec11.FIL" WIDTH 100 MAXIMUM 200 FIELDS
"CARDNUM";"CREDLIM";"CUSTNO";"PASTDUEAMT"

Observaciones
Método más viejo para conectarse a orígenes de datos de ODBC
El comando IMPORT ODBC es el método más antiguo para conectarse a orígenes de datos compatibles
con ODBC desde ACL. El nuevo método de conexión a orígenes de datos ODBC utiliza la ventana Data
Access y el comando ACCESSDATA.
Puede continuar usando IMPORT ODBC en ACL. Sin embargo, este método de conexión ahora está dis-
ponible únicamente en los scripts y desde la línea de comandos de ACL. Ya no puede acceder a este
método de conexión en el Asistente de Definición de Datos .

Suprimir la parte de la hora en los valores de fechahora


Cuando use el comando IMPORT ODBC para definir una tabla de ACL, puede suprimir la porción de la
hora de los valores de fechahora antecediendo el comando con el comando SET SUPPRESSTIME ON.
Esta capacidad permite utilizar los scripts de ACL escritos antes de la versión 10.0 de ACL, cuando la por-
ción de la hora de los valores de fechahora se truncaba de manera automática. Si no se agrega SET
SUPPRESSTIME ON a estos scripts, no se ejecutarán en la versión de ACL que tiene habilitada la
fechahora.
Para obtener más información, consulte la sección "SET SUPPRESSTIME" en "Comando SET" en la
página 381.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 259 de 898


Comandos

Comando IMPORT PDF


Crea una tabla de ACL definiendo e importando un archivo de Adobe PDF.

Sintaxis
IMPORT PDF TO tabla <PASSWORD núm> nombrearchivo_importación FROM nombrearchivo_ori-
gen <SERVER nombre_perfil> longitud_omisión <PARSER "VPDF"> <PAGES intervalo_páginas>
{[sintaxis_registro] [sintaxis_campo] <...n>} <...n>

sintaxis_registro ::=
RECORD nombre_del_registro tipo_de_registro líneas_en_el_registro transparente [sintaxis_prue-
ba]<...n>

sintaxis_prueba ::=
TEST incluir_excluir tipo_de_coincidencia AT línea_de_inicio;posición_inicial;rango lógica texto

sintaxis_campo ::=
FIELD nombre tipo AT línea_de_inicio; posición_inicial SIZE longitud; líneas_en_campo DEC valor
WID bytes PIC formato AS nombre_visible

Parámetros
Parámetros generales
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

PASSWORD núm Se utiliza para archivos PDF protegidos con contraseña.


opcional La definición de contraseña que se debe usar.
La definición de contraseña hace referencia a una contraseña proporcionada o con-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 260 de 898


Comandos

Nombre Descripción

figurada previamente con el comando PASSWORD o el comando SET PASSWORD.


No se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de
contraseñas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en
la página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una
extensión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-
cificar la ubicación del archivo:
o "C:\datos\nombrearchivo_origen"
o "datos\nombrearchivo_origen"

SERVER nombre_del_per- El nombre de perfil para el servidor que contiene los datos que desea importar.
fil
opcional

longitud_omisión El número de bytes que se omitirán al inicio del archivo.


opcional Por ejemplo, si los primeros 32 bytes contienen información del encabezado, espe-
cifique un valor de longitud de omisión de 32 para omitir esta información.
Nota
Para los datos Unicode, especifique solo un número par de bytes. Si
especifica un número de bytes impar puede provocar problemas con el
procesamiento posterior de los datos importados.

PARSER "VPDF" Use el analizador VeryPDF para analizar el archivo PDF durante el proceso de defi-
nición del archivo.
opcional
Si omite PARSER, se utilizará el analizador Xpdf predeterminado.
Si está importando el archivo PDF por primera vez y no tiene motivos para hacerlo de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 261 de 898


Comandos

Nombre Descripción

otra manera, utilice el analizador predeterminado Xpdf. Si ya detectó problemas de ali-


neación de los datos al utilizar Xpdf, use el analizador VeryPDF para ver si los resul-
tados del análisis son mejores.

PAGES intervalo_páginas Las páginas que se deben incluir si no se desea importar todas las páginas del archivo
PDF. intervalo_páginas se debe especificar como una cadena entre comillas.
opcional
Puede especificar:
o páginas individuales separadas por comas (1,3,5)
o intervalos de páginas (2-7)
o una combinación de páginas e intervalos (1, 3, 5-7, 11)
Si omite PAGES, se importan todas las páginas del archivo PDF.

Parámetro RECORD
Información de la definición del registro general.
Nota
Parte de la información de definición del registro se especifica utilizando códigos numé-
ricos que coinciden con las opciones del Asistente de Definición de Datos.
En los scripts, especifique el código numérico, no el nombre de la opción.

Nombre Descripción

RECORD nombre_del_ El nombre del registro en el Asistente de Definición de Datos.


registro
Es necesario especificar el nombre_del_registro en el comando IMPORT PDF, pero el
valor nombre_del_registro no aparece en la tabla de ACL que se obtiene.
En el Asistente de Definición de Datos, ACL proporciona nombres predeterminados
sobre la base del tipo de registro:
o Detalle
o Encabezadon
o Pie de páginan
Puede usar los nombres predeterminados o especificar nombres diferentes.

tipo_de_registro Los tres tipos de registro posibles al definir un archivo PDF:


o 0: detalle
o 1: encabezado
o 2: pie de página
Nota
Puede definir varios conjuntos de registros de encabezado y pie de
página en una única ejecución de IMPORT PDF, pero solo un conjunto
de registros de detalle.

líneas_en_el_registro La cantidad de líneas que ocupa un registro en el archivo PDF.


Puede definir registros de una o varias líneas para que coincidan con los datos del

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 262 de 898


Comandos

Nombre Descripción

archivo PDF.

transparente El ajuste de transparencia para un registro de encabezado.


Nota
Se aplica únicamente a los registros de encabezado.
o 0: no transparente
o 1: transparente
Los registros de encabezado transparentes no separan los registros de detalle de
varias líneas.
Si un registro de encabezado separa un registro de detalle de varias líneas del archivo
PDF de origen, lo cual puede ocurrir cuando hay un salto de página, al especificar 1
(transparente), se unifica el registro de detalle de la tabla de ACL resultante.

Parámetro TEST
Los criterios para definir un conjunto de registros en el archivo PDF. Puede tener una o más instancias de
TEST para cada instancia de RECORD.
Nota
Algunos de los criterios se especifican utilizando códigos numéricos que asignan las opcio-
nes del Asistente de Definición de Datos (los nombres de las opciones se muestran a con-
tinuación entre paréntesis).
En los scripts, especifique el código numérico, no el nombre de la opción.

Nombre Descripción

TEST incluir_excluir Cómo tratar los datos coincidentes:


o 0: (Incluir) los datos que reúnen los criterios se incluyen en el conjunto de registros
o 1: (Excluir) los datos que reúnen los criterios se excluyen del conjunto de registros

tipo_de_coincidencia El tipo de coincidencia que se debe aplicar:


o 0: (Concordancia exacta) los registros coincidentes deben contener el carácter o la
cadena de caracteres especificados en la línea de inicio especificada, comenzando
en la posición inicial especificada
o 2: (Alfabético) los registros coincidentes deben contener uno o más caracteres alfa-
béticos en la línea de inicio especificada, en la posición inicial especificada o en
todas las posiciones del rango especificado
o 3: (Numérico) los registros coincidentes deben contener uno o más caracteres numé-
ricos en la línea de inicio especificada, en la posición inicial especificada o en todas
las posiciones del rango especificado
o 4: (En blanco) los registros coincidentes deben contener uno o más espacios en
blanco en la línea de inicio especificada, en la posición inicial especificada o en
todas las posiciones del rango especificado
o 5: (No en blanco) los registros coincidentes deben contener uno o más espacios de
caracteres que no estén en blanco (incluidos los caracteres especiales), en la línea

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 263 de 898


Comandos

Nombre Descripción

de inicio especificada, en la posición inicial especificada o en todas las posiciones


del rango especificado
o 7: (Buscar en línea) los registros coincidentes deben contener el carácter o la cadena
de caracteres especificados en cualquier lugar de la línea de inicio especificada
o 8: (Buscar en rango) los registros coincidentes deben contener el carácter o la
cadena de caracteres especificados en la línea de inicio especificada, en cualquier
lugar del rango especificado
o 10: (Búsqueda con comodines) los registros coincidentes deben contener caracteres
que coincidan con el patrón de caracteres especificado, en la línea de inicio espe-
cificada, comenzando en la posición especificada

AT línea_de_inicio; posi- o línea_de_inicio: la línea del registro a la que se aplican los criterios
ción_inicial; rango
Por ejemplo, si crea una búsqueda con comodines para que coincidan con códigos
postales y los códigos postales aparecen en la tercera línea de un registro de tres
líneas, debe especificar 3 en línea_de_inicio.
Nota
En el caso de registros de una sola línea, el valor de línea_de_inicio
es siempre 1.
o posición_inicial: la posición inicial en bytes del archivo PDF para la comparación con
los criterios
o rango: la cantidad de bytes a partir de la posición inicial de bytes en el archivo
PDF que se debe usar en la comparación con los criterios
Si está utilizando únicamente la posición de bytes de inicio, sin un rango, especifique
0 para rango.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

lógica Las relaciones lógicas entre los criterios:


o 0: (Y) el criterio actual y el siguiente se relacionan con un AND lógico
o 1: (O) el criterio actual y el siguiente se relacionan con un OR lógico
o 4: (Nuevo grupo > Y) el criterio actual es el último de un grupo de criterios lógicos y el
grupo actual y el grupo siguiente están relacionados con un AND lógico
o 5: (Nuevo grupo > O) el criterio actual es el último de un grupo de criterios lógicos y el
grupo actual y el siguiente se relacionan con un OR lógico
o 7: (Fin) el criterio actual es el último de un grupo de criterios lógicos

texto Caracteres literales o comodín con los que se debe buscar una coincidencia:
o Para Concordancia exacta, Buscar en línea o Buscar en rango:, especifica el carácter
o la cadena de caracteres que identifican de manera exclusiva al conjunto de regis-
tros del archivo PDF.
o Para Búsqueda con comodines:, especifica el patrón de caracteres que identifican de
manera exclusiva el conjunto de registros del archivo PDF
La opción Búsqueda con comodines usa la misma sintaxis que la "Función MAP( )"
en la página 601.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 264 de 898


Comandos

Nombre Descripción

Para otros tipos de coincidencias, texto es una cadena vacía "".

Parámetros FIELD
Información de la definición de campo.

Nombre Descripción

FIELD nombre tipo Los campos individuales para importar desde el archivo de datos de origen, incluidos el
nombre y el tipo de datos del campo. Para excluir un campo de la importación, no lo
especifique.
Si desea obtener información acerca de los tipos, consulte "Identificadores de los tipos
de datos de los campos" en la página 267.

AT línea_de_inicio; posi- o línea_de_inicio: la línea de inicio del campo del registro del archivo PDF
ción_inicial
En el caso de registros de varias líneas en un archivo PDF, línea_de_inicio le permite
comenzar un campo en cualquier línea del registro. línea_de_inicio siempre es 1 si
líneas_en_el_registro es 1.
o posición_inicial: la posición inicial en bytes del campo en el archivo PDF
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En general, en ACL Unicode, debe especificar una posición de byte


de inicio impar. Si especifica una posición de inicio par, es posible que
los caracteres no se vean correctamente.

SIZE longitud; líneas_en_ o longitud: la longitud del campo en bytes en el formato de tabla de ACL.
el_campo
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En ACL Unicode, especifique solo un número par de bytes. Si espe-


cifica un número de bytes impar, es posible que los caracteres no se
vean correctamente.
o líneas_en_el_campo: la cantidad de líneas ocupadas por un valor de campo indi-
vidual en el archivo PDF
Puede definir campos de una o varias líneas para hacer coincidir con los datos del
archivo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 265 de 898


Comandos

Nombre Descripción

Nota
La cantidad de líneas especificadas para un campo no puede superar
la cantidad de líneas especificadas para el registro que contiene el
campo.

DEC valor La cantidad de lugares decimales para los campos numéricos.

WID bytes El ancho visible del campo en bytes.


El valor que se especifica controla el ancho visible del campo en las vistas y reportes de
ACL. El ancho visible nunca altera los datos; sin embargo, si es más pequeño que la lon-
gitud del campo, es posible que oculte datos.

PIC formato Nota


Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vistas
y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exactamente
con el formato físico de los datos de origen. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista de la nueva
tabla de ACL.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.
AS es obligatorio cuando se está definiendo un FIELD. Para que el nombre visible sea el
mismo que el nombre del campo, introduzca un valor en blanco en nombre_visible con
la siguiente sintaxis: AS "". Asegúrese de que no haya un espacio entre las dos comillas.

Ejemplos
Importación de datos de una página específica de un archivo PDF
Usted importa datos de la página 1 del archivo PDF protegido con contraseña, Proveedores.pdf.
Se crea un conjunto de registros de detalles, con tres campos, en la tabla de ACL resultante, Lista_pro-
veedores :

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 266 de 898


Comandos

IMPORT PDF TO Lista_proveedores PASSWORD 1 "Lista_proveedores.FIL" FROM "Pro-


veedores.pdf" 2 PAGES "1" RECORD "Detalle" 0 1 0 TEST 0 3 AT 1;1;0 7 "" FIELD "Número_pro-
veedor" C AT 1;1 SIZE 10;1 DEC 0 WID 10 PIC "" AS "" FIELD "Nombre_proveedor" C AT 1;33 SIZE
58;1 DEC 0 WID 58 PIC "" AS "" FIELD "Última_fecha_activa" D AT 1;277 SIZE 20;1 DEC 0 WID 20
PIC "DD/MM/AAAA" AS ""

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Solución de problemas con importaciones de PDF en la edición Unicode de ACL


Si detecta problemas al importar un archivo PDF con la edición Unicode de ACL, el problema puede estar
relacionado con las especificaciones de longitud:
l Si aparecen inesperadamente caracteres de un idioma extranjero o el formato de la tabla de ACL
que se obtiene está inclinado, compruebe que SIZE longitud esté ajustada en un número par.
Si especifica un número de bytes impar para SIZE longitud, puede provocar problemas con el pro-
cesamiento de los datos importados.
l Si se crea la tabla de ACL, pero esta no contiene ningún registro, intente ajustar longitud_omisión en
2 o en otro número par si hay datos de encabezado al principio del archivo y usted desea saltearlos.

Identificadores de los tipos de datos de los campos


La siguiente tabla incluye las letras que debe usar al especificar el tipo para FIELD. Cada letra corresponde
a un tipo de datos.
Por ejemplo, si está definiendo un campo Apellido, que utiliza tipos de datos de carácter, especificará "C":
FIELD "Apellido" C.
Nota
Cuando utilice el Asistente de definición de datos para definir una tabla que incluya cam-
pos EBCDIC, Unicode o ASCII, se le asignará la letra "C" automáticamente a los campos
(correspondiente al tipo CHARACTER [carácter]).
Al ingresar manualmente un enunciado IMPORT o editar un enunciado IMPORT existente,
puede utilizar los valores más específicos de las letras "E" o "U" en lugar de los campos
EBCDIC o Unicode.

Letra Tipo de datos

A ACL

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 267 de 898


Comandos

Letra Tipo de datos

B BINARY (binario)

C CHARACTER (carácter)

D DATETIME

E EBCDIC

F FLOAT (flotante)

G ACCPAC

I IBMFLOAT

K UNSIGNED

L LÓGICOS

N PRINT

P PACKED (compactado)

Q BASIC

R MICRO

S CUSTOM

T PCASCII

U UNICODE

V VAXFLOAT

X NUMERIC (numérico)

Y UNISYS

Z ZONED (zonado)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 268 de 898


Comandos

Comando IMPORT PRINT


Crear una tabla de ACL definiendo e importando un archivo de imagen de impresión (reporte).

Sintaxis
IMPORT PRINT TO tabla nombrearchivo_importación FROM nombrearchivo_origen <SERVER nom-
bre_perfil> valor_conjunto_caracteres <número_página_código> {[sintaxis_registro] [sintaxis_campo]
<...n>} <...n>

sintaxis_registro ::=
RECORD nombre_del_registro tipo_de_registro líneas_en_el_registro transparente [sintaxis_prue-
ba]<...n>

sintaxis_prueba ::=
TEST incluir_excluir tipo_de_coincidencia AT línea_de_inicio;posición_inicial;rango lógica texto

sintaxis_campo ::=
FIELD nombre tipo AT línea_de_inicio; posición_inicial SIZE longitud; líneas_en_campo DEC valor
WID bytes PIC formato AS nombre_visible

Parámetros
Parámetros generales
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una exten-
sión de archivo .FIL. Por ejemplo: "Facturas.FIL".

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 269 de 898


Comandos

Nombre Descripción

Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-
cificar la ubicación del archivo:
o "C:\datos\nombrearchivo_origen"
o "datos\nombrearchivo_origen"

SERVER nombre_del_per- El nombre de perfil para el servidor que contiene los datos que desea importar.
fil
opcional

valor_conjunto_caracteres El conjunto de caracteres utilizado para codificar el archivo de imagen de impresión


(reporte). Se admiten los siguientes valores:
o 0: ASCII
o 1: EBCDIC
o 2: Unicode
o 3: Texto codificado

número_página_código Si especificó 3 (Texto codificado) para valor_conjunto_caracteres, también debe ingre-


sar un número de página de códigos.
opcional

Parámetro RECORD
Información de la definición del registro general.
Nota
Parte de la información de definición del registro se especifica utilizando códigos numé-
ricos que coinciden con las opciones del Asistente de Definición de Datos.
En los scripts, especifique el código numérico, no el nombre de la opción.

Nombre Descripción

RECORD nombre_del_ El nombre del registro en el Asistente de Definición de Datos.


registro
Es necesario especificar el nombre_del_registro en el comando IMPORT PRINT, pero
el valor nombre_del_registro no aparece en la tabla de ACL que se obtiene.
En el Asistente de Definición de Datos, ACL proporciona nombres predeterminados

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 270 de 898


Comandos

Nombre Descripción

sobre la base del tipo de registro:


o Detalle
o Encabezadon
o Pie de páginan
Puede usar los nombres predeterminados o especificar nombres diferentes.

tipo_de_registro Los tres tipos de registro posibles al definir un archivo de Imagen de impresión:
o 0: detalle
o 1: encabezado
o 2: pie de página
Nota
Puede definir varios conjuntos de registros de encabezado y pie de
página en una única ejecución de IMPORT PRINT, pero solo un con-
junto de registros de detalle.

líneas_en_el_registro La cantidad de líneas que ocupa un registro en el archivo de imagen de impresión.


Puede definir registros de una o varias líneas para que coincidan con los datos del
archivo.

transparente El ajuste de transparencia para un registro de encabezado.


Nota
Se aplica únicamente a los registros de encabezado.
o 0: no transparente
o 1: transparente
Los registros de encabezado transparentes no separan los registros de detalle de
varias líneas.
Si un registro de encabezado separa un registro de detalle de varias líneas del archivo
de imagen de impresión de origen, lo cual puede ocurrir cuando hay un salto de
página, al especificar 1 (transparente), se unifica el registro de detalle de la tabla de
ACL resultante.

Parámetro TEST
Los criterios para definir un conjunto de registros en el archivo de imagen de impresión. Puede tener una o
más instancias de TEST para cada instancia de RECORD.
Nota
Algunos de los criterios se especifican utilizando códigos numéricos que asignan las opcio-
nes del Asistente de Definición de Datos (los nombres de las opciones se muestran a con-
tinuación entre paréntesis).
En los scripts, especifique el código numérico, no el nombre de la opción.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 271 de 898


Comandos

Nombre Descripción

TEST incluir_excluir Cómo tratar los datos coincidentes:


o 0: (Incluir) los datos que reúnen los criterios se incluyen en el conjunto de registros
o 1: (Excluir) los datos que reúnen los criterios se excluyen del conjunto de registros

tipo_de_coincidencia El tipo de coincidencia que se debe aplicar:


o 0: (Concordancia exacta) los registros coincidentes deben contener el carácter o la
cadena de caracteres especificados en la línea de inicio especificada, comenzando
en la posición inicial especificada
o 2: (Alfabético) los registros coincidentes deben contener uno o más caracteres alfa-
béticos en la línea de inicio especificada, en la posición inicial especificada o en
todas las posiciones del rango especificado
o 3: (Numérico) los registros coincidentes deben contener uno o más caracteres numé-
ricos en la línea de inicio especificada, en la posición inicial especificada o en todas
las posiciones del rango especificado
o 4: (En blanco) los registros coincidentes deben contener uno o más espacios en
blanco en la línea de inicio especificada, en la posición inicial especificada o en
todas las posiciones del rango especificado
o 5: (No en blanco) los registros coincidentes deben contener uno o más espacios de
caracteres que no estén en blanco (incluidos los caracteres especiales), en la línea
de inicio especificada, en la posición inicial especificada o en todas las posiciones
del rango especificado
o 7: (Buscar en línea) los registros coincidentes deben contener el carácter o la
cadena de caracteres especificados en cualquier lugar de la línea de inicio espe-
cificada
o 8: (Buscar en rango) los registros coincidentes deben contener el carácter o la
cadena de caracteres especificados en la línea de inicio especificada, en cualquier
lugar del rango especificado
o 10: (Búsqueda con comodines) los registros coincidentes deben contener carac-
teres que coincidan con el patrón de caracteres especificado, en la línea de inicio
especificada, comenzando en la posición especificada

AT línea_de_inicio; posi- o línea_de_inicio: la línea del registro a la que se aplican los criterios
ción_inicial; rango
Por ejemplo, si crea una búsqueda con comodines para que coincidan con códigos
postales y los códigos postales aparecen en la tercera línea de un registro de tres
líneas, debe especificar 3 en línea_de_inicio.
Nota
En el caso de registros de una sola línea, el valor de línea_de_inicio
es siempre 1.
o posición_inicial: la posición inicial en bytes del archivo de imagen de
impresión para la comparación con los criterios
o rango: la cantidad de bytes a partir de la posición inicial de bytes en el archivo de
imagen de impresión que se debe usar en la comparación con los criterios
Si está utilizando únicamente la posición de bytes de inicio, sin un rango, espe-
cifique 0 para rango.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 272 de 898


Comandos

Nombre Descripción

Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) exten- 1 byte = 1 carácter


dido

ACL Unicode, datos Unicode 2 bytes = 1 carácter

Para los datos Unicode, el rango debe ser un número par de bytes.
Por ejemplo, 50;59 (10 bytes). Si especifica un número de bytes
impar, tal vez no sea posible lograr una coincidencia correcta con los
criterios.

lógica Las relaciones lógicas entre los criterios:


o 0: (Y) el criterio actual y el siguiente se relacionan con un AND lógico
o 1: (O) el criterio actual y el siguiente se relacionan con un OR lógico
o 4: (Nuevo grupo > Y) el criterio actual es el último de un grupo de criterios lógicos y
el grupo actual y el grupo siguiente están relacionados con un AND lógico
o 5: (Nuevo grupo > O) el criterio actual es el último de un grupo de criterios lógicos y
el grupo actual y el siguiente se relacionan con un OR lógico
o 7: (Fin) el criterio actual es el último de un grupo de criterios lógicos

texto Caracteres literales o comodín con los que se debe buscar una coincidencia:
o Para Concordancia exacta, Buscar en línea o Buscar en rango:, especifica el carác-
ter o la cadena de caracteres que identifican de manera exclusiva al conjunto de
registros del archivo de imagen de impresión.
o Para Búsqueda con comodines:, especifica el patrón de caracteres que identifican
de manera exclusiva el conjunto de registros del archivo de imagen de impresión
La opción Búsqueda con comodines usa la misma sintaxis que la "Función MAP( )"
en la página 601.
Para otros tipos de coincidencias, texto es una cadena vacía "".

Parámetros FIELD
Información de la definición de campo.

Nombre Descripción

FIELD nombre tipo Los campos individuales para importar desde el archivo de datos de origen, incluidos el
nombre y el tipo de datos del campo. Para excluir un campo de la importación, no lo
especifique.
Si desea obtener información acerca de los tipos, consulte "Identificadores de los tipos
de datos de los campos" en la página 276.

AT línea_de_inicio; posi- o línea_de_inicio: la línea de inicio del campo del registro del archivo de imagen de
ción_inicial impresión

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 273 de 898


Comandos

Nombre Descripción

En el caso de registros de varias líneas en un archivo de imagen de impresión, línea_


de_inicio le permite comenzar un campo en cualquier línea del registro. línea_de_ini-
cio siempre es 1 si líneas_en_el_registro es 1.
o posición_inicial: la posición inicial en bytes del campo del archivo de imagen de
impresión
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

SIZE longitud; líneas_en_ o longitud: la longitud del campo en bytes en el formato de tabla de ACL
el_campo Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

Para los datos Unicode, especifique solo un número par de bytes. Si


especifica un número de bytes impar, es posible que los caracteres no
se vean correctamente.
o líneas_en_el_campo: la cantidad de líneas ocupadas por un valor de campo indi-
vidual en el archivo de imagen de impresión
Puede definir campos de una o varias líneas para hacer coincidir con los datos del
archivo.
Nota
La cantidad de líneas especificadas para un campo no puede superar
la cantidad de líneas especificadas para el registro que contiene el
campo.

DEC valor La cantidad de lugares decimales para los campos numéricos.

WID bytes El ancho visible del campo en bytes.


El valor que se especifica controla el ancho visible del campo en las vistas y reportes de
ACL. El ancho visible nunca altera los datos; sin embargo, si es más pequeño que la lon-
gitud del campo, es posible que oculte datos.

PIC formato Nota


Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vistas
y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 274 de 898


Comandos

Nombre Descripción

origen (orden de los caracteres de fecha y hora, los separadores, etc.)


Nota
Para los campos de fechahora, el formato debe coincidir exactamente
con el formato físico de los datos de origen. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista de la nueva
tabla de ACL.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.
AS es obligatorio cuando se está definiendo un FIELD. Para que el nombre visible sea el
mismo que el nombre del campo, introduzca un valor en blanco en nombre_visible con
la siguiente sintaxis: AS "". Asegúrese de que no haya un espacio entre las dos comillas.

Ejemplos
Importación de datos desde un archivo de imagen de impresión (Reporte)
Usted importa datos desde el archivo de imagen de impresión (Reporte), Reporte.txt.
Se crea un registro de encabezado y un conjunto de registros de detalles, con cinco campos, en la tabla de
ACL resultante, Reporte_inventario:

IMPORT PRINT TO Reporte_inventario "Reporte_inventario.FIL" FROM "Reporte.txt" 0 RECORD


"Encabezado1" 1 1 0 TEST 0 0 AT 1;17;0 7 ":" FIELD "Campo_1" C AT 1;19 SIZE 2;1 DEC 0 WID 2
PIC "" AS "Clase Prod" FIELD "Campo_2" C AT 1;24 SIZE 31;1 DEC 0 WID 31 PIC "" AS "Descripción
Prod" RECORD "Detalle" 0 1 0 TEST 0 0 AT 1;59;59 7 "." FIELD "Campo_3" X AT 1;6 SIZE 9;1 DEC 0
WID 9 PIC "" AS "ID Elemento" FIELD "Campo_4" C AT 1;16 SIZE 24;1 DEC 0 WID 24 PIC "" AS
"Desc. elemento" FIELD "Campo_5" N AT 1;40 SIZE 10;1 DEC 0 WID 10 PIC "" AS "Disponible"
FIELD "Campo_6" N AT 1;50 SIZE 12;1 DEC 2 WID 12 PIC "" AS "Costo" FIELD "Campo_7" N AT
1;62 SIZE 12;1 DEC 2 WID 12 PIC "" AS "Total"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 275 de 898


Comandos

Identificadores de los tipos de datos de los campos


La siguiente tabla incluye las letras que debe usar al especificar el tipo para FIELD. Cada letra corres-
ponde a un tipo de datos.
Por ejemplo, si está definiendo un campo Apellido, que utiliza tipos de datos de carácter, especificará "C":
FIELD "Apellido" C.
Nota
Cuando utilice el Asistente de definición de datos para definir una tabla que incluya cam-
pos EBCDIC, Unicode o ASCII, se le asignará la letra "C" automáticamente a los campos
(correspondiente al tipo CHARACTER [carácter]).
Al ingresar manualmente un enunciado IMPORT o editar un enunciado IMPORT exis-
tente, puede utilizar los valores más específicos de las letras "E" o "U" en lugar de los cam-
pos EBCDIC o Unicode.

Letra Tipo de datos

A ACL

B BINARY (binario)

C CHARACTER (carácter)

D DATETIME

E EBCDIC

F FLOAT (flotante)

G ACCPAC

I IBMFLOAT

K UNSIGNED

L LÓGICOS

N PRINT

P PACKED (compactado)

Q BASIC

R MICRO

S CUSTOM

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 276 de 898


Comandos

Letra Tipo de datos

T PCASCII

U UNICODE

V VAXFLOAT

X NUMERIC (numérico)

Y UNISYS

Z ZONED (zonado)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 277 de 898


Comandos

Comando IMPORT SAP


Crea una tabla de ACL importando datos desde un sistema SAP utilizando Direct Link.

Sintaxis
IMPORT SAP PASSWORD núm TO nombre_tabla SAP SOURCE "SAP AGENT" detalles_impor-
tación

Parámetros
Nombre Descripción

PASSWORD núm La definición de contraseña que se debe usar.


La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD.
No se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de
contraseñas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en
la página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.
Nota
La contraseña se utiliza para acceder al sistema SAP.

TO nombre_tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

SAP SOURCE Requerido para importar datos SAP. "SAP AGENT" es la única opción disponible.
"SAP AGENT"

detalles_importación Los detalles de la consulta. Se debe escribir entre las etiquetas <q></q>, y utiliza las eti-
quetas especificadas en "Etiquetas de consulta de Direct Link" en la página 281 para
definir la consulta.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 278 de 898


Comandos

Nombre Descripción

El tamaño físico de este valor puede ser de hasta 16 KB.

Ejemplos
Realización de una consulta en varias tablas
Este ejemplo realiza una consulta de múltiples tablas utilizando el comando IMPORT SAP.
Para crear una cadena de consulta válida, es necesario ordenar y anidar correctamente las etiquetas. En
este ejemplo, las etiquetas están correctamente ordenadas y anidadas. Utilice este ejemplo para deter-
minar el orden y el anidamiento necesarios de las etiquetas de consulta IMPORT SAP.
Nota
Para favorecer la lectura, este ejemplo tiene un formato de varias líneas. En su script, la
cadena de consulta y el comando se deben introducir sin ningún salto de línea.
Consejo

La sintaxis de una cadena de consulta IMPORT SAP suele ser compleja. La mejor manera
de agregar comandos IMPORT SAP con cadenas de consulta a sus scripts consiste en
copiar un comando IMPORT SAP existente desde la ficha Log en ACL y luego editar las eti-
quetas de consulta según sea necesario.

IMPORT SAP PASSWORD 1 TO Purchasing_doc SAP SOURCE "SAP AGENT"


<q version="6.0">
  <s>0</s>
  <d>IDES</d>
  <u>mzunini</u>
  <c>800</c>
  <lg>en</lg>
  <cf>C:\Datos de ACL\Doc_compra.fil</cf>
  <sf>E:\Datos\DL_JSMITH111107.DAT</sf>
  <jcount>11110701</jcount>
  <jname>DL_JSMITH111107.DAT</jname>
  <dl>75</dl>
  <m>2</m>
  <dt>20140321</dt>
  <tm>033000</tm>
  <r>500</r>
  <ar>0</ar>
  <e>500</e>

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 279 de 898


Comandos

  <ts>
    <t>
      <n>EKKO</n>
      <a>T00001</a>
      <td>Encabezado del documento de compra</td>
      <fs>
        <f>EBELN</f>
        <f>BUKRS</f>
        <f>BSTYP</f>
        <f>BSART</f>
        <f>STATU</f>
        <f>WKURS</f>
      </fs>
      <wc>
        <w>
           <f>BUKRS</f>
           <o>0</o>
           <l>1000</l>
           <h></h>
        </w>
      </wc>
    </t>
    <t>
      <n>EKPO</n>
      <a>T00002</a>
      <td>Elemento del documento de compra</td>
      <fs>
        <f>EBELP</f>
        <f>WERKS</f>
        <f>MENGE</f>
        <f>BRTWR</f>
      </fs>
      <wc></wc>
    </t>
  </ts>
  <js>
    <jc>
      <pt>
        <pa>T00001</pa>
        <pf>EBELN</pf>
      </pt>
      <ct>
        <ca>T00002</ca>
        <cf>EBELN</cf>

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 280 de 898


Comandos

      </ct>
    </jc>
  </js>
</q>

Observaciones
El comando IMPORT SAP solo se admite si se ha instalado y configurado Direct Link.
La tabla de "Etiquetas de consulta de Direct Link" abajo indica las etiquetas que se pueden incluir en el pará-
metro detalles_importación. La columna Obligatorio utiliza los siguientes valores para indicar cuando las eti-
quetas deben estar presentes:
l Y: Obligatoria
l N: Opcional
l M: Obligatoria solo para consultas en varias tablas
l B: Obligatoria, pero no se debe pasar ningún valor
l W: Opcional cuando se utilizan filtros
l S: Obligatoria cuando se especifica el modo programado

Etiquetas de consulta de Direct Link


Nombre Etiqueta Obligatoria Descripción

Alias de tabla <a> M El alias que identifica de forma única la tabla dentro de la consulta.
Esto permite utilizar la misma tabla más de una vez.
La longitud máxima es de 6 caracteres.

Todas las filas <ar> Y Indica que se deben devolver todas las filas coincidentes como parte
del conjunto de resultados de la consulta.
Los valores válidos son:
1: Saltea la cantidad de registros especificada en la etiqueta <r>
(Filas máximas)
0: Devuelve el número de registros especificado en la etiqueta <r>
(Filas máximas)
Esta etiqueta siempre aparece después de la etiqueta <r></r>.

Cliente <c> N El cliente dentro del sistema SAP.

Alias de tabla hija <ca> M El alias de la tabla hija.

Campo de tabla <cf> M El campo de la tabla hija en el que se basa la condición de unión.
hija

Nombre de <cf> Y Identifica el archivo de destino en el sistema cliente donde se alma-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 281 de 898


Comandos

Nombre Etiqueta Obligatoria Descripción

archivo del cliente cenarán los resultados de la consulta.

Tabla hija <ct> M La tabla hija en la condición de unión.

Destino <d> N Identifica un destino en el archivo de la biblioteca SAP RFC (sap-


nwrfc.ini) que se utiliza para localizar un sistema SAP.

Longitud de datos <dl> B El número de caracteres en cada fila, incluidos los caracteres de
retorno de carro y salto de línea que indican el final de un registro
(CR+LF o los caracteres hexadecimales 0D+0A).

Fecha <dt> S Obligatorio al usar el modo programado. Especifica la hora para eje-
cutar el trabajo de SAP.
El formato debe ser AAAAMMDD. Por ejemplo, el 31 de diciembre de
2014 se debe especificar como 20141231.

Filas esperadas <e> B El número esperado de filas que devolverá la consulta.

Nombre del <f> Y El nombre del campo nativo.


campo

Campo de filtro <f> W El nombre del campo nativo al que se aplica el filtro.

Campos <fs> Y La lista de campos de la tabla que se devolverán como parte de los
resultados de la consulta.

Valor alto <h> W Contiene el alto valor cuando se utiliza el operador Entre. Se ignora
cuando se utiliza cualquier otro operador.

Condición de <jc> M La condición de unión.


unión

Recuento de tra- <jcount> B Utilizado internamente por SAP para identificar una consulta en el
bajos modo de Segundo plano.

Nombre de trabajo <jname> B Utilizado internamente por SAP para identificar una consulta en el
modo de Segundo plano.

Relaciones de <js> Y La lista de condiciones de unión que vincula las tablas dentro de la
unión consulta.

Conmutador de <jw> N Equivalente numérico del tipo enumerado de conmutador de unión.


unión
Los valores válidos son:
0: Unión interna
1: Unión externa izquierda

Valor bajo <l> W Contiene el valor más bajo cuando se utiliza el operador Entre o el

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 282 de 898


Comandos

Nombre Etiqueta Obligatoria Descripción

valor cuando se utiliza cualquier otro operador.

Idioma <lg> Y Identificador de idioma utilizado para determinar la localidad de los


campos en la base de datos SAP.

Modo <m> Y Equivalente numérico del tipo enumerado de modo de envío.


Los valores válidos son:
0: Extraer ahora
1: Segundo plano
2: Programado/a

Nombre de tabla <n> Y El nombre de la tabla nativa.

Operador <o> W Equivalente numérico del tipo enumerado de operador.


Los valores válidos son:
0: Igual a (=)
1: No igual a (<>)
2: Menor que (<)
3: Menor que o igual a (<=)
4: Mayor que (>)
5: Mayor que o igual a (>=)
6: Entre
7: Contiene

Alias de tabla <pa> M El alias de la tabla padre.


padre

Campo de tabla <pf> M El campo de la tabla padre en el que se basa la condición de unión.
padre

Tabla padre       <pt> M La tabla padre en la condición de unión.

Consulta <q> Y Encierra una consulta.

Máximo de filas <r> Y El número máximo de filas que debe devolver la consulta.

Seleccionado <s> Y Si la etiqueta <s> aparece debajo de la etiqueta <f>, indica si el


campo se devolverá como parte del conjunto de resultados de la con-
sulta.

Sistema <s> Y Si la etiqueta <s> aparece debajo de la etiqueta <q>, identifica el tipo
de sistema con el que se utiliza esta consulta (actualmente solo se
admite el sistema SAP).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 283 de 898


Comandos

Nombre Etiqueta Obligatoria Descripción

Nombre de <sf> B Identifica al archivo en el servidor que contiene los resultados de una
archivo del ser- consulta en el modo de Segundo plano.
vidor

Nombre del grupo <sg> N El nombre del grupo de servidores. Máximo de 20 caracteres
de servidores

Nombre del ser- <sn> N El nombre del servidor. Máximo de 20 caracteres


vidor

Tabla     <t> Y La tabla.

Descripción de la <td> Y La descripción de la tabla obtenida del diccionario de datos SAP.


tabla Siempre debe aparecer debajo de la etiqueta <a>.

Tiempo <tm> S Obligatorio al usar el modo programado. Especifica la hora para eje-
cutar el trabajo de SAP.
El formato debe ser hhmmss. Por ejemplo, 2:30 pm se debe espe-
cificar como 143000.

Tablas <ts> Y La lista de tablas de las que la consulta extraerá los datos.

Tipo de tabla <tt> Y El tipo de tabla de SAP.


Los valores válidos son:
0: de clúster
1: transparente
2: de agrupación
3: de vista

Nombre de usua- <u> N El nombre de inicio de sesión del usuario.


rio

Filtro         <w> W El filtro aplicado a los datos de la tabla.

Filtros <wc> W La lista de filtros que se aplicarán a los datos contenidos en la tabla.

Conmutador de fil- <ws> N Equivalente numérico del tipo enumerado de conmutador de filtro.
tro
Los valores válidos son:
0: (Or) y (Or)
1: (And) o (And)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 284 de 898


Comandos

Comando IMPORT XBRL


Crea una tabla de ACL definiendo e importando un archivo XBRL.

Sintaxis
IMPORT XBRL TO tabla nombrearchivo_importación FROM nombrearchivo_origen CONTEXT nom-
bre_contexto <...n> [sintaxis_campo] <...n> <IGNORE núm_campo> <...n>

sintaxis_campo ::=
FIELD nombre tipo AT posición_inicial DEC valor WID bytes PIC formato AS nombre_visible

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una exten-
sión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-
cificar la ubicación del archivo:
o "C:\datos\nombrearchivo_origen"
o "datos\nombrearchivo_origen"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 285 de 898


Comandos

Nombre Descripción

CONTEXT nombre_con- El contexto XBRL a partir del cual se definirá la tabla. Si especifica más de un contexto,
texto todos los contextos deben ser del mismo tipo (instant, period o forever).

FIELD nombre tipo Los campos individuales para importar desde el archivo de datos de origen, incluidos el
nombre y el tipo de datos del campo. Para excluir un campo de la importación, no lo
especifique.
Si desea obtener información acerca de los tipos, consulte "Identificadores de los tipos
de datos de los campos" en la página opuesta.

AT posición_inicial La posición del byte de inicio para el campo en el archivo de datos de ACL.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En general, en ACL Unicode, debe especificar una posición de byte de


inicio impar. Si especifica una posición de inicio par, es posible que los
caracteres no se vean correctamente.

DEC valor La cantidad de lugares decimales para los campos numéricos.

WID bytes La longitud del campo en bytes en el formato de tabla de ACL.


Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En ACL Unicode, especifique solo un número par de bytes. Si especifica


un número de bytes impar, es posible que los caracteres no se vean
correctamente.

PIC formato Nota


Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vistas
y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exactamente
con el formato físico de los datos de origen. Por ejemplo, si los datos
de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista de la nueva

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 286 de 898


Comandos

Nombre Descripción

tabla de ACL.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.
AS es obligatorio cuando se está definiendo un FIELD. Para que el nombre visible sea el
mismo que el nombre del campo, introduzca un valor en blanco en nombre_visible con
la siguiente sintaxis: AS "". Asegúrese de que no haya un espacio entre las dos comillas.

IGNORE núm_campo Excluye un campo del formato de tabla.


opcional núm_campo especifica la posición del campo en los datos de origen. Por ejemplo,
IGNORE 5 excluye el quinto campo en los datos de origen del formato de tabla de ACL.

Ejemplos
Importación de un archivo XBRL a una tabla de ACL
Usted importa datos desde el contexto Actual_En contenidos en un archivo XBRL a una tabla de ACL deno-
minada Financieros :

IMPORT XBRL TO Financieros "Financieros.fil" FROM "EstadofinancieroXBRL.xml" CONTEXT


"Actual_En" FIELD "Item" C AT 1 DEC 0 WID 57 PIC "" AS "" FIELD "Valor" X AT 58 DEC 0 WID 7 PIC
"" AS "" IGNORE 1 IGNORE 3

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Identificadores de los tipos de datos de los campos


La siguiente tabla incluye las letras que debe usar al especificar el tipo para FIELD. Cada letra corresponde
a un tipo de datos.
Por ejemplo, si está definiendo un campo Apellido, que utiliza tipos de datos de carácter, especificará "C":
FIELD "Apellido" C.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 287 de 898


Comandos

Nota
Cuando utilice el Asistente de definición de datos para definir una tabla que incluya cam-
pos EBCDIC, Unicode o ASCII, se le asignará la letra "C" automáticamente a los campos
(correspondiente al tipo CHARACTER [carácter]).
Al ingresar manualmente un enunciado IMPORT o editar un enunciado IMPORT exis-
tente, puede utilizar los valores más específicos de las letras "E" o "U" en lugar de los cam-
pos EBCDIC o Unicode.

Letra Tipo de datos

A ACL

B BINARY (binario)

C CHARACTER (carácter)

D DATETIME

E EBCDIC

F FLOAT (flotante)

G ACCPAC

I IBMFLOAT

K UNSIGNED

L LÓGICOS

N PRINT

P PACKED (compactado)

Q BASIC

R MICRO

S CUSTOM

T PCASCII

U UNICODE

V VAXFLOAT

X NUMERIC (numérico)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 288 de 898


Comandos

Letra Tipo de datos

Y UNISYS

Z ZONED (zonado)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 289 de 898


Comandos

Comando IMPORT XML


Crea una tabla de ACL definiendo e importando un archivo XML.

Sintaxis
IMPORT XML TO tabla nombrearchivo_importación FROM nombrearchivo_origen [sintaxis_campo]
<...n>

sintaxis_campo ::=
FIELD nombre tipo AT posición_inicial DEC valor WID bytes PIC formato AS nombre_visible RULE
expresión_xpath

Parámetros
Nombre Descripción

TO tabla El nombre de la tabla ACL a la que se importarán los datos.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

nombrearchivo_impor- El nombre del archivo de datos de ACL que se debe crear.


tación
Especifique nombrearchivo_importación como una cadena entre comillas con una
extensión de archivo .FIL. Por ejemplo: "Facturas.FIL".
Por valor predeterminado, el archivo de datos (.FIL) se guarda en la carpeta que con-
tiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
o "C:\datos\Facturas.FIL"
o "datos\FacturasFIL"

FROM nombrearchivo_ori- El nombre del archivo de datos de origen. nombrearchivo_origen debe ser una cadena
gen entre comillas.
Si el archivo de datos de origen no está ubicado en el mismo directorio que el proyecto
ACL, debe utilizar una ruta de acceso absoluta o una ruta de acceso relativa para espe-
cificar la ubicación del archivo:
o "C:\datos\nombrearchivo_origen"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 290 de 898


Comandos

Nombre Descripción

o "datos\nombrearchivo_origen"

FIELD nombre tipo Los campos individuales para importar desde el archivo de datos de origen, incluidos
el nombre y el tipo de datos del campo. Para excluir un campo de la importación, no lo
especifique.
Si desea obtener información acerca de los tipos, consulte "Identificadores de los tipos
de datos de los campos" en la página siguiente.

AT posición_inicial La posición del byte de inicio para el campo en el archivo de datos de ACL.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En general, en ACL Unicode, debe especificar una posición de byte de


inicio impar. Si especifica una posición de inicio par, es posible que los
caracteres no se vean correctamente.

DEC valor La cantidad de lugares decimales para los campos numéricos.

WID bytes La longitud del campo en bytes en el formato de tabla de ACL.


Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode 2 bytes = 1 carácter

En ACL Unicode, especifique solo un número par de bytes. Si especifica


un número de bytes impar, es posible que los caracteres no se vean
correctamente.

PIC formato Nota


Se aplica solo a campos numéricos o de fechahora.
o campos numéricos: el formato de visualización de los valores numéricos en las vis-
tas y los reportes de ACL
o campos de fechahora: el formato físico de los valores de fechahora en los datos de
origen (orden de los caracteres de fecha y hora, los separadores, etc.)
Nota
Para los campos de fechahora, el formato debe coincidir exac-
tamente con el formato físico de los datos de origen. Por ejemplo, si
los datos de origen son 12/31/2014, debe ingresar el formato como
MM/DD/AAAA.
formato debe estar encerrado entre comillas.

AS nombre_visible El nombre visible (título de columna alternativo) para el campo en la vista de la nueva
tabla de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 291 de 898


Comandos

Nombre Descripción

Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma
(;) entre las palabras si desea que haya un salto de línea en el título de la columna.
AS es obligatorio cuando se está definiendo un FIELD. Para que el nombre visible sea
el mismo que el nombre del campo, introduzca un valor en blanco en nombre_visible
con la siguiente sintaxis: AS "". Asegúrese de que no haya un espacio entre las dos
comillas.

RULE expresión_xpath La expresión XPath que se utiliza para seleccionar el contenido del campo del archivo
XML.
XPath es una manera estándar de acceder a los datos de archivos XML. Por ejemplo,
cuenta/título/texto() recupera el texto dentro de la etiqueta <title> en el archivo XML.

Ejemplos
Importación de datos desde un archivo XML a una tabla de ACL
Usted importa datos desde un archivo XML a una tabla de ACL con el nombre Empleados :

IMPORT XML TO Empleados "Empleados.fil" FROM "emp.XML" FIELD "NroEmpl" C AT 1 DEC 0


WID 6 PIC "" AS "" RULE "/RECORDS/RECORD/NroEmpl/texto()" FIELD "Nombre" C AT 7 DEC 0
WID 13 PIC "" AS "" RULE "/RECORDS/RECORD/Nombre/texto()" FIELD "Apellido" C AT 20 DEC
0 WID 20 PIC "" AS "" RULE "/RECORDS/RECORD/Apellido/texto()" FIELD "FechaContratación" D
AT 40 DEC 0 WID 10 PIC "AAAA-MM-DD" AS "" RULE "/RECORDS/RECORD/Fe-
chaContratación/texto()" FIELD "Salario" N AT 50 DEC 2 WID 8 PIC "" AS "" RULE
"/RECORDS/RECORD/Salario/texto()"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Identificadores de los tipos de datos de los campos


La siguiente tabla incluye las letras que debe usar al especificar el tipo para FIELD. Cada letra corres-
ponde a un tipo de datos.
Por ejemplo, si está definiendo un campo Apellido, que utiliza tipos de datos de carácter, especificará "C":
FIELD "Apellido" C.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 292 de 898


Comandos

Nota
Cuando utilice el Asistente de definición de datos para definir una tabla que incluya cam-
pos EBCDIC, Unicode o ASCII, se le asignará la letra "C" automáticamente a los campos
(correspondiente al tipo CHARACTER [carácter]).
Al ingresar manualmente un enunciado IMPORT o editar un enunciado IMPORT existente,
puede utilizar los valores más específicos de las letras "E" o "U" en lugar de los campos
EBCDIC o Unicode.

Letra Tipo de datos

A ACL

B BINARY (binario)

C CHARACTER (carácter)

D DATETIME

E EBCDIC

F FLOAT (flotante)

G ACCPAC

I IBMFLOAT

K UNSIGNED

L LÓGICOS

N PRINT

P PACKED (compactado)

Q BASIC

R MICRO

S CUSTOM

T PCASCII

U UNICODE

V VAXFLOAT

X NUMERIC (numérico)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 293 de 898


Comandos

Letra Tipo de datos

Y UNISYS

Z ZONED (zonado)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 294 de 898


Comandos

Comando INDEX
Crea un índice para una tabla de ACL que permite acceder a los registros en orden secuencial en lugar de
hacerlo en orden físico.

Sintaxis
INDEX <ON> campo_clave <D> <...n> TO nombre_archivo <IF prueba> <WHILE prueba> <FIRST
rango|NEXT rango> <OPEN> <ISOLOCALE código_lugar>

Parámetros
Nombre Descripción

ON campo_clave D <...n> El o los campos sobre los cuales realizar el índice.


Incluya D para ordenar el campo clave en orden descendente. El criterio de orde-
namiento predeterminado es ascendente.

TO nombre_archivo El nombre del índice y el archivo de índice asociado. El archivo de índice se crea con
una extensión .INX.
Nota
En la interfaz de usuario de ACL, los nombres de índice tienen un límite
máximo de 64 caracteres alfanuméricos. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

OPEN Abra la tabla y aplique el índice a la tabla


opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 295 de 898


Comandos

Nombre Descripción

ISOLOCALE código_lugar Nota


opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.
Use los siguientes códigos:
o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Ejemplos
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cree un índice y abra la tabla


En la tabla Proveedor, puede crear un índice en el campo Ciudad del proveedor y abrir la tabla:

OPEN Proveedor
INDEX ON Ciudad_del_proveedor to “ÍndiceCiudad” OPEN

Cree un índice y aplíquelo a una tabla


En la tabla Proveedor, puede crear un índice en el campo Ciudad del proveedor. Más tarde, puede apli-
car el índice a la tabla:

OPEN Proveedor
INDEX ON Ciudad_del_proveedor to “ÍndiceCiudad”

SET INDEX TO "ÍndiceCiudad"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 296 de 898


Comandos

Comando JOIN
Combina campos de dos tablas de ACL en una sola tabla nueva de ACL.

Sintaxis
JOIN PKEY campos_clave_primarios FIELDS campos_primarios SKEY campos_clave_secundarios
<WITH campos_secundarios> {sin_palabra_clave|PRIMARY|SECONDARY|PRIMARY
SECONDARY|UNMATCHED|MANY} <IF prueba> TO nombre_tabla <LOCAL> <OPEN> <WHILE
prueba> <FIRST rango|NEXT rango> <APPEND> <PRESORT> <SECSORT> <ISOLOCALE
código_lugar>

Parámetros
Nombre Descripción

PKEY campos_clave_pri- El o lo campos clave, o una expresión, de la tabla primaria.


marios

FIELDS campos_primarios Los campos o expresiones de la tabla primaria que deben incluirse en la tabla de salida
unida.

SKEY campos_clave_ El o los campos clave, o una expresión, de la tabla secundaria.


secundarios

WITH campos_secun- Los campos o expresiones de la tabla secundaria que deben incluirse en la tabla de
darios salida unida.
opcional No puede especificar WITH si está usando el tipo de unión UNMATCHED.

sin_palabra_clave | El tipo de unión que se debe realizar.


PRIMARY | SECONDARY |
PRIMARY SECONDARY | sin_palabra_clave (omitir todas las palabras clave del tipo de unión)
UNMATCHED | MANY

Opciones correspondientes del cuadro


Incluye en la tabla de salida unida de diálogo Unir

o todos los registros primarios que coinciden y o Registros primarios con corres-
el primer registro secundario que coincide pondencia

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 297 de 898


Comandos

Nombre Descripción

PRIMARY

Opciones correspondientes del cuadro


Incluye en la tabla de salida unida de diálogo Unir

o todos los registros primarios (que coinciden o Registros primarios con corres-
y no coinciden), el primer registro secun- pondencia
dario que coincide o Incluir todos los registros primarios

Nota
La palabra clave BOTH equivale a especificar PRIMARY.

SECONDARY

Opciones correspondientes del cuadro


Incluye en la tabla de salida unida de diálogo Unir

o todos los registros secundarios (que coin- o Registros primarios con corres-
ciden y no coinciden), los registros primarios pondencia
que coinciden o Incluir todos los registros secun-
Únicamente la primera instancia de los regis- darios
tros secundarios duplicados se hace coin-
cidir con un registro primario.

PRIMARY SECONDARY

Opciones correspondientes del cuadro


Incluye en la tabla de salida unida de diálogo Unir

o todos los registros primarios y secundarios o Registros primarios con corres-


(que coinciden y no coinciden) pondencia
Únicamente la primera instancia de los regis-
o Incluir todos los registros primarios
tros secundarios duplicado se hace coincidir o Incluir todos los registros secun-
con un registro primario. darios

UNMATCHED

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 298 de 898


Comandos

Nombre Descripción

Opciones correspondientes del cuadro


Incluye en la tabla de salida unida de diálogo Unir

o registros primarios sin correspondencia o Registros primarios sin corres-


pondencia

MANY

Opciones correspondientes del cuadro


Incluye en la tabla de salida unida de diálogo Unir

o todos los registros primarios que coinciden y o Registros con correspondencia de


todos los registros secundarios que coin- muchos a muchos
ciden
o un registro por cada coincidencia entre la
tabla primaria y secundaria

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional
Nota
Para la mayoría de los tipos de combinaciones, una condición IF se
aplica solo a la tabla primaria.
La única excepción es una combinación de muchos a muchos, en la que
la condición IF también puede hacer referencia a la tabla secundaria.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 299 de 898


Comandos

Nombre Descripción

Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

PRESORT Ordena la tabla primaria por el campo primario antes de ejecutar el comando.
opcional Nota
No puede utilizar PRESORT dentro del comando GROUP.

Indexar en lugar de ordenar


Puede indexar la tabla primaria en lugar de ordenarla. Con tablas extensas, la inde-
xación en lugar del ordenamiento puede reducir el tiempo necesario para unir las tablas.
Si está uniendo dos tablas con un campo clave común indexado, omita PRESORT y

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 300 de 898


Comandos

Nombre Descripción

SECSORT.

SECSORT Ordena la tabla secundaria por el campo clave secundario antes de ejecutar el
comando.
opcional
Nota
No puede utilizar SECSORT dentro del comando GROUP.

Indexar en lugar de ordenar


Puede indexar la tabla secundaria en lugar de ordenarla. Con tablas extensas, la inde-
xación en lugar del ordenamiento puede reducir el tiempo necesario para unir las tablas.
Si está uniendo dos tablas con un campo clave común indexado, omita PRESORT y
SECSORT.

ISOLOCALE código_lugar Nota


opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.
Use los siguientes códigos:
o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Ejemplos
Unir dos tablas es una manera de descubrir registros de cuentas por cobrar que no coinciden con ningún cliente
El siguiente ejemplo une las tablas Ar y Cliente utilizando el Número de cliente (NúmClien) como el campo
clave común.
El comando JOIN utiliza el tipo de unión UNMATCHED para crear una nueva tabla con los registros pri-
marios sin coincidencia, lo cual genera una lista de registros Ar que no están asociados con ningún registro
de Cliente.

OPEN Ar PRIMARY
OPEN Cliente SECONDARY
JOIN PKEY NúmClien FIELDS NúmClien Vencimiento Monto SKEY NúmClien UNMATCHED TO
"Clientenoencontrado.fil" OPEN PRESORT SECSORT

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 301 de 898


Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 302 de 898


Comandos

Comando LIST
Envía los datos de salida de uno o más campos de una tabla de ACL a una visualización con un formato de
columnas.

Sintaxis
LIST {FIELDS nombre_campo <AS nombre_visible> <...n>|FIELDS ALL} <LINE número lista_cam-
pos> <TO {SCREEN|nombre_archivo|PRINT}> <UNFORMATTED> <IF prueba> <WHILE prueba>
<FIRST rango|NEXT rango> <HEADER texto_encabezado> <FOOTER texto_pie_de_página>
<SKIP líneas> <EOF> <APPEND>

Parámetros
Nombre Descripción

FIELDS nombre_campo Los campos que se deben incluir en la salida:


<...n> | FIELDS ALL o FIELDS nombre_del_campo: usar los campos especificados
o FIELDS ALL: usa todos los campos de tabla

AS nombre_visible Se utiliza únicamente al listar datos por medio de FIELDS nombre_campo.


opcional El nombre visible (título de columna alternativo) para el campo en la salida. Si desea que
el nombre visible sea el mismo que el nombre del campo o un nombre visible existente
en la tabla de origen, no use AS.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma (;)
entre las palabras si desea que haya un salto de línea en el título de la columna.

LINE lista_campo numé- Se utiliza más de una línea en la salida para cada registro:
rico o número: el número de línea, debe estar entre 2 y 60 inclusive
opcional o lista_campo: los campos que se deben incluir en esa línea

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 303 de 898


Comandos

Nombre Descripción

l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada

UNFORMATTED La salida se muestra como texto sin formato. La salida es idéntica a la que crea el
comando EXPORT ASCII. Los datos sin formato se pueden enviar a un archivo para su
opcional
posterior procesamiento por otros programas de software.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

SKIP líneas Inserta la cantidad especificada de líneas en blanco entre cada registro de la lista. Por
ejemplo, LIST ALL SKIP 1 genera una lista con espaciado doble (un línea en blanco
opcional
entre cada registro).

EOF Ejecute el comando una vez más después de que se alcance el final del archivo.
opcional De esta manera, se asegura de que se procese el registro final de la tabla cuando se
encuentra dentro de un comando GROUP. Utilice EOF solo si todos los campos son cam-
pos calculados que hacen referencia a registros anteriores.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional

Ejemplos
Listado de excepciones y guardado en un archivo de texto
Usted utiliza LIST para crear un reporte que incluya las excepciones identificadas en una tabla de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 304 de 898


Comandos

inventario. El reporte se guarda como un archivo de texto:

LIST Número_producto Descripción Cantidad Costo_unitario Valor IF Cantidad < 0 OR Costo_unitario


< 0 HEADER "Valores negativos" TO “Excepciones.txt”

Observaciones
Cuándo usar LIST
Utilice LIST para imprimir datos, mostrar datos en la pantalla, para exportarlos a un archivo de texto.

Formato y totales
A menos que especifique UNFORMATTED, la siguiente información se incluye de manera automática:
l números de página
l fecha
l hora
l identificación del usuario
l encabezados de columna
Las columnas numéricas también se suman automáticamente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 305 de 898


Comandos

Comando LOCATE
Busca el primer registro que coincida con el valor o la condición especificados, o va a un número de regis-
tro especificado.

Sintaxis
LOCATE {IF prueba <WHILE prueba> <FIRST rango|NEXT rango>|RECORD núm}

Parámetros
Nombre Descripción

IF prueba El valor o la condición que se debe buscar. Debe encerrar los valores literales de carac-
teres entre comillas y los valores de fechahora entre comillas simples invertidas.

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

RECORD núm El número del registro para ubicar.

Ejemplos
Ubicar el primer registro que coincida con un valor especificado
En los siguientes ejemplos, se muestra el uso de LOCATE para encontrar la primera instancia de un valor
específico dentro de una tabla:

LOCATE IF Nombre_proveedor = "United Equipment"

LOCATE IF Nombre_proveedor = "Uni"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 306 de 898


Comandos

LOCATE IF Importe_factura > 1000

LOCATE IF Fecha_de_factura = `20141231`

Ubicar el primer registro que coincida con una condición o expresión específica
En los siguientes ejemplos, se muestra el uso de LOCATE para encontrar la primera instancia de una con-
dición o una expresión específicas dentro de una tabla:

LOCATE IF Nombre_proveedor = "United Equipment" AND Importe_factura > 1000 AND Fecha_de_
factura > `20140930`

LOCATE IF Ciudad_proveedor = v_ciudad

Ubicar un registro por número de registro


En el siguiente ejemplo, se muestra el uso de LOCATE para ir a un registro determinado de una tabla:

LOCATE RECORD 50

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
Utilice el comando LOCATE para ir directamente al primer registro de una tabla que coincida con la con-
dición o el valor especificados.
Si se encuentra el valor o la condición que se especificó, se selecciona el primer registro coincidente en la
tabla. Si no se encuentra el valor o la condición que se especificó, la tabla se ubica en el primer registro.
También puede usar LOCATE para ir directamente a un número de registro específico

Comparación entre LOCATE y FIND y SEEK


A diferencia de los comandos FIND y SEEK, el comando LOCATE no está restringido a una búsqueda en
una tabla indexada o un campo de caracteres único. Con LOCATE, es posible buscar cualquier tipo de lite-
ral o una expresión que utilice cualquier tipo de datos o una mezcla de tipos de datos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 307 de 898


Comandos

Cuando se lo utiliza para buscar en una tabla sin indexar, el comando LOCATE puede ser sig-
nificativamente más lento que FIND y SEEK porque debe procesar cada registro de la tabla secuen-
cialmente. El tiempo de procesamiento necesario depende del tamaño de la tabla, la ubicación del
registro coincidente y si se reduce el alcance de la búsqueda con WHILE, FIRST o NEXT.

Admite la coincidencia parcial


Se admite la coincidencia parcial para las búsquedas de caracteres. El valor de la búsqueda puede estar
incluido en un valor más extenso dentro del campo o los campos en los que se está realizando la bús-
queda. Sin embargo, los valores de búsqueda deben aparecer al principio de los campos para que se con-
sideren una coincidencia.

Activar o desactivar la coincidencia parcial


Puede activar o desactivar la coincidencia parcial usando el comando SET command o un ajuste del cua-
dro de diálogo Opciones :

Activar la coincidencia parcial Desactivar la coincidencia parcial

Especifique: SET EXACT OFF Especifique: SET EXACT ON


o o
Quite la selección de: Comparaciones de caracteres Seleccione: Comparaciones de caracteres exactos en el
exactos en el cuadro de diálogo Opciones (Herra- cuadro de diálogo Opciones (Herramientas > Opciones
mientas > Opciones > Tabla) > Tabla)
Resultado: El valor de la búsqueda puede estar incluido Resultado El valor de la búsqueda debe coincidir de
en un valor más extenso dentro del campo o los campos manera exacta con el valor del campo para que haya
en los que se está realizando la búsqueda. El valor de una coincidencia.
búsqueda debe aparecer al principio del campo para
que se considere una coincidencia.

Si desea obtener más información acerca de SET EXACT, consulte "Comando SET" en la página 381.
Si desea obtener más información acerca de la opción Comparaciones de caracteres exactos , consulte
Ficha Tabla (cuadro de diálogo Opciones).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 308 de 898


Comandos

Comando LOOP
Ejecuta una serie de comandos de ACLScript de forma reiterada en un registro mientras una condición
especificada se evalúa como verdadera.
Nota
El comando LOOP debe estar encerrado dentro del comando GROUP.

Sintaxis
LOOP WHILE prueba
comando
<...n>
END

Parámetros
Nombre Descripción

WHILE prueba La prueba que se debe evaluar como verdadera para que se ejecuten los comandos
incluidos dentro del comando LOOP. Si la prueba se evalúa como verdadera, los coman-
dos se ejecutan repetidamente hasta que la prueba se evalúe como falsa.

comando <...n> Uno o más comandos que se deben ejecutar.


Puede ingresar varios comandos dentro del comando LOOP. Cada comando debe
comenzar en una línea nueva.

END El final del comando LOOP.

Ejemplos
División de un campo delimitado por comas
Usted tiene una tabla que contiene datos de facturas y necesita aislar información específica para los impor-
tes de facturas por departamento. Una factura puede estar relacionada con más de un departamento y los
códigos de los departamentos se almacenan en un formato delimitado por comas en la tabla.
Para extraer los importes de las facturas por departamento, usted:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 309 de 898


Comandos

1. Utiliza un comando GROUP para procesar la tabla registro por registro.


2. Calcula la cantidad de departamentos (n) asociados con cada registro.
3. Utiliza el comando LOOP para repetir n veces en el registro a fin de extraer los datos de cada depar-
tamento asociado con el registro.

COMMENTuse GROUP para contar las comas en cada campo del código de departamento como
una manera de identificar cuántos departamentos están asociados con el registro"LOOP" en cada
registro por cada código del campo, con la extracción de cada código a su propio registro
ENDGROUP v_recuento_departamentos = OCCURS(Código_departamento;',') v_recuento = 0
LOOP WHILE v_recuento <= v_recuento_departamentos v_dept = SPLIT (Código_departamento; ',';
(v_recuento + 1)) EXTRACT FIELDS Número_factura; Importe_factura; v_dept AS "Departamento"
TO resultado1 v_recuento = v_recuento + 1 END END

Observaciones
Consejo
Si desea ver un tutorial detallado que cubre los comandos LOOP y GROUP, consulte
"Agrupación y bucles" en la página 33.

Cuándo usar LOOP


Los bucles suelen utilizarse cuando un registro contiene segmentos repetidos de datos que se desea pro-
cesar.

Cómo funciona
Cada comando LOOP debe especificar una condición WHILE para probar y se debe cerrar con un enun-
ciado END. Los comandos entre LOOP y END se ejecutan reiteradamente para el registro actual siempre
que el resultado de la prueba especificada sea verdadero.
Si el resultado de la prueba es falso inicialmente, los comandos no se ejecutarán.

Evitar bucles infinitos


Para evitar crear un bucle infinito, asegúrese de que la prueba especificada eventualmente dé un resul-
tado falso. También puede utilizar el comando SET LOOP para evitar un bucle infinito.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 310 de 898


Comandos

Comando MERGE
Combina registros de dos tablas de ACL ordenadas con estructuras idénticas en una nueva tabla de ACL
que usa el mismo criterio de ordenamiento que las tablas originales.

Sintaxis
MERGE {ON campos_clave|PKEY campos_clave_primarios SKEY campos_clave_secundarios} <IF
prueba> TO nombre_tabla <LOCAL> <OPEN> <WHILE prueba> <FIRST rango|NEXT rango>
<APPEND> <PRESORT> <ISOLOCALE código_lugar>

Parámetros
Nombre Descripción

ON campos_clave | PKEY Nota


campos_clave_primarios
Solo los campos de caracteres, o los campos calculados de caracteres,
SKEY campos_clave_
se pueden usar como campos clave en MERGE.
secundarios
o ON campos_clave: el campo o los campos clave que se deben fusionar si los campos
clave correspondientes de las tablas primaria y secundaria tienen el mismo nombre
Si los campos correspondientes tienen diferentes nombres o si son expresiones en
lugar de campos físicos reales, debe usar PKEY y SKEY.
o PKEY campos_clave_primarios: el o los campos clave, o expresiones, de la tabla pri-
maria
o SKEY campos_clave_primarios: el o los campos clave, o expresiones, de la tabla
secundaria

Requisito de ordenamiento
Los campos clave de las tablas primaria y secundaria deben estar ordenados en orden
ascendente. Si uno o ambos campos clave no están ordenados, o lo están en orden des-
cendente, el comando MERGE no se completa correctamente.
Puede utilizar PRESORT para ordenar el campo clave primario. Si el campo clave secun-
dario no está ordenado, debe ordenarlo en una operación de ordenación independiente
antes de realizar la fusión.

Indexar en lugar de ordenar


Puede indexar la tabla primaria y la secundaria en lugar de ordenarlas. Con tablas exten-
sas, la indexación en lugar del ordenamiento puede reducir el tiempo necesario para
fusionar las tablas.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 311 de 898


Comandos

Nombre Descripción

opcional

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 312 de 898


Comandos

Nombre Descripción

Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

PRESORT Ordena la tabla primaria por el campo primario antes de ejecutar el comando.
opcional Nota
No puede utilizar PRESORT dentro del comando GROUP.
Omita PRESORT:
o Si el campo clave primario ya está ordenado
o Si está fusionando dos tablas usando un campo clave común indexado

ISOLOCALE código_lugar Nota


opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.
Use los siguientes códigos:
o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Ejemplos
Fusionar tablas con nombres de campos de clave idénticos
El ejemplo siguiente fusiona dos tablas con nombres de campos clave idénticos:

OPEN Ubicación_empleados_1 PRIMARY


OPEN Ubicación_empleados_2 SECONDARY
MERGE ON Apellido TO “Todos_los_empleados.fil” PRESORT

Fusionar tablas con diferentes nombres de campos clave

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 313 de 898


Comandos

El ejemplo siguiente fusiona dos tablas con nombres de campos clave diferentes:

OPEN Ubicación_empleados_1 PRIMARY


OPEN Ubicación_empleados_2 SECONDARY
MERGE PKEY Apellido SKEY Ape TO "Todos_los_empleados" PRESORT

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Alternativas a la fusión
Puede ser problemático realizar una fusión correcta. Puede obtener el mismo resultado anexando o extra-
yendo y anexando, y luego ordenando.
Si desea obtener más información, consulte "Comando APPEND" en la página 72 y "Comando
EXTRACT" en la página 193.
Si las dos tablas de origen ya están ordenadas, fusionarlas es más eficiente y se puede ejecutar de forma
más rápida.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 314 de 898


Comandos

Comando NOTES
Crea, modifica o quita una nota asociada con un registro individual en una tabla de ACL.

Sintaxis
NOTES <IF prueba> <TEXT texto_nota> <APPEND> <CLEAR>

Parámetros
Nombre Descripción

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional
o Si no especifica una prueba IF, el texto de la nota se agrega a cada registro de la
tabla
o Si especifica una prueba IF y CLEAR, se eliminarán las notas de los registros que
cumplan con esa condición

TEXT texto_nota El texto que se debe agregar como una nota. texto_nota debe ser una cadena entre comi-
llas o una expresión de caracteres.
opcional

APPEND El texto de nota se agrega al final de cualquier nota que exista. Si se omite, se sobres-
criben todas las notas existentes.
opcional

LIMPIAR Se eliminan las notas. Incluso si se eliminan todas las notas de registro de una tabla, el
campo Notaderegistro generado automáticamente no se elimina del formato de tabla.
opcional

Ejemplos
Añadir la misma nota a varios registros
Se sobrescriben todas las notas existentes de los registros que se especifican:

NOTES IF MATCH(RECNO( ); 1; 3; 5; 7) TEXT "texto_nota"

Añadir o adjuntar la misma nota a varios registros


Se agrega el texto de la nueva nota a todas las notas existentes para los registros especificados:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 315 de 898


Comandos

NOTES IF MATCH(RECNO( ); 1; 3; 5; 7) TEXT "texto_nota" APPEND

Eliminación de notas de varios registros


Se eliminan las notas de todos los registros de la tabla:

NOTES CLEAR

Se eliminan las notas de los registros especificados:

NOTES IF MATCH(RECNO( ); 1; 3; 5; 7) CLEAR

Se eliminan las notas de los registros 1 a 100:

NOTES IF RECNO( ) <= 100 CLEAR

Observaciones
Eliminación del campo Notaderegistro
Para eliminar el campo Notaderegistro del formato de tabla y todas las notas de la tabla, utilice el
comando DELETE NOTES sin ninguna de las opciones especificadas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 316 de 898


Comandos

Comando NOTIFY
Envía un mensaje de notificación por correo electrónico.

Sintaxis
NOTIFY USER nombre_de_usuario <PASSWORD contraseña> MAILBOX nombre_de_ruta
ADDRESS destinatario <CC cc_destinatario> <BCC bcc_destinatario> <SUBJECT asunto>
MESSAGE mensaje <ATTACHMENT nombre_de_ruta>

Parámetros
Nombre Descripción

USER nombre_de_usua- La dirección de correo electrónico del remitente.


rio

PASSWORD contraseña La contraseña para el servidor de correo.


opcional

MAILBOX nombre_de_ruta El nombre del servidor SMTP que se utilizará para enviar el mensaje de correo elec-
trónico. Por ejemplo:

MAILBOX "mailserver.acl.com"

ADDRESS destinatario La dirección de correo electrónico de uno o más destinatarios. Separe las diferentes
direcciones de correo electrónico con un punto y coma.

CC cc_destinatario La dirección de correo electrónico de uno o más destinatarios con copia. Separe las dife-
rentes direcciones de correo electrónico con un punto y coma.
opcional

BCC cco_destinatario La dirección de correo electrónico de uno o más destinatarios con copia oculta. Separe
las diferentes direcciones de correo electrónico con un punto y coma.
opcional

SUBJECT asunto La línea de asunto del mensaje de correo electrónico.


opcional

MESSAGE mensaje El cuerpo del mensaje de correo electrónico. El mensaje es texto sin formato y no admite
HTML.
Si desea insertar un salto de línea en el mensaje, use dos caracteres de acento cir-
cunflejo: ^^.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 317 de 898


Comandos

Nombre Descripción

ATTACHMENT nombre_ La ruta de acceso y el nombre de archivo de uno o más archivos adjuntos. Debe ser una
de_ruta cadena entre comillas.
opcional Especifique varios archivos adjuntos ingresando una lista de archivos separados por
punto y coma para nombre_de_ruta:

ATTACHMENT "resultado1,resultado2"

Ejemplos
Envío de un correo electrónico de reporte de errores
Está ejecutando un script y desea enviar un correo de notificación si el script no se completa correc-
tamente. Por medio del uso de NOTIFY, define el mensaje de correo electrónico e incluye dos archivos
adjuntos:
l el archivo de log
l un archivo .fil que contiene los errores registrados

NOTIFY USER "soporte@compañía.com" MAILBOX "mail.compañía.com" ADDRESS "script_admi-


[email protected]" SUBJECT "Reporte de errores" MESSAGE "No se logró procesar el script. Se adjuntan
detalles." ATTACHMENT "Errores.fil;ACL_Demo.log"

Observaciones
Destinatarios y adjuntos
Puede utilizar el comando NOTIFY para enviar mensajes de notificación por correo electrónico a uno o
más destinatarios. Los mensajes pueden incluir archivos de datos adjuntos y proyectos de ACL.
El comando NOTIFY se puede utilizar para notificar al personal apropiado cuando un script falla ines-
peradamente.

Protocolos y puertos
El comando se puede utilizar con cualquier servidor de correo que admita SMTP (Protocolo simple de
transferencia de correo), que es el protocolo utilizado por Microsoft Exchange y muchos otros servidores
de correo. El comando NOTIFY también se puede utilizar con aplicaciones de correo electrónico más anti-
guas, de Microsoft y otros proveedores, que envían correo localmente.
NOTIFY utiliza el puerto 25; por lo tanto, este puerto debe estar abierto. De lo contrario, el comando no se
podrá ejecutar.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 318 de 898


Comandos

Manejo de los errores


Si ACL no puede conectarse con el servidor de correo, realiza cinco intentos adicionales de conexión, con
una pausa de 10 segundos entre cada intento. Si ninguno de los intentos de conexión tiene éxito, se can-
cela el comando NOTIFY y se escribe un mensaje en el log, pero el script se continúa procesando.
Puede utilizar el comando SET para cambiar este comportamiento predeterminado. Puede especificar una
cantidad diferente de intentos de conexión y una cantidad diferente de tiempo entre cada intento, o puede
desactivar los intentos de conexión adicionales. También puede especificar que ACL deje de procesar un
script si se cancela el comando NOTIFY. Si desea obtener más información, consulte "Comando SET" en
la página 381.
Un destinatario de correo electrónico no válido no se considera un error del comando NOTIFY y el script no
se detiene, sin importar cuál sea el ajuste escogido.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 319 de 898


Comandos

Comando OPEN
Abre una tabla de ACL y el archivo de datos asociado.

Sintaxis
OPEN {nombre_tabla| archivo_datos} <FORMAT nombre_formato>} <BUFFERLENGTH longitud>
<CRLF> <DBASE> <INDEX archivo_índice> <PRIMARY|SECONDARY> <SKIP bytes>
<RELATION campo_clave>

Parámetros
Nombre Descripción

nombre_tabla Especifica el nombre de la tabla de ACL que se debe abrir.

archivo_datos El archivo de datos que se debe asociar con la tabla especificada por FORMAT nom-
bre_formato.
Si no se especifica una extensión, ACL supone que la extensión del archivo es .fil. Para
abrir un archivo sin extensión, inserte un punto (.) al final del nombre del archivo.

FORMAT nombre_formato El formato de tabla de ACL que se debe aplicar al archivo de datos que se abre como
una tabla.
opcional

BUFFERLENGTH n La extensión en bytes del área de búfer de entrada que se asignará a la tabla. El valor
predeterminado es 33,000 bytes.
opcional
Las áreas de búfer más grandes pueden mejorar la velocidad de procesamiento a
costa de la RAM disponible para almacenar comandos de ACL.
Si se lee cualquier bloque IBM de longitud variable que excede la extensión del búfer,
ACL muestra un mensaje de error y detiene el procesamiento. El valor predeterminado
se establece en el campo Tamaño del búfer en la ficha Tabla en el cuadro de diálogo
Opciones.
Rara vez tendrá que cambiar BUFFERLENGTH n porque el valor predeterminado es
suficiente para manejar casi todas las situaciones.

CRLF Especifica que se leerá un archivo ASCII de longitud variable. ACL se ajusta auto-
máticamente a las diferentes longitudes de registros.
opcional
Por opción predeterminada, se supone que los archivos tienen longitud fija.

DBASE Especifica que el origen de datos es un archivo dBASE. ACL reconoce el tipo de
archivo dBASE y crea automáticamente una tabla a partir de la descripción del archivo.
opcional
Se puede omitir para archivos dBASE con una extensión .dbf.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 320 de 898


Comandos

Nombre Descripción

INDEX archivo_índice El archivo de índice que se debe aplicar a la tabla cuando se abre.
opcional Si no se especifica una extensión, se supone que la extensión del archivo de índice es
.inx. Puede especificar INDEX con tablas primarias o secundarias.

PRIMARY | SECONDARY Especifica que una tabla se abre como una tabla primaria o una tabla secundaria. Si se
omite, la tabla se abre como una tabla primaria.
opcional

SKIP bytes El número de bytes que se debe omitir al principio físico de la tabla.
opcional SKIP se puede utilizar para ignorar registros de encabezados de tablas o partes ini-
ciales de la tabla que no presentan el mismo formato que el resto de la tabla. Si se
omite, la tabla se lee comenzando por el primer byte.
Nota

ACL no Unicode 1 byte = 1 carácter

ACL Unicode, datos ASCII (ANSI) extendido 1 byte = 1 carácter

ACL Unicode, datos Unicode 2 bytes = 1 carácter

Para los datos Unicode, especifique solo un número par de bytes. Si


especifica un número de bytes impar, es posible que los caracteres no
se vean correctamente.

RELATION campo_clave Especifica que la tabla se abrirá como una tabla relacionada ad hoc. ACL no retiene la
relación cuando la tabla se cierra.
opcional
También debe especificar el parámetro INDEX cuando utiliza RELATION. campo_clave
es el campo clave o la expresión que se utiliza para crear la relación entre dos tablas.

Ejemplos
Apertura de una tabla mientras se especifica un formato de tabla
Usted abre la tabla Abril_2012 usando el formato de tabla Marzo_2012:

OPEN abril_2012 FORMAT marzo_2012

Apertura de un archivo dBASE


Usted abre un archivo dBASE de nombre Inventario.dbf para el cual no existe ninguna tabla:

OPEN Inventario

Apertura de una tabla y aplicación de un índice preexistente

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 321 de 898


Comandos

Para abrir una tabla primaria o secundaria y aplicar un índice que ya existe para la tabla, utilice la siguiente
sintaxis:

OPEN Cuentas_por_cobrar INDEX Número_cliente_CP

OPEN Cliente SECONDARY INDEX Número_cliente

Apertura de una tabla y configuración de una relación ad hoc con otra tabla
Necesita establecer una relación temporal entre una tabla abierta denominada Clientes (la tabla pri-
maria) y una tabla denominada Cuentas_por_cobrar (la tabla secundaria).
Usted utiliza un índice denominado Índice_cliente y un campo clave en la tabla primaria denominado Ape-
llido:

OPEN Cuentas_por_cobrar INDEX Índice_cliente RELATION Apellido

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 322 de 898


Comandos

Comando PASSWORD
Crea una definición de la contraseña, sin un valor de contraseña, que solicita a los usuarios una contraseña
mientras se ejecuta un script.

Sintaxis
PASSWORD num < aviso>

Parámetros
Nombre Descripción

num Un valor entre 1 y 10 que identifica la definición de la contraseña de forma única.

aviso Una expresión de caracteres válida que se debe mostrar en el cuadro de diálogo uti-
lizado para solicitar la contraseña. Encierre las cadenas literales entre comillas.
opcional
Si omite aviso, aparece un cuadro de diálogo predeterminado sin ningún mensaje.

Ejemplos
Solicitar información de contraseña
Usted utiliza el comando PASSWORD para solicitar al usuario las tres contraseñas requeridas en un script.
Una vez que el usuario ingresa las contraseñas requeridas, el script puede completar el procesamiento res-
tante sin interrupción:

PASSWORD 1 "Ingresar la contraseña para la base de datos Cuentas por cobrar"


PASSWORD 2 "Ingresar la contraseña para la base de datos Cuentas a pagar"
PASSWORD 3 "Ingresar la contraseña para la base de datos Clientes"

Especificar una contraseña al actualizar una tabla de ACL


Usted combina el comando PASSWORD con el comando REFRESH para actualizar un archivo de datos
protegido por contraseña:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 323 de 898


Comandos

PASSWORD 1 "Contraseña:"
REFRESH Abc PASSWORD 1

Especificar una contraseña para definir una tabla de Servidor ACL


Usted utiliza el comando PASSWORD con el comando DEFINE TABLE DB para definir una tabla de Ser-
vidor ACL a través del Conector de AX, lo cual requiere una contraseña para el perfil de base de datos y
otra para el perfil de servidor asociado:

DEFINE TABLE DB SOURCE PerfilDB_Inventario PASSWORD 9 PASSWORD 3

Observaciones
Cuándo usar PASSWORD
Utilice PASSWORD para solicitar información de contraseña antes de acceder, importar o actualizar
datos protegidos por contraseña en su script. Resulta útil en los siguientes casos:
l usted no desea escribir las contraseñas reales en sus scripts con el comando SET PASSWORD
l los usuarios individuales necesitan introducir contraseñas diferentes
Puede crear hasta diez definiciones de contraseña diferentes en un script para almacenar las contra-
señas de forma temporal y segura.

Cómo se almacena la contraseña


Cuando los usuarios ingresan contraseñas en el aviso, los caracteres ingresados se muestran como
asteriscos (*) en el cuadro de diálogo. La contraseña no aparece ni en el script ni en el log.

Almacenamiento de contraseñas en ACL GRC Analytics Exchange


No se admite el comando PASSWORD en estudios analíticos de ACL GRC Analytics Exchange o en
scripts de Servidor de ACL.
El comando SET PASSWORD se puede utilizar para especificar contraseñas en scripts del Servidor de
ACL y la etiqueta PASSWORD se puede utilizar para solicitar contraseñas cuando se programa un estu-
dio analítico de ACL GRC Analytics Exchange

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 324 de 898


Comandos

Comando PAUSE
Detiene un script y muestra información en un cuadro de diálogo para los usuarios.

Sintaxis
PAUSE mensaje <IF prueba>

Parámetros
Nombre Descripción

mensaje Un mensaje para mostrar en el cuadro de diálogo. La longitud máxima es de 199 carac-
teres.
mensaje debe estar encerrado entre comillas. Si el mensaje contiene comillas dobles,
enciérrelo entre comillas simples.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

Ejemplos
Visualización de un mensaje de error
Usted necesita que el usuario introduzca información para satisfacer requisitos específicos. Cuando usted
detecta que la información de entrada no satisface esos requisitos, usted utiliza el comando PAUSE y mues-
tra un mensaje de error en un cuadro de diálogo:

PAUSE "La clase de producto debe ser un valor de 2 dígitos. "

Observaciones
Cuándo usar PAUSE
Utilice PAUSE para mostrar mensajes de sólo lectura en la pantalla durante la ejecución de un script.
Puede mostrar mensajes de error o información como el resultado de una operación analítica.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 325 de 898


Comandos

Cómo funciona
Mientras se muestra el cuadro de diálogo del mensaje, se detiene la ejecución del script y se reanuda úni-
camente una vez que el usuario hace clic en Aceptar para cerrar el cuadro de diálogo del mensaje. Por
este motivo, no puede utilizar PAUSE en scripts o estudios analíticos que se deben ejecutar sin inter-
vención del usuario.

Limitaciones
No se puede incluir PAUSE dentro del comando GROUP y no se admite en los estudios analíticos de ACL
GRC Analytics Exchange ni en los scripts de Servidor de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 326 de 898


Comandos

Comando PRINT
Imprime un archivo de texto, un archivo de log de ACL o un elemento de proyecto de ACL que se exportó
como archivo externo: un script (.aclscript), un formato de tabla (.layout) o un área de trabajo (.wsp). Tam-
bién puede imprimir un gráfico generado por un comando.

Sintaxis
PRINT {nombre_archivo|GRAPH}

Parámetros
Nombre Descripción

nombre_archivo | GRAPH El elemento que se debe imprimir:


o nombre_archivo: la ruta absoluta o relativa y el nombre de archivo del archivo que se
debe imprimir
Por ejemplo, "C:\Datos de ACL\Archivos de datos de muestra\ACL_Demo.log" o
"Archivos de datos de muestra\ACL_Demo.log".
Si la ruta de acceso o el nombre de archivo incluyen espacios, debe encerrar nom-
bre_archivo entre comillas.
o GRAPH: el gráfico que se envío previamente como el resultado de un comando.

Ejemplos
Impresión de un archivo de log
Para imprimir el archivo de log para el proyecto ACL_Demo.acl, especifique el siguiente comando:

PRINT "C:\ACL Data\Archivos de datos de muestra\ACL_Demo.log"

Impresión de un gráfico
Para imprimir el gráfico producido a partir del comando BENFORD, especifique los siguientes comandos:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 327 de 898


Comandos

OPEN Metaphor_TransCp_2002
BENFORD ON Monto_Factura LEADING 1 TO GRAPH
PRINT GRAPH

Observaciones
Selección de una impresora
La impresora utilizada es la impresora predeterminada configurada en Microsoft Windows. Para cambiar
la impresora, debe cambiar la impresora predeterminada en Windows.

Comandos relacionados
Para imprimir el contenido de una tabla de ACL de un proyecto, utilice el comando DO REPORT.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 328 de 898


Comandos

Comando PROFILE
Genera estadísticas resumidas para uno o más campos numéricos o expresiones numéricas en una tabla
de ACL.

Sintaxis
PROFILE <FIELDS> {campo_numérico <...n>|ALL} <IF prueba> <WHILE prueba> <FIRST
rango|NEXT rango>

Parámetros
Nombre Descripción

FIELDS campo numérico Especifique los campos individuales para hacer el perfil o especifique ALL para hacer un
...n | ALL perfil de todos los campos numéricos de la tabla de ACL.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

Ejemplos
Realización del perfil de un solo campo
Usted realiza el perfil del campo Salario:

OPEN Nómina_empleados
PROFILE FIELDS Salario

El comando genera la siguiente salida:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 329 de 898


Comandos

Nombre del campo Valor total Valor absoluto Mínimo Máximo

SALARY 1.152.525 1.152.525 15.340 52.750

Observaciones
Estadísticas que se muestran en la salida
Las siguientes estadísticas se muestran para cada campo numérico o expresión numérica especificado
para el comando:
l valor total
l valor absoluto
l valor mínimo
l valor máximo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 330 de 898


Comandos

Comando QUIT
Finaliza la sesión actual y cierra ACL.

Sintaxis
QUIT

Ejemplos
Compruebe si existe un archivo y cierre ACL si no existe
Usted creó un script para que otros lo ejecuten, pero si no existe un archivo necesario, desea cerrar ACL.
El siguiente ejemplo comprueba si existe el archivo requerido Inventory.csv y cierra ACL si el archivo
no existe:

IF FILESIZE("Inventario.csv") = -1 QUIT

Cerrar automáticamente ACL después de finalizar un script


El siguiente script resume la tabla Inventario y genera los resultados de salida, a continuación, cierra ACL
automáticamente:

OPEN Inventario
SUMMARIZE ON Ubicación ClaseProd SUBTOTAL Valor TO "Valor_inventario_por_clase_ubi-
cación.FIL" PRESORT CPERCENT
QUIT

Observaciones
Se guardan los cambios
Cuando se ejecuta QUIT, todas las tablas de ACL que estén abiertas se guardarán y se cerrarán antes de
salir.
Si modificó la vista activa o un script y no guardó los cambios, ACL le pedirá que guarde los cambios antes
de salir.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 331 de 898


Comandos

Comando RANDOM
Genera un conjunto de números aleatorios.

Sintaxis
RANDOM NUMBER n <SEED valor_semilla> MINIMUM valor_mín MAXIMUM valor_máx
<COLUMNS n> <UNIQUE> <SORTED> <TO {SCREEN|nombre_archivo}> <APPEND>

Parámetros
Nombre Descripción

NUMBER n El tamaño del conjunto de números aleatorios que se generarán.


Se pueden generar hasta 32767 números.

SEED valor_semilla El valor utilizado para inicializar el generador de números aleatorios.


opcional Si se especifica un valor de semilla puede ser cualquier número. Todo valor de la semi-
lla exclusiva produce un conjunto diferente de números aleatorios. Si especifica el
mismo valor de la semilla, se genera el mismo conjunto de números aleatorios. Si nece-
sita reproducir el análisis, es posible que deba volver a generar el mismo conjunto de
números aleatorios.
o Valor de semilla: especifique explícitamente un valor de semilla y guárdelo, si desea
poder replicar un determinado conjunto de números aleatorios.
o Sin valor de semilla: introduzca un valor de semilla de '0' o deje el valor de semilla
en blanco si desea que ACL seleccione al azar un valor de semilla.

MINIMUM valor_mín El número más pequeño posible en el conjunto de números aleatorios. Se permite cual-
quier valor numérico o expresión válida.

MAXIMUM valor_máx El número más grande posible en el conjunto de números aleatorios. Se permite cual-
quier valor numérico o expresión válida.

COLUMNS n La cantidad de columnas que se utilizan para mostrar el conjunto de números alea-
torios.
opcional
Si omite COLUMNS, el valor predeterminado es de 6 columnas.

UNIQUE Incluya solo números exclusivos en el conjunto de números aleatorios.


opcional Si omite UNIQUE, se permiten valores duplicados en el conjunto de números alea-
torios.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 332 de 898


Comandos

Nombre Descripción

Nota
No especifique UNIQUE cuando el tamaño especificado del conjunto de
números aleatorios supere el 75 % del rango entre MINIMUM y
MAXIMUM. Si lo hace, puede dar lugar a que se desechen demasiadas
selecciones de números aleatorios.

SORTED Muestra el conjunto de números aleatorios en orden ascendente.


opcional Si omite SORTED, los números se muestran en el orden en que se seleccionan al azar.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
Si omite TO, el conjunto de números aleatorios se envía a la pantalla.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

Ejemplos
Genere un archivo de texto con 100 números aleatorios
Desea extraer 100 archivos de manera aleatoria de un conjunto de archivos con números que van de
10.000 a 20.000.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 333 de 898


Comandos

Puede usar el comando RANDOM para generar un archivo de texto con 100 números aleatorios entre
10.000 y 20.000. Después extrae los archivos que coinciden con los números aleatorios. Los números se
organizan en 10 columnas, son exclusivos y se ordenan de forma ascendente:

RANDOM NUMBER 100 SEED 45387 MINIMUM 10000 MAXIMUM 200000 COLUMNS 10
UNIQUE SORTED TO "Números_aleatorios.txt"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Algoritmo de números aleatorios


El comando RANDOM utiliza el algoritmo de números aleatorios predeterminado de ACL. A diferencia del
comando SAMPLE, el comando RANDOM no puede utilizar el algoritmo de números aleatorios Mer-
senne-Twister.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 334 de 898


Comandos

Comando RCOMMAND
Pasa una tabla de ACL a un script R externo como un marco de datos y crea una nueva tabla en el pro-
yecto de ACL utilizando la salida del script R externo.

Sintaxis
RCOMMAND FIELDS campo <...n> RSCRIPT ruta_al_script TO nombre_tabla <IF prueba> <WHILE
prueba> <FIRST rango |NEXT rango> <KEEPTITLE> <SEPARATOR carácter> <QUALIFIER carác-
ter> <OPEN>

Parámetros
Nombre Descripción

FIELDS nombre_campo Los campos de la tabla de origen de ACL o las expresiones que se deben incluir en el
<...n> marco de datos que se envía al script R.
Según la edición de ACL que esté usando, puede detectar errores al enviar datos que
contienen algunos caracteres especiales a R:
o no Unicode: "\"
o Unicode: "ÿ" o "Ŝ"
o Ambos: extrae caracteres como bloques, cuadrados negros y barras verticales inte-
rrumpidas
Nota
Tampoco se admiten datos de idiomas mezclados; por ejemplo, una tabla
con caracteres tanto en japonés como en chino.

RSCRIPT ruta_al_script La ruta completa o relativa al script R en el sistema de archivos. Encierre ruta_al_script
entre comillas.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 335 de 898


Comandos

Nombre Descripción

Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.
La tabla de salida se crea a partir del marco o la matriz de datos que devuelve el script
R.

IF prueba Una condición que se debe cumplir para procesar el registro actual. El marco de datos
que se pasa al script R contiene únicamente los registros que cumplen con esta con-
opcional
dición.

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.
¡Precaución!
Existe un problema conocido en la versión actual con NEXT al ejecutar
RCOMMAND. Evite usar esta opción ya que la referencia al registro
puede regresar al primer registro sin importar qué registro se seleccione.

KEEPTITLE Tratar a la primera fila de datos como nombres de campos en lugar de datos. Si se omite,
se utilizan nombres de campo genéricos.
opcional
Esta opción es necesaria si desea recuperar los datos utilizando nombres de columnas
en el script R.

SEPARATOR carácter El carácter que se debe utilizar como separador entre campos. Debe especificar el carác-
ter como una cadena entre comillas.
opcional
El carácter predeterminado es la coma.
Nota
Evite usar los caracteres que aparecen en los campos de entrada. Si el
carácter SEPARATOR aparece en los datos de entrada, es posible que
los resultados se vean afectados.

QUALIFIER carácter El carácter que se debe utilizar como calificador de texto para encerrar e identificar los
campos. Debe especificar el carácter como una cadena entre comillas.
opcional
El carácter predeterminado es la comilla doble.
Nota
Evite usar los caracteres que aparecen en los campos de entrada. Si el
carácter QUALIFIER aparece en los datos de entrada, es posible que los
resultados se vean afectados.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 336 de 898


Comandos

Nombre Descripción

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

Ejemplos
Puesta en funcionamiento de R (Hello world)
Usted crea un script "hello world" para probar la conexión entre ACL y R:

Comando de ACL

RCOMMAND FIELDS "Hello", ", world!" TO "r_resultado" RSCRIPT "C:\scripts\r_scripts\analysis.r"

Script R (analysis.r)

srcTable<-acl.readData()

# crear tabla para enviar nuevamente a ACL


output<-data.frame(
c(srcTable[1,1]),
c(srcTable[1,2])
)

# agregar columna y enviar la tabla nuevamente a ACL


colnames(output) <- c("Greeting","Subject")
acl.output<-output

Acceso a los datos de los campos con coordenadas de fila y columna


Usted envía varios campos de factura a un script R para analizarlos fuera de ACL:

Comando de ACL

RCOMMAND FIELDS Código_departamento Importe_factura Fecha_factura Número_factura


Número_proveedor TO "r_resultado" RSCRIPT "C:\scripts\r_scripts\analysis.r"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 337 de 898


Comandos

Script R (analysis.r)

# Recupera el número de factura de la segunda fila del marco de datos en el script R


srcTable<-acl.readData()
srcTable[2,4]

Acceso a los datos del campo utilizando los nombres de las columnas
Usted envía varios campos de factura a un script R para analizarlos fuera de ACL. Utiliza la opción
KEEPTITLE para que se pueda hacer referencia a las columnas por nombre en R:

Comando de ACL

RCOMMAND FIELDS Código_departamento Importe_factura Número_factura TO "r_resultado"


RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE

Script R (analysis.r)

# Recupera el número de factura de la segunda fila del marco de datos en el script R


srcTable<-acl.readData()
srcTable["2","Invoice_Number"]

Envío de registros de facturas que superan el valor de 1000,00 al script R


Usted envía varios campos de factura a un script R para analizarlos fuera de ACL. Utiliza IF para limitar los
registros que se envían a R. Solo se envían los registros con un importe de factura superior a 1000,00:

Comando de ACL

RCOMMAND FIELDS Código_departamento Importe_factura Número_factura TO "r_resultado" IF


Importe_factura > 1000,00 RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE

Script R (analysis.r)

# Recupera el número de factura de la segunda fila del marco de datos en el script R


srcTable<-acl.readData()
srcTable["2","Invoice_Number"]

Envío de registros de facturas y devolución de los importes de facturas multiplicados


Usted envía varios campos de factura a un script R para analizarlos fuera de ACL. El script R realiza una

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 338 de 898


Comandos

única acción con cada celda de la columna nombrada:

Comando de ACL

RCOMMAND FIELDS Código_departamento Importe_factura Número_factura TO "r_resultado"


RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE

Script R (analysis.r)

# Devuelve parte de la tabla de ACL con el valor duplicado


srcTable<-acl.readData()
acl.output<-srcTable["Invoice_Amount"] * 2

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Referencia a los datos de ACL en el script R


La tabla de ACL se pasa al script como un marco de datos R. Los marcos de datos son objetos de datos
tabulares que pueden contener columnas de diferentes modos o tipos de datos.
Para trabajar con el marco de datos creado por ACL en un script R, invoque la función acl.readData() y
almacene el marco de datos que obtenga en una variable:

# almacena la tabla de ACL en un marco de datos denominado myTable al que se puede hacer refe-
rencia a lo largo del script
myTable<-acl.readData()

Para recuperar datos de una celda del marco de datos, puede utilizar uno de los siguientes enfoques:
l Uso de coordenadas de fila y columna:

# Devuelve el valor de la primera fila y la segunda columna del marco de datos


myTable[1,2]

Nota
Las coordenadas se basan en el orden de los campos especificados en el comando,
no en la vista o el formato de la tabla actualmente abierta.
l Uso de nombres de fila y columna:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 339 de 898


Comandos

# Devuelve el valor de la primera fila y la columna "myColumnTitle" del marco de datos


myTable["1","myColumnTitle"]

Debe especificar la opción KEEPTITLE del comando para usar los nombres de las columnas.
Las filas se denominan "1", "2", "3" y se incrementan de conformidad. También puede utilizar una
combinación de nombres y coordenadas.

Paso de datos de regreso a ACL


Para devolver una matriz o un marco de datos a ACL y crear una tabla nueva, utilice la siguiente sintaxis:

# Pasa el marco de datos myNewTable nuevamente a ACL para crear una nueva tabla
acl.output<-myNewTable

Nota
Debe regresar una matriz o un marco de datos a ACL cuando finaliza el script R. Ase-
gúrese de que las columnas de la matriz o el marco de datos contengan únicamente valo-
res atómicos y no listas, matrices, estructuras u objetos no atómicos. Si no es posible
traducir los valores a tipos de datos de ACL, el comando arroja un error.

Asignaciones de tipos de datos


Los tipos de datos de ACL se traducen en tipos de datos R utilizando un proceso de traducción entre el
proyecto de ACL y el script R:

Tipo de dato ACL Tipo(s) de datos R

Lógico Lógico

Numérico Numérico

Carácter Carácter

Fechahora Fecha, POSIXct, POSIXlt

Rendimiento y límites del tamaño de archivo


El tiempo que lleva ejecutar su script R y procesar los datos que se devuelven aumenta para los datos de
entrada que superan 1 GB. R no admite archivos de entrada de 2 GB o de mayor tamaño.
La cantidad de registros que se envían a R también afecta el rendimiento. Si se procesan dos tablas con el
mismo tamaño de archivo pero una cantidad de registros diferentes, el procesamiento de la tabla con
menos registros se realiza más rápido.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 340 de 898


Comandos

Manejo de datos de caracteres de varios bytes


Si está enviando datos a R en un conjunto de caracteres de varios bytes, como en chino, debe establecer la
configuración regional apropiadamente en su script R. Para enviar con éxito una tabla de datos de varios
bytes a R, la primera línea del script R debe contener la siguiente función:

# Ejemplo que establece la configuración regional al chino


Sys.setlocale("LC_ALL","Chinese")

Si desea obtener más información sobre Sys.setlocale( ), consulte la documentación R.

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Utilice
este archivo de log para depurar los errores de R.
Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 341 de 898


Comandos

Comando REFRESH
Actualiza los datos de una tabla de ACL desde su origen de datos asociado.

Sintaxis
REFRESH < nombre_tabla> <PASSWORD núm>

Parámetros
Nombre Descripción

nombre_tabla El nombre de la tabla de ACL que se actualizará. Si no especifica un nombre_tabla, se


actualiza la tabla abierta.
opcional

PASSWORD núm La definición de contraseña que se debe usar.


opcional La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD.
No se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de
contraseñas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en
la página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.
Nota
La contraseña se utiliza para acceder al sistema de datos de origen ori-
ginal.
No puede utilizar REFRESH con una contraseña para orígenes de
datos basados en archivos, con la excepción de archivos PDF.

Ejemplos
Actualización de una tabla sin necesidad de una contraseña
Si no se requiere una contraseña para el origen de datos, puede ingresar el comando REFRESH y el

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 342 de 898


Comandos

nombre de la tabla ACL que desea actualizar.

REFRESH Facturas

Actualización de una tabla con una contraseña en un script interactivo


Si está creando un script interactivo, puede solicitar la contraseña al usuario:

PASSWORD 1 "Ingrese su contraseña:"


REFRESH Facturas PASSWORD 1

Si está actualizando una tabla importada originalmente de un origen de datos protegido por contraseña
mediante el comando ACCESSDATA, la solicitud de contraseña es automática y no necesita especificarse
por separado:

REFRESH Facturas

Actualización de una tabla con una contraseña en un script no interactivo


Puede configurar la contraseña en un script si no desea solicitar el valor al usuario:

SET PASSWORD 1 TO "contraseña"


REFRESH Facturas PASSWORD 1

La desventaja de este método es que la contraseña aparece como texto claro en el script.

Actualización de una tabla con una contraseña en un estudio analítico del Servidor de AX
Si está creando un estudio analítico del Servidor de AX, puede solicitar la contraseña al usuario cuando
esté programado el estudio analítico o se ejecute ad-hoc:

COMMENT
//ANALYTIC Actualizar tabla
//PASSWORD 1 "Ingrese su contraseña:"
END
REFRESH Facturas PASSWORD 1

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 343 de 898


Comandos

Cómo funciona
El comando REFRESH actualiza el contenido de una tabla volviendo a ejecutar el comando IMPORT o el
comando ACCESSDATA utilizado inicialmente para definir e importar la tabla.

REFRESH actualiza únicamente el contenido de la tabla


El comando REFRESH actualiza únicamente el contenido de los campos existentes de una tabla de ACL.
No puede actualizar un formato de tabla de ACL.
No puede utilizar REFRESH si la estructura de los datos de origen ha cambiado; por ejemplo, si se han
agregado o quitado campos. Debe volver a importar los datos.

Orígenes de datos que permiten la actualización


Puede utilizar el comando REFRESH para actualizar el contenido de una tabla de ACL creada utilizando
cualquiera de los siguientes comandos:
l IMPORT ACCESS
l IMPORT DELIMITED
l IMPORT EXCEL
l IMPORT ODBC (antes comando ODBC)
l IMPORT PDF
l IMPORT PRINT
l IMPORT SAP
l IMPORT XBRL
l IMPORT XML
l ACCESSDATA (orígenes de datos ODBC)

REFRESH y ACCESSDATA
Las siguientes pautas se aplican al actualizar una tabla importada de un origen de datos ODBC mediante
el comando ACCESSDATA.
l Tabla abierta: Si la tabla está abierta al actualizarla, necesitará temporalmente espacio en disco
igual al doble del tamaño de la tabla. Si tiene espacio en disco limitado, cierre la tabla primero antes
de actualizarla.
l Las tablas de ACL 12:que se importaron mediante el comando ACCESSDATA en la versión 12 de
ACL no se pueden actualizar, incluso si está utilizando una versión más reciente de ACL.
Si desea poder actualizar estas tablas, vuelva a importarlas utilizando ACL 12.5 o posterior.

REFRESH y contraseñas
Puede utilizar el comando REFRESH con orígenes de datos protegidos por contraseña que existen en
una base de datos o en un servicio de datos en la nube.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 344 de 898


Comandos

No puede utilizar el mandato REFRESH con orígenes de datos basados en archivos protegidos por contra-
seña, como archivos de Excel. La única excepción son los archivos PDF protegidos por contraseña.

REFRESH y la ventana Aplicación de análisis


No utilice el comando REFRESH en scripts que planea ejecutar en la ventana Aplicación de análisis.
Según el modo en el que importe la tabla, no se admite la actualización de los datos de la tabla desde la ven-
tana Aplicación de análisis, o hacerlo genera resultados impredecibles.
Si desea actualizar los datos como parte de un script que se ejecuta en la ventana Aplicación de análisis, uti-
lice un comando IMPORT, o el comando ACCESSDATA, y sobrescriba la tabla.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 345 de 898


Comandos

Comando RENAME
Renombra un archivo o un elemento de un proyecto de ACL.

Sintaxis
RENAME tipo_elemento nombre <AS|TO> nuevo_nombre <OK>

Parámetros
Nombre Descripción

tipo_elemento nombre El tipo y el nombre del elemento o archivo del proyecto cuyo nombre desea cambiar.
Especifique uno de los siguientes tipos válidos:
o FIELD: campo de datos físico, campo calculado o variable
No puede cambiar el nombre de un campo que está incluido en la vista actual o al
que se hace referencia en un campo calculado.
o FORMAT: tabla de ACL
No puede cambiar el nombre de una tabla que está actualmente activa.
o INDEX: índice
o REPORT: reporte o vista
o WORKSPACE: área de trabajo
o SCRIPT (o BATCH): script
o DATA: archivo de datos de ACL (.fil)
o FILE: archivo de datos del sistema de archivos
o LOG: archivo de log de ACL (.log)
o TEXT: archivo de texto

AS|TO nuevo_nombre El nuevo nombre para el archivo o el elemento del proyecto.


Nota
La mayoría de los nombres de elementos de los proyectos de ACL
están sujetos a limitaciones de longitud. Consulte la Guía del usuario
para obtener información detallada.

Aceptar Elimina o sobrescribe los elementos sin pedirle que confirme la acción.
opcional

Ejemplos
Renombrar un campo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 346 de 898


Comandos

Necesita cambiar el nombre del campo Número_producto por Producto. Utiliza OK para realizar la acción
sin confirmación adicional:

RENAME FIELD Número_producto AS Producto OK

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 347 de 898


Comandos

Comando REPORT
Genera un reporte y le da un formato sobre la base de la tabla de ACL abierta.

Sintaxis
REPORT <ON campo_corte <PAGE> <NODUPS> <WIDTH caracteres> <AS nombre_visible>>
<...n> FIELD otros_campos <WIDTH caracteres> <AS nombre_visible> <...n> <SUPPRESS>
<NOZEROS> <LINE n otros_campos> <PRESORT> <SUMMARIZED> <SKIP n> <EOF> <TO
{SCREEN|PRINT|nombre_archivo <HTML>}> <IF > prueba> <WHILE prueba> <FIRST
rango|NEXT rango> <HEADER texto_encabezado> <FOOTER texto_pie_de_página> <APPEND>

Parámetros
Nombre Descripción

ON campo_corte PAGE El o los campos de caracteres que se utilizan para dividir el reporte en secciones.
NODUPS WIDTH carac-
Se crea un subtotal y una nueva sección del reporte cada vez que cambia el valor de
teres AS nombre_visible
campo_corte. Dividir los reportes en secciones puede facilitar su revisión.
<...n>
o campo_corte: el campo que se utiliza como un campo de corte
opcional
Para ejecutar un reporte sobre la base de una vista (DO REPORT), el campo de
corte debe ser el campo de caracteres ubicado más a la izquierda en la vista.
o PAGE: inserta un salto de página cada vez que cambia el valor del campo de corte
o NODUPS: suprime los valores visibles duplicados del campo de corte
Por ejemplo, si el nombre del cliente figura en cada registro de factura, puede faci-
litar la lectura del reporte incluyendo únicamente la primera instancia de cada nom-
bre de cliente.
o WIDTH caracteres: la longitud de la salida del campo en caracteres
o AS nombre_visible: el nombre visible (título de columna alternativo) del campo en el
reporte
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y
coma (;) entre las palabras si desea que haya un salto de línea en el título de la
columna. Si desea que el nombre visible sea el mismo que el nombre del campo o
un nombre visible existente en la tabla de origen, no use AS.
Nota
Debe especificar ON para usar campo_corte, PAGE, NODUPS o
PRESORT.

FIELD otros_campos Los campos que se deben incluir en el reporte.


WIDTH caracteres AS nom- o WIDTH caracteres: la longitud de la salida del campo en caracteres
bre_visible <...n> o AS nombre_visible: el nombre visible (título de columna alternativo) del campo en el

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 348 de 898


Comandos

Nombre Descripción

reporte
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y
coma (;) entre las palabras si desea que haya un salto de línea en el título de la
columna. Si desea que el nombre visible sea el mismo que el nombre del campo o
un nombre visible existente en la tabla de origen, no use AS.
Las palabras clave SUBTOTAL y ACCUMULATE son sinónimos de FIELD y se des-
aconsejan. Se calcula el subtotal para todos los campos numéricos automáticamente.

SUPPRESS Excluye las líneas de detalles en blanco del reporte.


opcional

NOZEROS Reemplaza los valores de cero por valores en blanco en el campo.


opcional Por ejemplo, si un reporte incluye una gran cantidad de valores cero en un campo, es
más fácil leer el reporte si solo se muestran los valores que no son ceros.

LINE n otros_campos Especifica la cantidad de líneas de la salida en la columna y los campos que deben
aparecer en el número de línea n.
opcional
Si no se especifica ningún valor, la columna tiene, por defecto, una sola línea. El valor
de n debe estar entre 2 y 60 inclusive.
Los encabezados de las columnas del reporte son determinados únicamente por los
campos de la primera línea. otros_campos especifica los campos o expresiones ade-
cuados para el reporte.

PRESORT Ordena el o los campos de corte.


opcional PRESORT no ordena los campos que se incluyen como otros_campos.

SUMMARIZED Genera un reporte que contiene solamente subtotales y totales sin líneas de detalles.
opcional Se generan subtotales para los valores de campos de corte únicos. Si no se especifica
SUMMARIZED, ACL genera un reporte que incluye las líneas de detalles, así como los
subtotales para cada uno de los campos de corte clave especificados.

SKIP n Inserta líneas en blanco entre las líneas de detalle del reporte.
opcional n debe ser un entero que especifica la cantidad de líneas que se deben insertar. Por
ejemplo, SKIP 1 produce un reporte con espaciado doble.

EOF Ejecute el comando una vez más después de que se alcance el final del archivo.
opcional De esta manera, se asegura de que se procese el registro final de la tabla cuando se
encuentra dentro de un comando GROUP. Utilice EOF solo si todos los campos son
campos calculados que hacen referencia a registros anteriores.

TO SCREEN | PRINT| nom- El lugar al que se deben enviar los resultados del comando:
bre_archivo <HTML> o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 349 de 898


Comandos

Nombre Descripción

Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-


yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada
Por valor predeterminado, los reportes que se envían a un archivo se guardan como
archivos de texto ASCII. Especifique HTML si desea que la salida del reporte sea un
archivo HTML (.htm).
Si omite TO, el reporte se envía a la pantalla.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 350 de 898


Comandos

Ejemplos
Generación de un reporte HTML
Usted genera un reporte a partir de la tabla Ar y el reporte se envía a un archivo con formato HTML:

OPEN Cuentas_por_cobrar
REPORT ON Núm FIELDS Importe Tipo Vencimiento TO "C:\Reportes\AR.htm" HTML

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 351 de 898


Comandos

Comando RETRIEVE
Recupera los resultados de una consulta de Direct Link enviada para su procesamiento en segundo
plano.

Sintaxis
RETRIEVE nombre_tabla PASSWORD num

Parámetros
Nombre Descripción

nombre_tabla El nombre de la tabla creada originalmente en ACL por la consulta de Direct Link.


La tabla debe existir antes de usar RETRIEVE.

PASSWORD núm La definición de contraseña que se debe usar.


La definición de contraseña hace referencia a una contraseña proporcionada o con-
figurada previamente con el comando PASSWORD o el comando SET PASSWORD.
No se utiliza PASSWORD núm para solicitar o especificar una contraseña real.
núm es el número de la definición de contraseña. Por ejemplo, si se proporcionaron o
configuraron dos contraseñas previamente, PASSWORD 2 especifica que se utiliza la
contraseña #2.
Si desea obtener más información acerca de la especificación o configuración de
contraseñas, consulte "Comando PASSWORD" en la página 323 y "Comando SET" en
la página 381.
Si desea obtener más información sobre la especificación o configuración de contra-
señas, consulte Comando PASSWORD y Comando SET.
Nota
La contraseña se utiliza para acceder al sistema SAP.

Ejemplos
Recuperación de los resultados de la consulta en el modo de Segundo plano
Usted establece la contraseña y, a continuación, se recupera el resultado de la consulta en modo de
Segundo plano para una tabla de ACL con el nombre DD02T_Data:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 352 de 898


Comandos

SET PASSWORD 1 TO "contraseña"


RETRIEVE DD02T_Datos PASSWORD 1

Observaciones
Antes de comenzar
Este comando solo se admite si se ha instalado y configurado Direct Link.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 353 de 898


Comandos

Comando SAMPLE
Extrae una muestra de registros utilizando el método de muestreo por registros o de muestreo por unidad
monetaria.
Muestreo de registros Muestreo de unidad monetaria

Sintaxis
Nota
La sintaxis no incluye el filtrado (enunciados IF) o parámetros de alcance ya que aplicar
estas opciones compromete la validez de la muestra.

Método de selección de intervalo fijo


SAMPLE <ON> RECORD INTERVAL valor_intervalo <FIXED valor_inicial> {RECORD|FIELDS
nombre_de_campo <...n>} TO nombre_de_tabla <OPEN> <APPEND> <LOCAL>

Método de selección de celdas


SAMPLE <ON> RECORD CELL INTERVAL valor_intervalo <RANDOM valor_semilla>
{RECORD|FIELDS nombre_de_campo < ...n>} TO nombre_de_tabla <OPEN> <APPEND>
<MERSENNE_TWISTER> <LOCAL>

Método de selección aleatorio


SAMPLE <ON> RECORD NUMBER tamaño_muestra <RANDOM valor_semilla <ORDER>
{RECORD|FIELDS nombre_de_campo < ...n>} TO nombre_de_tabla <OPEN> <APPEND>
<MERSENNE_TWISTER> <LOCAL>

Parámetros
Nota
No incluya los separadores de mil al especificar los valores.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 354 de 898


Comandos

Nombre Descripción

ON RECORD Utilice muestreo de registros.

INTERVAL valor_intervalo INTERVAL valor_intervalo FIXED valor_inicial


FIXED valor_inicial | CELL
INTERVAL valor_intervalo Utilice el método de selección de intervalo fijo.
| NUMBER tamaño_mues-
Se selecciona un registro inicial y todas las selecciones posteriores se encuentran a una
tra
distancia o un intervalo fijo; por ejemplo, cada 20º registro después de la selección ini-
cial.
o INTERVAL valor_intervalo: especifique el valor del intervalo que se generó al cal-
cular el tamaño de la muestra.
o FIXED valor_inicial: especifique el número de registro inicial que se seleccionó
Si especifica un valor_inicial de cero ('0') u omite FIXED, ACL selecciona el registro
inicial de forma aleatoria.

CELL INTERVAL valor_intervalo


Utilice el método de selección de celdas.
El conjunto de datos se divide en varias celdas o grupos de igual tamaño y se selec-
ciona un registro de forma aleatoria de cada celda.
El valor_intervalo indica el tamaño de cada celda. Especifica el valor de intervalo que se
generó al calcular el tamaño de la muestra.

NUMBER tamaño_de_la_muestra
Utilice el método de selección aleatorio.
Todos los registros se seleccionan de forma aleatoria del conjunto de datos completo.
Especifica el tamaño de la muestra que se generó al calcular el tamaño de la muestra.

RANDOM valor_semilla Nota


opcional Métodos de selección aleatorio y de celda únicamente.
El valor semilla que se debe usar para inicializar el generador de números aleatorios en
ACL.
Si especifica un valor de cero ('0') u omite RANDOM, ACL selecciona de manera alea-
toria el valor semilla.

ORDER Nota
opcional Método de selección aleatorio únicamente.
Solo puede usar ORDER al especificar FIELDS.
Agrega el campo ORDER a los resultados de salida.
Este campo muestra el orden en el cual cada registro se selecciona aleatoriamente.

RECORD | FIELDS nom- o RECORD: el registro completo se incluye en la tabla de salida


bre_de_campo <...n> o FIELDS: se incluyen campos individuales, en lugar del registro completo, en la tabla
de salida
Especifique los campos o expresiones que se deben incluir. Si especifica varios cam-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 355 de 898


Comandos

Nombre Descripción

pos, deben estar separados por espacios.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

MERSENNE_TWISTER Nota
opcional Métodos de selección aleatorio y de celda únicamente.
El generador de números aleatorio de ACL utiliza el algoritmo Mersenne-Twister.
Si se omite MERSENNE_TWISTER, se utiliza el algoritmo predeterminado de ACL.
Nota
Solo debe utilizar el algoritmo predeterminado de ACL si necesita tener
compatibilidad con resultados de muestras o scripts de ACL creados
antes de la versión 12 de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 356 de 898


Comandos

Nombre Descripción

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

Ejemplos
Extraer una muestra de registros
Va a usar el muestreo de registros para estimar el índice de desviación de un control preestablecido en una
cuenta que contiene facturas.
Después de calcular un tamaño de muestra estadísticamente válido, está preparado para extraer la mues-
tra. Va a utilizar el método de selección aleatorio.
El siguiente ejemplo:
l Toma muestras de la tabla de ACL abierta
l Utiliza el método de selección aleatoria con un valor de semilla de 123456
l Especifica un tamaño de muestra de 95 registros
l Incluye únicamente los campos especificados en la tabla de salida
l Especifica que el generador de números aleatorio de ACL utiliza el algoritmo Mersenne-Twister.

SAMPLE ON RECORD RANDOM 123456 NUMBER 95 FIELDS NúmRef NúmCliente Importe Fecha
Tipo TO "Ar_muestra_registros" OPEN MERSENNE_TWISTER

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Sintaxis
Nota
La sintaxis no incluye el filtrado (enunciados IF) o parámetros de alcance ya que aplicar
estas opciones compromete la validez de la muestra.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 357 de 898


Comandos

Método de selección de intervalo fijo


SAMPLE <ON> campo_numérico_mus INTERVAL valor_intervalo <FIXED valor_inicial> <CUTOFF
valor_corte_estrato_superior> <SUBSAMPLE> <NOREPLACEMENT> {RECORD|FIELDS nom-
bre_de_campo <...n>} TO nombre_de_tabla <OPEN> <APPEND> <LOCAL>

Método de selección de celdas


SAMPLE <ON> campo_numérico_mus CELL INTERVAL valor_intervalo <CUTOFF valor_corte_
estrato_superior> <RANDOM valor_semilla> <SUBSAMPLE> <NOREPLACEMENT>
{RECORD|FIELDS nombre_de_campo < ...n>} TO nombre_de_tabla <OPEN> <APPEND>
<MERSENNE_TWISTER> <LOCAL>

Método de selección aleatorio


SAMPLE <ON> campo_numérico_mus NUMBER tamaño_muestra POPULATION valor_absoluto
<RANDOM valor_semilla> <SUBSAMPLE> <NOREPLACEMENT> <ORDER>
{RECORD|FIELDS nombre_de_campo < ...n>} TO nombre_de_tabla <OPEN> <APPEND>
<MERSENNE_TWISTER> <LOCAL>

Parámetros
Nota
No incluya los separadores de mil al especificar los valores.

Nombre Descripción

ON campo_numérico_ Utilice el muestreo por unidad monetaria (MUS).


mus
campo_numérico_mus es la expresión o el campo numérico que se debe utilizar como
la base para el muestreo.

INTERVAL valor_intervalo INTERVAL valor_intervalo FIXED valor_inicial


FIXED valor_inicial | CELL
INTERVAL valor_intervalo Utilice el método de selección de intervalo fijo.
| NUMBER tamaño_mues-
Se selecciona una unidad monetaria inicial y todas las selecciones posteriores se
tra POPULATION valor_
encuentran a una distancia o un intervalo fijo; por ejemplo, cada 5000º unidades mone-
absoluto
tarias después de la selección inicial.
o INTERVAL valor_intervalo: especifique el valor del intervalo que se generó al cal-
cular el tamaño de la muestra.
o FIXED valor_inicial: especifique el número de unidad monetaria inicial que se selec-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 358 de 898


Comandos

Nombre Descripción

cionó
Si especifica un valor_inicial de cero ('0') u omite FIXED, ACL selecciona la unidad
monetaria de forma aleatoria.

CELL INTERVAL valor_intervalo


Utilice el método de selección de celdas.
El conjunto de datos se divide en varias celdas o grupos de igual tamaño y se selec-
ciona una unidad monetaria de forma aleatoria de cada celda.
El valor_intervalo indica el tamaño de cada celda. Especifica el valor de intervalo que
se generó al calcular el tamaño de la muestra.

NUMBER tamaño_muestra POPULATION valor_absoluto


Utilice el método de selección aleatorio.
Todas las unidades monetarias se seleccionan de forma aleatoria del conjunto de
datos completo.
o NUMBER tamaño_muestra: especifique el tamaño de la muestra que se generó al
calcular el tamaño de la muestra.
o POPULATION valor_absoluto: especifique el valor absoluto total de campo_numé-
rico_mus, que es la población de la cual se seleccionará la muestra.

CUTOFF valor_corte_ Nota


estrato_superior
Métodos de selección de intervalo fijo y de celda únicamente.
opcional
Un valor de corte de estrato superior.
Las cantidades del campo_numérico_mus que sean mayores o iguales al valor de
corte se seleccionarán automáticamente y se incluirán en la muestra.
Si omite CUTOFF, se usará un valor de corte predeterminado igual al valor_intervalo.

RANDOM valor_semilla Nota


opcional Métodos de selección aleatorio y de celda únicamente.
El valor semilla que se debe usar para inicializar el generador de números aleatorios
en ACL.
Si especifica un valor de cero ('0') u omite RANDOM, ACL selecciona de manera alea-
toria el valor semilla.

SUBSAMPLE Nota
opcional Solo puede usar SUBSAMPLE al especificar FIELDS.
Agrega el campo SUBSAMPLE a los resultados de salida.
Si cada importe de un campo de muestra representa el total de varias transacciones
independientes y usted desea realizar procedimientos de auditoría únicamente en una
transacción de cada muestreado, puede usar los valores del campo SUBSAMPLE para
seleccionar aleatoriamente transacciones individuales.
Si desea obtener más información, consulte Realización del muestreo por unidad
monetaria.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 359 de 898


Comandos

Nombre Descripción

NOREPLACEMENT No se selecciona el mismo registro más de una vez. Como resultado, la muestra puede
contener menos registros que los que se calcularon con el comando SIZE.
opcional
Si se omite NOREPLACEMENT, o si usted especifica REPLACEMENT, los registros se
pueden seleccionar más de una vez.

ORDER Nota
opcional Método de selección aleatorio únicamente.
Solo puede usar ORDER al especificar FIELDS.
Agrega el campo ORDER a los resultados de salida.
Este campo muestra el orden en el cual cada registro se selecciona aleatoriamente.

RECORD | FIELDS nom- o RECORD: el registro completo se incluye en la tabla de salida


bre_de_campo <...n> o FIELDS: se incluyen campos individuales, en lugar del registro completo, en la tabla
de salida
Especifique los campos o expresiones que se deben incluir. Si especifica varios
campos, deben estar separados por espacios.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 360 de 898


Comandos

Nombre Descripción

Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

MERSENNE_TWISTER Nota
opcional Métodos de selección aleatorio y de celda únicamente.
El generador de números aleatorio de ACL utiliza el algoritmo Mersenne-Twister.
Si se omite MERSENNE_TWISTER, se utiliza el algoritmo predeterminado de ACL.
Nota
Solo debe utilizar el algoritmo predeterminado de ACL si necesita tener
compatibilidad con resultados de muestras o scripts de ACL creados
antes de la versión 12 de ACL.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

Ejemplos
Extraer una muestra de unidad monetaria
Va a utilizar el muestreo de unidad monetaria para estimar el importe total de información monetaria erró-
nea en una cuenta que contiene facturas.
Después de calcular un tamaño de muestra estadísticamente válido, está preparado para extraer la mues-
tra. Va a utilizar el método de selección de intervalo fijo.
El siguiente ejemplo:
l Toma muestras de la tabla de ACL abierta, sobre la base de un campo de importe de la transacción
l Utiliza el método de selección del intervalo fijo con un valor de intervalo de $6.283,33
l Especifica que el primer registro seleccionado contiene la unidad monetaria 100.000 (el número de
centavos es $1.000)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 361 de 898


Comandos

l Utiliza un corte de estrato de $5.000


l Incluye el registro completo en la tabla de salida.

SAMPLE ON Importe INTERVAL 6283,33 FIXED 1000,00 CUTOFF 5000,00 RECORD TO "Ar_
muestra_unidad_monetaria" OPEN

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 362 de 898


Comandos

Comando SAVE
Copia una tabla de ACL y la guarda con un nombre diferente o guarda un proyecto de ACL.

Sintaxis
Para crear una copia de una tabla de ACL y guardarla con un nombre diferente:

SAVE nueva_tabla FORMAT tabla_ACL

Para guardar cambios en el proyecto actual:

SAVE

Parámetros
Nombre Descripción

nueva_tabla El nombre de la nueva tabla ACL que se creará y guardará.


Nota
Los nombres de tabla tienen un límite máximo de 64 caracteres alfa-
numéricos. El nombre puede incluir un guión bajo ( _ ), pero no puede
incluir ningún otro carácter especial ni espacios. El nombre no puede
comenzar con un número.

FORMAT tabla_ACL El nombre de la tabla de ACL existente. Utilice el nombre del formato de tabla, no el nom-
bre del archivo de datos asociado.

Ejemplos
Creación de una nueva tabla sobre la base de una existente
Usted crea una nueva tabla denominada Cuentas_a_pagar_marzo, basada en la tabla existente Cuentas_
a_pagar_maestra. Cuentas_a_pagar_marzo se puede enlazar después con el archivo de datos de cuen-
tas a pagar de marzo:

SAVE Cuentas_a_pagar_marzo FORMAT Cuentas_a_pagar_maestra

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 363 de 898


Comandos

Observaciones
Cómo funciona
SAVE FORMAT genera un resultado similar a copiar y pegar una tabla de ACL en la ficha Panorama del
Navegador. Se crea una nueva tabla de ACL y se asocia al mismo archivo de datos u origen de datos que
la tabla original.
Si es necesario, puede enlazar la tabla recién creada a un origen de datos distinto.

Uso de SAVE para evitar los mensajes


En algunos puntos, ACL le pide que guarde los cambios en el proyecto actual. Para evitar las inte-
rrupciones en la ejecución de los scripts, puede utilizar el comando SAVE para guardar los cambios antes
de que ACL le pida que los guarde.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 364 de 898


Comandos

Comando SAVE LAYOUT


Guarda un formato de tabla de ACL en un archivo de formato de tabla externo (.layout) o guarda los meta-
datos del formato de tabla en una tabla de ACL.
Nota
Antes de la versión 11 de ACL Analytics, los archivos de formato de tabla externos tenían la
extensión .fmt. Aún puede guardar un archivo de formato de tabla con la extensión .fmt
especificando manualmente la extensión.

Sintaxis
SAVE LAYOUT {FILE|TABLE} TO {nombre_de_archivo|nombre_de_tabla}

Parámetros
Nombre Descripción

FILE | TABLE o FILE: guarde un formato de tabla de ACL en un archivo de formato de tabla externo
(.layout)
o TABLE: guarde los metadatos del formato de tabla en una tabla de ACL (.fil)

TO nombre_de_archivo | El nombre del archivo de salida y la ubicación de la salida:


nombre_de_tabla o nombre_de_ archivo: el nombre del archivo layout
Especifique el nombre_de_archivo como una cadena entre comillas. Por ejemplo: TO
"Ap_Trans.layout".
Por valor predeterminado, se utiliza la extensión de archivo .layout; por lo tanto, la
especificación es opcional.
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Ap_Trans.layout"
l TO "Formatos de tabla\Ap_Trans.layout"
Nota
Limite el nombre del formato de tabla a 64 caracteres alfanuméricos,
sin incluir la extensión .layout, para asegurarse de que no se corte el
nombre al volver a importar el formato de tabla a ACL.
El nombre puede incluir un guion bajo ( _ ), pero no puede incluir nin-
gún otro carácter especial ni espacios. El nombre no puede comenzar
con un número.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 365 de 898


Comandos

Nombre Descripción

o nombre_de_tabla: el nombre de la tabla de ACL y el archivo .fil


Especifique el nombre_de_tabla como una cadena entre comillas. Por ejemplo: TO
"metadatos_formato_trans_cp.fil".
Por valor predeterminado, se utiliza la extensión de archivo .fil; por lo tanto, la espe-
cificación es opcional.
Por valor predeterminado, el archivo de datos de la tabla (.fil) se guarda en la carpeta
que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\metadatos_formato_trans_cp.fil"
l TO "Metadatos del formato\metadatos_formato_trans_cp.fil"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.

Ejemplos
Guardado de un formato de tabla en un archivo de formato de tabla externo (.layout)
Los siguientes ejemplos guardan el formato de tabla que utiliza la tabla abierta en un archivo de formato
de tabla externo denominado Trans_Cp.layout:
Aquí, el archivo de formato de tabla se guarda en la carpeta de proyecto de ACL:

SAVE LAYOUT FILE TO Trans_Cp.layout

Aquí, el archivo de formato de tabla se guarda en la carpeta especificada:

SAVE LAYOUT FILE TO "C:\ACL DATA\AP Audit 2013\Trans_Cp.layout"

Guardado de una copia de los metadatos de formato de la tabla en una nueva tabla de ACL
Los siguientes ejemplos guardan una copia de los metadatos del formato de la tabla utilizado por la tabla
abierta en una nueva tabla de ACL denominada metadatos_formato_trans_cp.
Aquí, la nueva tabla de ACL se guarda en la carpeta de proyecto de ACL:

SAVE LAYOUT TABLE TO metadatos_formato_trans_cp

Aquí, la nueva tabla de ACL se guarda en la carpeta especificada:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 366 de 898


Comandos

SAVE LAYOUT TABLE TO "C:\ACL DATA\AP Audit 2013\metadatos_formato_trans_cp"

Observaciones
SAVE LAYOUT con FILE o TABLE
El comando SAVE LAYOUT se utiliza con dos fines diferentes:
l FILE: guarda el formato de tabla de la tabla de ACL abierta en un archivo de formato de tabla
externo, con la extensión .layout.
l TABLE: extrae los metadatos del formato de tabla de la tabla de ACL abierta y los guarda en una
nueva tabla de ACL.

SAVE LAYOUT FILE


Cómo funciona
SAVE LAYOUT FILE guarda el formato de tabla de la tabla de ACL abierta en un archivo de formato de
tabla externo, con la extensión .layout.
Un formato de tabla contiene metadatos que ofrecen una interpretación estructurada de los datos sin pro-
cesar del archivo de datos de origen asociado. Un formato de tabla no contiene ningún dato de origen pro-
piamente dicho.

Cuándo usar SAVE LAYOUT FILE


Al guardar un formato de tabla como un archivo .layout, el formato de tabla y sus metadatos se vuelven por-
tátiles y se pueden volver a utilizar.
El archivo .layout se puede importar a cualquier proyecto de ACL y asociar con un archivo de datos de ori-
gen coincidente. Los elementos de datos del archivo de datos de origen deben coincidir con las definiciones
de campo que se especifican en los metadatos del formato de tabla.
Por ejemplo, podría guardar el formato de tabla de un archivo de transacciones de marzo y asociarlo con un
archivo de datos de origen que contenga transacciones de abril, suponiendo que la estructura de los datos
en los archivos de datos de origen de marzo y abril sea idéntica. Si se utilizan de esta manera, los archivos
.layout pueden ahorrarle el trabajo de crear un nuevo formato de tabla de cero.
Si desea obtener más información acerca de la estructura de las tablas de ACL, consulte la Guía del usua-
rio de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 367 de 898


Comandos

SAVE LAYOUT TABLE


Cómo funciona
SAVE LAYOUT TABLE extrae los metadatos del formato de tabla de la tabla de ACL abierta y los guarda
en una nueva tabla de ACL.
La nueva tabla no es el formato de tabla en sí mismo, sino una tabla de ACL que contiene un resumen de
los metadatos de formato de tabla de la tabla original. Tener acceso a este resumen en un script de ACL
puede permitirle tomar decisiones en el script sobre la base de la información.
Para cada campo de la tabla original, se extraen los siguientes metadatos de formato de tabla a la nueva
tabla.
Nota
Los nombres de campo de la tabla nueva siempre se generan en inglés, sin importar qué
versión localizada de ACL esté utilizando.

Nombre del campo en la


tabla nueva Metadatos de formato de tabla

nombre_campo El nombre del campo

tipo_datos El tipo de datos del campo

categoría La categoría de datos del campo

posición_inicial La posición de inicio del campo

longitud_del_campo La longitud del campo

decimales La cantidad de lugares decimales del campo (únicamente para campos numéricos)

formato El formato del campo (únicamente para campos fechahora y numéricos)

título_alternativo El título de columna alternativo del campo

ancho_columna El ancho de la columna en la vista

Detalles adicionales

Los campos calculados se incluyen en los metadatos extraídos, pero no se registra la


expresión que utiliza el campo calculado ni cualquier condición. Tampoco se registran
la posición de inicio, la longitud del campo y los lugares decimales para los campos cal-
Campos calculados culados.

Los campos relacionados no se incluyen porque no forman parte del formato de la


Campos relacionados tabla.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 368 de 898


Comandos

Filtros a nivel del campo Los filtros a nivel del campo y las notas del campo no se incluyen.
Notas del campo

Título de columna alter- Los valores registrados para el título de columna alternativo y el ancho de columna son
nativo los que se especifican en el formato de tabla, no en los valores del nivel de la vista que
se pueden especificar para las columnas.
Ancho de columna

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 369 de 898


Comandos

Comando SAVE LOG


Guarda el log de comandos completo o las entradas del log para la sesión actual de ACL en un archivo
externo.

Sintaxis
SAVE LOG <SESSION> AS nombre_archivo ASCII|HTML <OK>

Parámetros
Nombre Descripción

SESSION Solo se guardan las entradas del log de la sesión de ACL actual.
opcional

AS nombre_archivo El nombre del archivo de salida.


Debe especificar nombre_archivo como una cadena entre comillas. Por ejemplo: AS
"Log de comandos". Puede especificar una extensión de archivo (.txt, .htm o .html), pero
no es necesario.
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el proyecto
de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en otra carpeta
existente:
o AS "C:\Log de comandos.TXT"
o AS "Resultados\Log de comandos.TXT"

ASCII | HTML El formato del archivo de salida:


o ASCII (o sin palabra clave): un archivo de texto ASCII sin formato.
o HTML: un archivo HTML.

Aceptar Si ya existe un archivo con el mismo nombre_archivo, ese archivo se sobrescribe sin
solicitar confirmación.
opcional

Ejemplos
Guardar el log de comandos de un análisis de cuentas por pagar
Usted realizó un análisis de datos en un archivo de cuentas por pagar de marzo y desea guardar el log de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 370 de 898


Comandos

comandos asociado como parte de sus documentos de trabajo.


En el siguiente ejemplo se guardan las entradas de la sesión actual de ACL en un archivo HTML. Si ya
existe un archivo con el mismo nombre, ese archivo se sobrescribe sin solicitar confirmación:

SAVE LOG SESSION AS C:\PorPagar_Marzo_Log.htm HTML OK

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 371 de 898


Comandos

Comando SAVE TABLELIST


Guarda una lista de todas las tablas de un proyecto de ACL a una tabla de ACL o un archivo de CSV.

Sintaxis
SAVE TABLELIST {FILE|TABLE} TO {nombre_de_tabla|nombre_de_archivo}

Parámetros
Nombre Descripción

FILE | TABLE o FILE: guarda la lista de tablas en un archivo CSV (.csv).


o TABLE: guarda la lista de tablas en una tabla de ACL.

TO nombre_de_tabla | La ubicación donde se debe guardar la lista de tablas:


nombre_de_archivo o nombre_de_tabla: el nombre de la tabla de salida de ACL y el archivo .fil asociado
al usar TABLE
La extensión de archivo .fil se usa por valor predeterminado y no es necesario espe-
cificarla. La tabla se guarda en la misma carpeta que el proyecto de ACL y no se
puede guardar en ninguna otra carpeta.
Nota Los nombres de tabla de
ACL tienen un límite máximo de 64 caracteres alfanuméricos. El nom-
bre puede incluir un guión bajo ( _ ), pero no puede incluir ningún
otro carácter especial ni espacios. El nombre no puede comenzar
con un número.
o nombre_de_archivo: el nombre del archivo .csv al usar FILE
Como valor predeterminado, se utiliza la extensión de archivo .csv; por lo tanto, no
es necesario especificarla. Puede especificar una ruta absoluta o relativa para guar-
dar el archivo CSV en una carpeta existente diferente de la carpeta en la que se
encuentra el proyecto de ACL. Si especifica una ruta relativa, será relativa al direc-
torio de trabajo de ACL.
Si los valores contienen espacios, debe especificarlos como cadenas entre comillas.

Ejemplos
Creación de una nueva tabla
Usted crea una nueva tabla en el proyecto de ACL, que recibe el nombre de Lista_de_tablas_completa:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 372 de 898


Comandos

SAVE TABLELIST TABLE TO Lista_de_tablas_completa

Creación de un archivo CSV


Usted crea un nuevo archivo CSV en la carpeta C:\ACL Data, que recibe el nombre de Lista_de_
tablas_completa.csv:

SAVE TABLELIST TABLE TO "C:\ACL Data\Lista_de_tablas_completa"

Observaciones
Columnas de la salida
La tabla de salida de ACL o el archivo CSV contiene tres columnas:
l nombre_tabla: el nombre del formato de tabla de ACL
l tipo: una indicación de si la tabla de ACL es una tabla local o de servidor
l Ruta_al_archivo_de_datos: la ruta completa al archivo de datos de origen.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 373 de 898


Comandos

Comando SAVE WORKSPACE


Crea y guarda un área de trabajo.

Sintaxis
SAVE WORKSPACE nombre_área_de_trabajo {nombre_campo <...n>}

Parámetros
Nombre Descripción

nombre_área_de_trabajo El nombre del área de trabajo que se creará y agregará al proyecto ACL actual.

nombre_campo <...n> El nombre del campo que se agregará al área de trabajo. Puede incluir múltiples nom-
bres de campos separados por espacios.

Ejemplo
Activación de un área de trabajo
Usted crea un área de trabajo denominada Margen_inventario con dos campos calculados desde la tabla
Inventario_Metaphor_2002. Después, activa el área de trabajo para que los campos estén disponibles en
la tabla Inventario:

OPEN Inventario_Metaphor_2002
SAVE WORKSPACE Margen_inventario Margen_unitario_bruto Margen_unitario_porcentual
OPEN Inventario
ACTIVATE WORKSPACE Margen_Inventario OK

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 374 de 898


Comandos

Observaciones
Los nombres de los campos que se usen para crear campos calculados deben coin-
cidir
Los nombres de los campos que se utilicen en expresiones que creen un campo calculado que se guarda
en un área de trabajo deben coincidir con los nombres de los campos de la tabla que utiliza el área de tra-
bajo.
Por ejemplo, si un área de trabajo contiene el campo calculado Valor=Precio_venta*Cantidad, la tabla
activa también debe contener campos denominados Precio_venta y Cantidad.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 375 de 898


Comandos

Comando SEEK
Busca el primer valor que coincida con la cadena de caracteres o la expresión de caracteres especificada
en un campo de carácter indexado.

Sintaxis
SEEK expresión_búsqueda

Parámetros
Nombre Descripción

expresión_búsqueda La expresión de caracteres que se debe buscar.


Puede ser una cadena entre comillas, una variable de caracteres o una expresión de
caracteres válida. expresión_búsqueda distingue entre mayúsculas y minúsculas, y
puede incluir espacios al principio, que se tratan como caracteres.

Ejemplos
Busque el primer valor del campo que coincida con una variable de caracteres
El campo Número_de_tarjeta se ha definido como un campo de caracteres y está indexado en orden
ascendente.
En el siguiente ejemplo, se encuentra el primer valor del campo que coincide de manera exacta, o
comienza, con el valor que se incluye en la variable v_núm_tarj.

INDEX ON Número_de_tarjeta TO "NúmTarj" OPEN


SET INDEX TO "NúmTarj"
SEEK núm_tarj_v

Busque el primer valor de un campo que coincida con una cadena de caracteres
El campo Número_de_tarjeta se ha definido como un campo de caracteres y está indexado en orden
ascendente.
En el siguiente ejemplo, se encuentra el primer valor del campo que coincide de manera exacta, o
comienza, con el literal de carácter "AB-123":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 376 de 898


Comandos

INDEX ON Número_de_tarjeta TO "NúmTarj" OPEN


SET INDEX TO "NúmTarj"
SEEK "AB-123"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
Utilice el comando SEEK para pasar directamente al primer registro de una tabla que contenga el valor de
expresión_búsqueda especificado en el campo de caracteres indexado.
l Si se encuentra la expresión_búsqueda:, se selecciona el primer registro coincidente en la tabla.
l Si no se encuentra la expresión de búsqueda:, aparece el mensaje "Ningún índice es igual a la
clave" y la tabla se ubica en el primer registro con un valor superior a la expresión de búsqueda.
Si el campo indexado no contiene valores que sean mayores que la expresión de la búsqueda, la
tabla se ubica en el primer registro.

Es necesario indexar
Para usar SEEK a fin de buscar un campo de caracteres, primero debe indexar el campo de manera ascen-
dente. Si hay varios campos de caracteres indexados en orden ascendente, sólo se busca en el primer
campo especificado en el índice.
SEEK no se puede utilizar para buscar campos indexados que no sean de caracteres o campos de carac-
teres que estén indexados en orden descendente.

Admite la coincidencia parcial


Admite la coincidencia parcial. La expresión de búsqueda puede estar incluida en un valor más extenso den-
tro del campo indexado. Sin embargo, la expresión de la búsqueda debe aparecer al principio del campo
para que se considere una coincidencia.
El comando SEEK no se ve afectado por la opción Comparaciones de caracteres exactos (SET EXACT
ON/OFF).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 377 de 898


Comandos

Comando SEQUENCE
Determina si uno o más campos de ua tabla de ACL están ordenados de manera secuencial e identifica
los elementos que no respetan la secuencia.

Sintaxis
SEQUENCE <ON> <FIELDS> {campo <D>} <...n> <UNFORMATTED> <ERRORLIMIT n> <IF
prueba> <WHILE prueba> <FIRST rango|NEXT range> <TO {SCREEN|nombre_archivo|PRINT}>
<APPEND> <HEADER texto_encabezado> <FOOTER texto_pie_de_página> <PRESORT>
<LOCAL> <ISOLOCALE código_lugar>

Parámetros
Nombre Descripción

ON FIELDS campo D Los campos o expresiones para verificar el orden secuencial.


<...n>
Incluya D para ordenar el campo clave en orden descendente. El criterio de orde-
namiento predeterminado es ascendente.

UNFORMATTED Suprime los encabezados de página y los saltos de página cuando los resultados se
envían a un archivo.
opcional

ERRORLIMIT n La cantidad de errores permitidos antes de que el comando se interrumpa. El valor pre-
determinado es 10.
opcional

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_de_archivo: guarda los resultados en un archivo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 378 de 898


Comandos

Nombre Descripción

Especifique el nombre_de_archivo como una cadena entre comillas con la exten-


sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

PRESORT Ordena la tabla por el campo primario antes de ejecutar el comando.


opcional Nota
No puede utilizar PRESORT dentro del comando GROUP.

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

ISOLOCALE código_lugar Nota


opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 379 de 898


Comandos

Nombre Descripción

Use los siguientes códigos:


o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Variables de salida de ACL


Nombre Contiene

WRITEn La cantidad total de errores de secuencia identificados por el comando.

Ejemplos
Prueba para detectar ID de empleados y fechas de contratación fuera de secuencia
Usted escribe todos los errores de secuencia identificados en los campos IDEmpleado y FechaCon-
tratación en un archivo de texto:

SEQUENCE ON IDEmpleado FechaContratación ERRORLIMIT 10 TO "ErroresSecuencia.txt"

Observaciones
Uso de SEQUENCE dentro de GROUP
Si utiliza SEQUENCE dentro de un comando GROUP, el comando se ejecuta para evitar interferir con el
procesamiento del grupo, pero no se reportan más errores de secuencia de datos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 380 de 898


Comandos

Comando SET
Ajusta una opción de ACL configurable.
Nota
El comando SET establece una opción ACLmientras dura la sesión ACL. Este com-
portamiento se produce si se utiliza el comando SET en la línea de comandos ACL o en un
script ACL.
Para ajustar las opciones de ACL de manera que no se modifiquen entre sesiones de ACL,
debe utilizar el cuadro de diálogo Opciones . Si desea obtener más información, consulte
Configuración de las opciones de ACL.

Sintaxis
Sintaxis Ejemplos y observaciones

SET BEEP valor


SET BEEP 2

Especifica la cantidad de sonidos cortos que se oirán cuando se complete el pro-


cesamiento del comando.
El parámetro valor debe estar entre 1 y 255.

SET CENTURY valor


SET CENTURY 40

Especifica el año de inicio del siglo para los años de dos dígitos.
El parámetro valor debe estar entre 0 y 99.
Si se establece el valor de comienzo de siglo en 40 significa que los años de dos dígitos
40 al 99 se interpretan como 1940 y 1999, y los años de dos dígitos 00 a 39 se inter-
pretan como 2000-2039.

SET CLEAN {ON | OFF}


SET CLEAN ON

Cuando se activa esta opción, ACL reemplaza los datos de caracteres no válidos por
espacios en blanco y los datos numéricos no válidos por ceros.

SET DATE <TO> {0 | 1 | 2 |


cadena} SET DATE "YYYY/MM/DD"

Especifica cómo muestra ACL las fechas y la porción de la fecha de las fechahoras en
las vistas, los reportes y los archivos exportados.
o SET DATE 0 establece la fecha a formato MM/DD/AAAA
o SET DATE 1 establece la fecha a formato MM/DD/AA

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 381 de 898


Comandos

Sintaxis Ejemplos y observaciones

o SET DATE 1 establece la fecha a formato DD/MM/AA


o SET DATE "<cadena>" establece la fecha para el formato personalizado que espe-
cifique
Al utilizar el comando SET DATE para especificar los formatos de fecha per-
sonalizados, debe usar 'D' para Día, 'M' para Mes e 'Y' para año, aun cuando haya
especificado caracteres de formato diferente en el cuadro de diálogo Opciones. Por
ejemplo:

SET DATE "DD MMM YYYY"

SET DELETE_FILE {ON |


OFF} SET DELETE_FILE ON

Configuración predeterminada: OFF
Especifique ON para eliminar automáticamente el archivo de datos asociado al eliminar
un formato de tabla.
Especifique ON para impedir la eliminación del archivo de datos asociado al eliminar un
formato de tabla.
Debe incluir el guion bajo ( _ ) en DELETE_FILE.
Si se especifica SET DELETE_FILE sin ningún parámetro, en la línea de comandos se
muestra si DELETE_FILE está activado o desactivado.
¡Precaución!
Tenga cuidado al activar esta opción. Es posible que se elimine un
archivo de datos original junto con la tabla.
Los archivos de datos se eliminan directamente. No se envían a la Pape-
lera de reciclaje de Windows.

SET DESIGNATION valor


SET DESIGNATION "Producido por ACL Services"

El parámetro valor es una cadena entre comillas que especifica la etiqueta que se mos-
trará en la parte superior de cada página impresa.

SET ECHO {ON | NONE}


SET ECHO NONE
Los comandos COM y los resultados en los scripts son excluidos del log.
SET ECHO ON

Especifique NONE para dejar de escribir los comandos y los resultados en los scripts
ACL en el log de comandos. Especifique ON para reanudar el registro en el log.
El comando SET ECHO solo se aplica al log de comandos y de resultados en los scripts.
Los comandos realizados a través de la interfaz de usuario o emitidos desde la línea de
comandos y los resultados que producen se registran siempre, independientemente de
cómo se establece ECHO.
Puede emitir el comando SET ECHO NONE/ON en un script o desde la línea de coman-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 382 de 898


Comandos

Sintaxis Ejemplos y observaciones

dos, pero independientemente de donde se ejecute el comando, solo afecta al log de


comandos y los resultados en los scripts.
Si se especifica SET ECHO sin ningún parámetro, en la línea de comandos se muestra si
el registro en el log de comandos y de resultados en los scripts está encendido o apa-
gado.

SET EXACT {ON | OFF}


SET EXACT ON

Configuración predeterminada: OFF
Controla de qué manera ACL compara los campos de caracteres, las expresiones o los
valores literales.
Nota
Los espacios en blanco se tratan como caracteres.
o SET EXACT está en OFF: ACL utiliza la cadena más corta al comparar dos cadenas
de diferente longitud. La comparación comienza con los caracteres ubicados más a la
izquierda y continúa hacia la derecha.
Por ejemplo, "AB" es igual a "AB" y también se considera igual a "ABC".
o SET EXACT está en ON: las cadenas que se comparan deben ser idénticas para que
haya una coincidencia. Al comparar dos cadenas de diferente longitud, ACL completa
la cadena más corta con espacios en blanco al final para hacer que coincida en lon-
gitud con la cadena más larga.
Por ejemplo, "AB" es igual a "AB", pero no se considera igual a "ABC".
Si desea ver más ejemplos del uso de SET EXACT, consulte "Comparaciones de carac-
teres exactos" en la ficha Tabla (cuadro de diálogo Opciones).
Puede usar la función ALLTRIM( ) para quitar los espacios en blanco al principio y al
final para asegurarse de que solo se comparen los caracteres de texto y los espacios
internos.
Por ejemplo: ALLTRIM(" AB") = ALLTRIM("AB") es verdadero cuando los valores se
encierran con ALLTRIM( ), pero si no se los encierra, es falso.
Algunos comandos y funciones de ACL se ven afectados por SET EXACT y otros, no:

Afectada No afectada

o Comando LOCATE o Comando JOIN


o Función MATCH( ) o Comando DEFINE RELATION
o Función BETWEEN( ) o Función FIND( )
o Función FINDMULTI( )

SET FILTER <TO> {prueba


| nombre_filtro} SET FILTER TO NúmProd = "070104347"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 383 de 898


Comandos

Sintaxis Ejemplos y observaciones

SET FILTER TO FiltroNúmProd

Crea un filtro global (filtro de vista) en la tabla abierta y especifica ya sea una prueba
lógica o el nombre de un filtro guardado existente.
Si especifica SET FILTER sin ningún parámetro, se eliminan los filtros de la tabla abierta.

SET FOLDER ruta de car- Especifica la carpeta del proyecto ACL en la ficha Panorama para el resultado del
peta comando. La carpeta de salida predeterminada es la carpeta que contiene la tabla
activa.
Se trata de una ruta de estilo DOS que utiliza el formato/nombre_de_carpeta/nombre_
de_subcarpeta, en el cual la barra inicial (/) indica el nivel raíz en la ficha Panorama.
Debe especificar una ruta completa de archivo.
o SET FOLDER /Tablas/Resultados establece la carpeta de salida en la subcarpeta
Resultados. Si la subcarpeta Resultados no existe, se crea.
o SET FOLDER / establece la carpeta de salida en el nivel raíz de la ficha Panorama
o SET FOLDER establece la carpeta de salida al valor predeterminado (la carpeta que
contiene la tabla activa).
La carpeta de salida sigue estando de la manera en que usted la estableció - hasta que
la restablezca, o cierre el proyecto. Al abrir el proyecto, la carpeta de salida vuelve al
valor predeterminado de la carpeta de la tabla activa.

SET FORMAT {ON | OFF}


SET FORMAT ON

Configuración predeterminada: OFF
Si utiliza el parámetro ON, ACL muestra automáticamente el formato de tabla actual y las
definiciones de campos calculados cuando se abre una nueva tabla. Los resultados apa-
recen en el log del comando.

SET FUZZYGROUPSIZE
<TO> num SET FUZZYGROUPSIZE TO 10

Especifica el número máximo de elementos que pueden aparecer en un grupo de dupli-


cados inexactos en los resultados de salida. El parámetro num no puede ser inferior a 2
ni mayor que 100. El tamaño predeterminado es 20. El tamaño especificado se mantiene
en vigor durante la sesión ACL.

SET GRAPH tipo


SET GRAPH LINE

Especifica el tipo de gráfico que se utilizará para todos gráficos generados pos-
teriormente. Los comandos ejecutados deben ser compatibles con el tipo de gráfico
especificado. Por ejemplo, el comando BENFORD no puede producir un gráfico PIE2D o
PIE3D. Si se especifica un tipo de gráfico incompatible, se utiliza el tipo de gráfico pre-
determinado (BAR3D).
El parámetro tipo debe ser uno de los siguientes:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 384 de 898


Comandos

Sintaxis Ejemplos y observaciones

o PIE2D
o PIE3D
o BAR2D
o BAR3D – Este es el tipo de gráfico predeterminado.
o STACKED2D
o STACKED3D
o LAYERED
o LINE
o BENFORD – Combina un gráfico de barras 2D y un gráfico de líneas 2D.

SET HISTORY <TO> valor


SET HISTORY TO 50

Especifica el número máximo de entradas que se conservarán en el historial de la tabla.


El parámetro valor debe estar entre 1 y 100.

SET INDEX <TO> valor


SET INDEX TO "CódigoCliente.INX"

Especifica el índice que se aplicará a la tabla activa.

SET LEARN <TO> script


SET LEARN TO RegInventario

Especifica el nombre del archivo de script que utiliza la Grabadora de scripts para regis-
trar los comandos.

SET LOG <TO> {archivo


|OFF} SET LOG TO "análisis.log"

SET LOG OFF

El primer comando activa el registro en el log especificado. Si el log especificado no


existe, se lo crea.
El segundo comando restaura el registro en el log de comandos original de ACL.
Nota
La longitud máxima del nombre del log y la ruta del proyecto de ACL es
de 259, incluida la ruta al archivo, el nombre del log y la extensión del
archivo (.log).

SET LOOP <TO> núm


SET LOOP TO 20

Especifica el número máximo de bucles que puede ejecutar el comando LOOP antes de
que se termine el comando.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 385 de 898


Comandos

Sintaxis Ejemplos y observaciones

El rango núm es de 0 a 32767, donde 0 desactiva las pruebas de bucle.

SET MARGIN lado <TO>


valor SET MARGIN TOP TO 100

Especifique LEFT, RIGHT, TOP o BOTTOM para el parámetro lado. Si desea cambiar el
margen en todos los lados, debe especificar cada margen con un comando SET
MARGIN por separado. Si se especifica un valor de 100, se crea un margen de 1 pul-
gada.

SET MATH <TO> {FIRST |


LAST | MIN | MAX} SET MATH TO MIN

Seleccione la opción adecuada entre las siguientes:


o FIRST utiliza la cantidad de posiciones decimales del primer operando.
o LAST utiliza la cantidad de posiciones decimales del último operando.
o MAX utiliza la cantidad máxima de posiciones decimales de cualquier operando (pre-
determinado).
o MIN utiliza la cantidad mínima de posiciones decimales de cualquier operando.

SET MONTHS <TO> Especifica las abreviaturas de tres caracteres para los nombres de los meses. El pará-
cadena metro cadena es la lista de abreviaturas de meses separadas por comas.

SET NOTIFYFAILSTOP
{ON | OFF} SET NOTIFYFAILSTOP ON

Configuración predeterminada: OFF
o NOTIFYFAILSTOP está en OFF: ACL permite que el script continúe aun cuando un
comando NOTIFY del script falle.
o NOTIFYFAILSTOP está en ON: ACL deja de procesar un script y escribe un men-
saje en el registro si un comando NOTIFY del script falla. El script se detiene después
del primer error, o después de la cantidad especificada de
NOTIFYRETRYATTEMPTS, si ninguno de los intentos se completa correctamente.

SET
NOTIFYRETRYATTEMPTS SET NOTIFYRETRYATTEMPTS TO 10
<TO> núm
Especifica la cantidad de veces que el comando NOTIFY intentará enviar un mensaje de
correo electrónico si el intento inicial no se completa correctamente. Escriba un número
del 0 al 255. Si escribe 0, no se realizan más intentos después del primer error. El valor
predeterminado es 5.
Una posible causa para que el comando NOTIFY no pueda enviar un correo electrónico
es que el servidor de correo electrónico no esté disponible.

SET
NOTIFYRETRYINTERVAL SET NOTIFYRETRYINTERVAL TO 30
<TO> segundos
Especifica la cantidad de tiempo, en segundos, entre NOTIFYRETRYATTEMPTS.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 386 de 898


Comandos

Sintaxis Ejemplos y observaciones

Escriba un número del 1 al 255. El tiempo predeterminado es de 10 segundos.

SET ORDER <TO> valores Especifica la secuencia de ordenamiento para los campos de caracteres. El parámetro
valores especifica todos los caracteres para la secuencia de ordenamiento selec-
cionada.

SET OVERFLOW {ON |


OFF} SET OVERFLOW OFF

Configuración predeterminada: ON
Si se especifica OFF, ACL no interrumpe el procesamiento cuando se produce un error
de desborde.

SET PASSWORD núm


<TO> cadena SET PASSWORD 1 TO "contraseña123"

Se utiliza para crear una definición de contraseña y especificar un valor de contraseña


para la ejecución de scripts sin intervención del usuario
El parámetros num identifica de forma única la definición de la contraseña y debe ser un
valor entre 1 y 10. Especifique el valor de la contraseña como una cadena entre comi-
llas.

SET PERIODS <TO> valor


<;...n> SET PERIODS TO “0;30;90;180;10000”

Especifica los períodos de antigüedad predeterminados que utiliza el comando AGE.

SET PICTURE formato


SET PICTURE "9.999.999,99"

Especifica el formato predeterminado para los valores numéricos.

SET READAHEAD TO Especifica el tamaño de bloque de datos leído. Solo debe cambiar este valor de con-
tamaño figuración si los Servicios de soporte de ACL le aconsejan que lo haga.

SET SAFETY {ON | OFF}


SET SAFETY OFF

Especifique ON para mostrar un cuadro de diálogo de confirmación al sobrescribir cual-


quiera de los siguientes:
o campos en formatos de tabla
o tablas de ACL
o archivos, incluidos los archivos de datos de ACL (.fil)
Especifique OFF para impedir que se muestre el cuadro de diálogo.
Si se especifica SET SAFETY sin ningún parámetro, en la línea de comandos se muestra
si SAFETY está encendido o apagado en ese momento.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 387 de 898


Comandos

Sintaxis Ejemplos y observaciones

SET SEPARATORS <TO>


valores SET SEPARATORS TO ",.;"

Especifica los separadores decimal, de miles y de lista predeterminados que utiliza ACL.
Los valores de SET SEPARATORS deben ser tres caracteres separadores válidos en el
siguiente orden:
o decimal (punto, coma o espacio)
o miles (punto, coma o espacio)
o lista (punto y coma, coma o espacio)
Entre los tres separadores, el separador decimal debe ser único. Debe especificar los
tres separadores cuando utilice el comando. El separador de lista se utiliza prin-
cipalmente para separar los parámetros de las funciones.

SET SESSION nombre_


sesión SET SESSION "Análisis"

El parámetro nombre_sesión especifica el nombre de la sesión que se creará en el log


de comandos de ACL.

SET SORTMEMORY num


SET SORTMEMORY 800

Especifica la cantidad máxima de memoria asignada para los procesos de ordenamiento


e indexado. El parámetro num debe ser un valor de 0 a 2000 megabytes (MB), que se
introduce en incrementos de 20 MB. Si la memoria para ordenar se establece en 0, ACL
utiliza la memoria disponible actualmente.

SET SUPPRESSTIME {ON


| OFF} SET SUPPRESSTIME ON

Configuración predeterminada: OFF
Solo para uso en la definición de una tabla ACL que utiliza una fuente de datos ODBC
(comando IMPORT ODBC) o el acceso directo de base de datos (DEFINE TABLE DB).
Si se utiliza el parámetro ON, al definir la tabla ACL suprime la porción hora de los valo-
res de fechahora. Por ejemplo, 20141231 235959 se lee, aparece en las vistas y pos-
teriormente se procesa como 20141231.
La inclusión de este comando en un script ACL anterior a la habilitación de fechahora
(pre v.10.0), que asume que la porción hora de los datos de fechahora se truncará, per-
mite que el script se ejecute en la versión con fechahora habilitada de ACL.
ACL suprime la porción hora utilizando solo la parte de fecha del formato de fechahora.
Los datos de la hora siguen presentes en el archivo .fil o la tabla de base de datos. Si es
necesario, puede volver a definir el campo o definir un nuevo campo para incluir la por-
ción hora de los datos.
Si SET SUPPRESSTIME = OFF, las tablas ACLdefinidas utilizando ODBC o el acceso de
base de datos directo incluyen los valores de la fechahora completos.
Puede emitir el comando SET SUPPRESSTIME ON/OFF en un script o desde la línea de
comandos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 388 de 898


Comandos

Sintaxis Ejemplos y observaciones

Si se especifica SET SUPPRESSTIME sin ningún parámetro, en las pantallas de la línea


de comandos se muestra si la supresión de la porción hora de los datos de fechahora
está activada o desactivada.

SET SUPPRESSXML {ON


| OFF} SET SUPPRESSXML ON

Configuración predeterminada: OFF
Especifica que la salida del comando está en texto plano en lugar de texto con formato.

SET TEST {ON | OFF}


SET TEST ON

Especifica si los resultados de las pruebas IF, WHILE, FOR y NEXT asociadas con los
comandos GROUP se deben registrar en el log.

SET TIME <TO> cadena


SET TIME "hh:mm:ss PM"

Especifica cómo muestra ACL la porción de la horas de las fechahoras y las horas inde-
pendientes en las vistas, los reportes y los archivos exportados.
Al utilizar el comando SET TIME para especificar formatos de hora, debe utilizar 'h' para
la hora, "m" para minutos y "s" para segundos, incluso si se han especificado diferentes
caracteres de formato de hora en el cuadro de diálogo Opciones. Por ejemplo:

SET TIME TO "hh:mm"

SET UTCZONE {ON | OFF}


SET UTCZONE OFF

Configuración predeterminada: ON
o UTCZONE está en ON: ACL cambia la visualización de la hora local con un des-
plazamiento del UTC al UTC equivalente a la hora local. (UTC es el horario universal
coordinado, la hora en los cero grados de longitud.)
o UTCZONE está en OFF: ACL muestra las horas locales con un desplazamiento del
UTC sin convertirlas a UTC.
Por ejemplo:
o 01 ene 2015 04:59:59 (SET UTCZONE ON)
o 31 dic 2014 23:59:59-05:00 (SET UTCZONE OFF)
La conversión de la hora local a UTC se hace para fines de visualización solamente y no
afecta a los datos de origen. Puede cambiar entre uno y otro modo de visualización dife-
rentes toda vez que lo desee.

SET VERIFY {ON | OFF |


BLANK} SET VERIFY ON

Cuando se especifica ON, ACL verifica automáticamente si el contenido de un campo de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 389 de 898


Comandos

Sintaxis Ejemplos y observaciones

datos corresponde al tipo de datos del campo en el formato de tabla cada vez que se
abre una tabla. Cuando se especifica BLANK, ACL reemplaza los datos de caracteres no
válidos por espacios en blanco y los datos numéricos no válidos por ceros, además de
realizar la verificación descrita en el caso del parámetro ON.

SET WIDTH <TO> carac-


teres SET WIDTH TO 20

Especifica el ancho de visualización predeterminado para los campos calculados numé-


ricos o las expresiones numéricas ad hoc cuando ACL no puede determinar el ancho
máximo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 390 de 898


Comandos

Comando SIZE
Calcula un tamaño de muestra estadísticamente válido, para muestreo por registros o por unidad mone-
taria.
Muestreo de registros Muestreo de unidad monetaria

Sintaxis
SIZE RECORD CONFIDENCE nivel_confianza POPULATION tamaño_población PRECISION
índice_tolerable <ERRORLIMIT tasa_esperada> <TO {SCREEN|nombre_de_archivo}>

Parámetros
Nota
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

RECORD Calcular el tamaño de una muestra de registros.


ATTRIBUTE es un parámetro obsoleto que hace lo mismo que RECORD.

CONFIDENCE nivel_de_ El nivel deseado de confianza de que la muestra resultante sea representativa de la
confianza población completa.
Por ejemplo, si especifica 95, significa que desea tener una certeza de que el 95 % de
las veces la muestra será realmente representativa. La confianza es el complemento del
"riesgo de muestreo". Un nivel de confianza de 95 % es lo mismo que un riesgo de mues-
treo de 5 %.

POPULATION tamaño_ La cantidad de registros de la tabla que está muestreando.


población

PRECISION índice_tole- El índice de desviación tolerable, que es el índice máximo de desviación que puede ocu-
rable rrir en un control establecido y que aún se considera como un control efectivo.
Por ejemplo, si especifica 5, significa que el índice de desviación debe ser superior al 5
% para que usted considere que el control no es efectivo.

ERRORLIMIT tasa_espe- El índice de desviación que se espera en la población. Es el índice de desviación que
rada espera detectar respecto de un control preestablecido.
opcional Por ejemplo, si especifica 1, significa que espera que el índice de desviación sea 1 %.
Si omite este parámetro, se utiliza un índice de desviación de población de 0 %.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 391 de 898


Comandos

Nombre Descripción

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"

Variables de salida de ACL


Nombre Contiene

SAMPINTn El intervalo de la muestra necesario calculado por el comando.

SAMPSIZEn El tamaño de la muestra necesario calculado por el comando.

Ejemplos
Calcular el tamaño y el intervalo necesarios para una muestra de registros
Decidió usar el muestreo de registros para estimar el índice de desviación de un control preestablecido en
una cuenta que contiene facturas.
Antes de extraer la muestra, debe calcular el intervalo de la muestra y el tamaño de la muestra esta-
dísticamente válido.
Desea estar seguro de que el 95 % de las veces, la muestra extraída por ACL será representativa de la
población en su conjunto.
Con su nivel de confianza especificado, el siguiente ejemplo calcula un tamaño de muestra de 95 y un
valor de intervalo de muestra de 8,12, para utilizarlo al extraer una muestra de registros:

SIZE RECORD CONFIDENCE 95 POPULATION 772 PRECISION 5 ERRORLIMIT 1 TO SCREEN

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 392 de 898


Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Sintaxis
SIZE MONETARY CONFIDENCE nivel_confianza POPULATION tamaño_población MATERIALITY
error_tolerable <ERRORLIMIT error_esperado> <TO {SCREEN|nombre_de_archivo}>

Parámetros
Nota
No incluya los separadores de mil ni los signos de porcentaje al especificar los valores.

Nombre Descripción

MONETARY Calcular el tamaño de la muestra para una muestra de unidad monetaria.

CONFIDENCE nivel_de_ El nivel deseado de confianza de que la muestra resultante sea representativa de la
confianza población completa.
Por ejemplo, si especifica 95, significa que desea tener una certeza de que el 95 % de
las veces la muestra será realmente representativa. La confianza es el complemento del
"riesgo de muestreo". Un nivel de confianza de 95 % es lo mismo que un riesgo de mues-
treo de 5 %.

POPULATION tamaño_ El valor absoluto total del campo de muestra numérico.


población

MATERIALITY error_tole- La información errónea tolerable, que es la cantidad total máxima de error en la infor-
rables mación que puede ocurrir en el campo de muestra sin considerarlo un error significativo.
Por ejemplo, si especifica 29000, significa que el importe total de error debe ser superior
a 29.000$ para que se lo considere un error de importancia.

ERRORLIMIT error_espe- La información errónea esperada. Se trata del importe total de error que usted espera
rado que contenga el campo de muestra.
opcional Por ejemplo, si especifica 5800, significa que usted espera que el importe total de error
sea 5.800$.
Si omite este parámetro, se utiliza un error esperado de 0,00$.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 393 de 898


Comandos

Nombre Descripción

archivo o SCREEN: muestra los resultados en el área de visualización de ACL


o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"

Variables de salida de ACL


Nombre Contiene

SAMPINTn El intervalo de la muestra necesario calculado por el comando.

SAMPSIZEn El tamaño de la muestra necesario calculado por el comando.

Ejemplos
Calcular el tamaño y el intervalo necesarios para una muestra de unidad monetaria
Decidió utilizar el muestreo de unidad monetaria para estimar el importe total de información monetaria
errónea en una cuenta que contiene facturas.
Antes de extraer la muestra, debe calcular el intervalo de la muestra y el tamaño de la muestra esta-
dísticamente válido.
Desea estar seguro de que el 95 % de las veces, la muestra extraída por ACL será representativa de la
población en su conjunto.
Con su nivel de confianza especificado, el siguiente ejemplo calcula un tamaño de muestra de 93 y un
valor de intervalo de muestra de 6.283,33, para utilizarlo al extraer una muestra de unidad monetaria:

SIZE MONETARY CONFIDENCE 95 POPULATION 585674,41 MATERIALITY 29000


ERRORLIMIT 5800 TO SCREEN

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 394 de 898


Comandos

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 395 de 898


Comandos

Comando SORT
Ordena los registros de una tabla de ACL en orden secuencial ascendente o descendente basándose en
un campo o campos clave especificados. Los resultados se envían a una nueva tabla ACL reordenada físi-
camente.

Sintaxis
SORT ON {campo_clave <D> <...n>|ALL} <FIELDS {nombre_campo <AS nombre_visible>
<...n>|FIELDS ALL}> TO nombre_tabla <IF prueba> <WHILE prueba> <FIRST rango|NEXT rango>
<APPEND> <OPEN> <ISOLOCALE código_lugar>

Parámetros
Nombre Descripción

ON campo_clave D El o los campos clave, o la expresión, que se utilizarán para el ordenamiento.


<...n>|ALL
Puede ordenar en base a cualquier tipo de campo, incluyendo campos calculados y
expresiones ad hoc, independientemente del tipo de datos.
o campo_clave: utilice el o los campos especificados
Si ordena por más de un campo, creó un orden anidado en la tabla de salida. El
orden de anidamiento respeta el orden en el que usted especifica los campos.
Incluya D para ordenar el campo clave en orden descendente. El criterio de orde-
namiento predeterminado es ascendente.
o ALL: use todos los campos de la tabla
Cuando ordena por todos los campos de la tabla, creó un orden anidado en la tabla
de salida. El orden de anidamiento respeta el orden en el que aparecen los campos
en el formato de tabla.
La única opción para ALL es un ordenamiento ascendente.

FIELDS nombre_campo Nota


<...n> | FIELDS ALL
Los campos clave se incluyen automáticamente en la tabla de salida y
opcional no es necesario especificarlos usando FIELDS.
Los campos que se deben incluir en la salida:
o FIELDS nombre_del_campo: usar los campos especificados
Los campos se utilizan en el orden en el que usted los indica.
Convierte los campos calculados en campos físicos del tipo de datos adecuado en
la tabla de destino: ASCII o Unicode (de acuerdo con la edición de ACL), ACL (el
tipo de datos numéricos nativo), Fechahora o Lógico. Completa los campos físicos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 396 de 898


Comandos

Nombre Descripción

con los valores calculados reales.


o FIELDS ALL: usa todos los campos de tabla
Los campos se utilizan en el orden en el que aparecen en el formato de tabla.
Convierte los campos calculados en campos físicos del tipo de datos adecuado en
la tabla de destino: ASCII o Unicode (de acuerdo con la edición de ACL), ACL (el
tipo de datos numéricos nativo), Fechahora o Lógico. Completa los campos físicos
con los valores calculados reales.
o omitir FIELDS: se incluye el registro completo en la tabla de salida ordenada: todos
los campos y todas las partes sin definir del registro
Los campos se usan en el orden en que aparecen en el formato de tabla.
Los campos calculados se conservan,
Consejo
Si necesita solo una parte de los datos contenidos en un registro, no
incluya todos los campos o todo el registro en la tabla de salida orde-
nada. Seleccione solo los campos que necesita porque en la mayoría
de los casos acelera el proceso de clasificación.

AS nombre_visible Solo se usa cuando se ordena con FIELDS.


opcional El nombre visible (título de columna alternativo) para el campo en la vista de la nueva
tabla de ACL. Si desea que el nombre visible sea el mismo que el nombre del campo o
un nombre visible existente en la tabla de origen, no use AS.
Especifique nombre_visible como una cadena entre comillas. Utilice un punto y coma
(;) entre las palabras si desea que haya un salto de línea en el título de la columna.
Nota
AS funciona solo al enviar la salida a una nueva tabla. Si está agre-
gando a una tabla existente, los títulos de columna alternativos de la
tabla existente tienen prioridad.

TO nombre_tabla El lugar al que se deben enviar los resultados del comando:


o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 397 de 898


Comandos

Nombre Descripción

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

OPEN Abra la tabla y aplique el índice a la tabla


opcional

ISOLOCALE código_lugar Nota


opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.
Use los siguientes códigos:
o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Ejemplos
Ordenar por un solo campo con resultado de registros completos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 398 de 898


Comandos

Usted desea ordenar los registros de la tabla Inventario de muestra por número de producto. Los registros
ordenados se extraen a una nueva tabla de ACL llamada Número_de_producto_de_inventario.
Los registros enteros se incluyen en la tabla de resultados:

SORT ON NúmProd TO "Número_de_producto_de_inventario"

Para cambiar del orden de clasificación ascendente predeterminado a un orden de clasificación des-
cendente, agregue D después del nombre del campo de clave:

SORT ON NúmProd D TO "Número_de_producto_de_inventario"

Ordenar por un solo campo con resultado de un subconjunto de campos


Usted desea ordenar los registros de la tabla Inventario de muestra por número de producto. Solo se
extraen el campo clave y los campos no clave especificados a una nueva tabla ACL denominada Canti-
dad_de_inventario_disponible.
El tercer campo no clave, QtyOH, recibe el nombre visible Cantidad disponible en la tabla de salida:

SORT ON NúmProd FIELDS Descripción_producto Estado_producto Cantidad_disponible AS "Canti-


dad disponible" TO "Cantidad_de_inventario_disponible"

Ordenar en un solo campo con todos los campos como resultado de salida
Usted desea ordenar los registros de la tabla Inventario de muestra por número de producto. Todos los
campos se extraen a una nueva tabla de ACL llamada Número_de_producto_de_inventario.
La diferencia entre usar FIELDS ALL y la salida de registros completos, es que FIELDS ALL convierte los
campos calculados de la tabla de origen en campos físicos en la tabla de salida y rellena los campos con los
valores calculados reales:

SORT ON NúmProd FIELDS ALL TO "Número_de_producto_de_inventario"

Ordenar por varios campos (ordenación anidada)


Usted desea ordenar los registros de la tabla Inventario de muestra por ubicación, luego por clase de pro-
ducto y luego por número de producto. Los registros ordenados se extraen a una nueva tabla de ACL lla-
mada Número_de_clase_de_ubicación_en_inventario.

SORT ON Ubicación ClaseProducto NúmProd TO "Número_de_clase_de_ubicación_en_inventario"

Ordenar utilizando campos relacionados


Usted desea ordenar los registros de la tabla Trans_Cp de muestra por los siguientes campos:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 399 de 898


Comandos

l estado del proveedor (tabla Proveedor relacionada)


l ciudad del proveedor (tabla Proveedor relacionada)
l número de proveedor (tabla Trans_Cp)
Los tres campos clave y los campos no clave especificados, incluido el campo relacionado Pro-
veedor.Nombre_proveedor, se extraen a una nueva tabla de ACL denominada Trans_Cp_Estado_Ciu-
dad:

SORT ON Proveedor.Estado_proveedor Proveedor.Ciudad_proveedor Número_proveedor FIELDS


Proveedor.Nombre_proveedor Núm_factura Fecha_de_factura Importe_factura NúmProd Cantidad
Costo_unitario TO "Trans_Cp_Estado_Ciudad"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Ordenamiento utilizando campos relacionados


Puede ordenar en campos relacionados e incluir campos relacionados como campos no claves en una
tabla de resultados ordenada. Para hacer referencia a un campo relacionado en el comando SORT espe-
cifique nombre de tabla secundaria.nombre de campo.

Comparación entre archivos de datos de longitud fija y de longitud variable


El comando SORT funciona con archivos de datos tanto de longitud fija como de longitud variable.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 400 de 898


Comandos

Comando STATISTICS
Calcula estadísticas para uno o más campos numéricos o de fechahora en una tabla de ACL.

Sintaxis
STATISTICS {<ON> campo <...n>|ALL} <STD> <MODMEDQ> <NUMBER n> <TO {SCREEN|nom-
bre_archivo|PRINT}> <IF prueba> <WHILE prueba> <FIRST rango|NEXT rango> <APPEND>

Parámetros
Nombre Descripción

ON campo <...n> | ALL Especifique uno o más campos numéricos o de fechahora para los que se generarán
estadísticas o especifique ALL para generar estadísticas para todos los campos numé-
ricos y de fechahora de la tabla de ACL.

STD Calcula la desviación estándar de los campos especificados, además de otras esta-
dísticas.
opcional

MODMEDQ Calcula los valores del modo, la mediana, el primer cuartil y el tercer cuartil de los cam-
pos especificados, además de otras estadísticas.
opcional

NUMBER n La cantidad de valores altos y bajos que se conservarán durante el procesamiento. El


valor predeterminado es 5.
opcional

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 401 de 898


Comandos

Nombre Descripción

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

Variables de salida de ACL


Nota
Si genera estadísticas para más de un campo de una tabla, las variables de salida gene-
radas por el sistema contienen valores para el primer campo enumerado únicamente.

Nombre Contiene

ABSn El valor absoluto calculado por el comando.

AVERAGEn El valor medio calculado por el comando.

COUNTn El conteo de registros calculado por el comando.


o Si el nombre de la variable es COUNT1, almacenará el conteo de registros del
último comando ejecutado.
o Si el nombre de la variable es COUNTn donde n es mayor que 1, la variable alma-
cenará el conteo de registros de un comando ejecutado dentro de un comando
GROUP.
El valor de n se asigna de acuerdo con el número de línea del comando dentro de
GROUP. Por ejemplo, si el comando está una línea debajo del comando GROUP,
se le asigna el valor COUNT2. Si el comando está cuatro líneas debajo del

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 402 de 898


Comandos

Nombre Contiene

comando GROUP, se le asigna el valor COUNT5.

HIGHn El quinto valor más alto identificado por el comando.


El valor predeterminado es el quinto valor más elevado. El valor predeterminado se
puede modificar utilizando el parámetro NUMBER. Por ejemplo, NUMBER 3 especifica
que se almacena el tercer valor más elevado.
Nota
Cuando ACL identifica el valor más elevado, los valores duplicados no
se descartan. Por ejemplo, si los valores en orden descendente son
100, 100, 99, 98, el tercer valor es 99, no 98.

LOWn El quinto valor más bajo identificado por el comando.


El valor predeterminado es el quinto valor más bajo. El valor predeterminado se puede
modificar utilizando el parámetro NUMBER. Por ejemplo, NUMBER 3 especifica que se
almacena el tercer valor más bajo.
Nota
Cuando ACL identifica el valor más bajo, los valores duplicados no se
descartan. Por ejemplo, si los valores en orden ascendente son 1, 1, 2,
3, el tercer valor más bajo es 2, no 3.

MAXn El valor máximo identificado por el comando.

MEDIANn El valor de la mediana identificado por el comando.

MINn El valor mínimo identificado por el comando.

MODEn El valor que ocurre con mayor frecuencia identificado por el comando.

Q25n El valor del primer cuartil (valor del cuartil inferior) calculado por el comando.

Q75n El valor del tercer cuartil (valor del cuartil superior) calculado por el comando.

RANGEn La diferencia entre los valores máximo y mínimo que calcula el comando.

STDDEVn El valor de desviación estándar calculado por el comando.

TOTALn El valor total calculado por el comando.


El valor de n es 1 a menos que el comando TOTAL esté dentro de un comando
GROUP, en cuyo caso el valor de n corresponde al número de línea del comando
TOTAL dentro del comando GROUP.
Si desea obtener más información, consulte "Comando GROUP" en la página 212.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 403 de 898


Comandos

Ejemplos
Generación de estadísticas condicionales
Usted genera estadísticas para el campo Cantidad en los registros en los que el ID de clase de producto
es 01:

STATISTICS ON Cantidad IF ClsProd = "01"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 404 de 898


Comandos

Comando STRATIFY
Agrupa registros en intervalos numéricos sobre la base de los valores de un campo numérico. Cuenta la
cantidad de registros en cada intervalo y también calcula el subtotal de campos numéricos especificados
para cada intervalo.

Sintaxis
STRATIFY <ON> campo_numérico MINIMUM valor MAXIMUM valor {<INTERVALS número>|FREE
valor_intervalo <...n> último_intervalo} <SUPPRESS> <SUBTOTAL {campo_numérico <...n>|ALL}>
<KEY salto_campo> <TO {SCREEN|nombre_tabla|nombre_archivo|GRAPH|PRINT}> <IF prueba>
<FIRST rango|NEXT rango> <WHILE prueba> <APPEND> <OPEN> <HEADER texto_
encabezado> <FOOTER texto_pie_de_página> <LOCAL> <STATISTICS>

Parámetros
Nombre Descripción

ON campo_numérico El campo numérico o la expresión que debe estratificarse.

MINIMUM valor Se aplica sólo a campos numéricos. El valor mínimo del primer intervalo numérico.
MINIMUM es opcional si se está utilizando FREE; de lo contrario, es obligatorio.

MAXIMUM valor Se aplica sólo a campos numéricos. El valor máximo del último intervalo numérico.
MAXIMUM es opcional si se está utilizando FREE; de lo contrario, es obligatorio.

INTERVALS número Se aplica sólo a campos numéricos.


opcional El número de intervalos de igual tamaño que ACL genera en el rango especificado por
los valores MINIMUM y MAXIMUM. Si no especifica un número de intervalos, se utiliza el
número predeterminado.
El valor predeterminado se especifica con el número Intervalos en la ficha Comando del
cuadro de diálogo Opciones.

FREE valor_intervalo Se aplica sólo a campos numéricos.


<...n> último_intervalo
Crea intervalos de tamaño personalizado especificando el punto de inicio de cada inter-
opcional valo y el punto final del último intervalo.
Si especifica los valores MINIMUM y MAXIMUM, esos valores son el punto inicial del pri-
mer intervalo y el punto final del último intervalo, y cada valor_intervalo crea un intervalo
adicional dentro del rango. Los valores del intervalo que especifique deben ser supe-
riores al valor MINIMUM e iguales o inferiores al valor MAXIMUM.
Los valores del intervalo deben estar en una secuencia numérica y no pueden tener valo-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 405 de 898


Comandos

Nombre Descripción

res duplicados:

FREE -1000; 0; 1000; 2000; 3000

Si especifica tanto FREE como INTERVALS, se ignora INTERVALS.

SUPPRESS Los valores por encima del valor MÁXIMO y por debajo del valor MÍNIMO se excluyen de
la salida del comando.
opcional

SUBTOTAL campo_numé- Uno o más campos numéricos o expresiones que se subtotalizarán para cada grupo.
rico <...n> | ALL
Múltiples campos se deben separar con espacios. Especifique ALL para calcular sub-
opcional totales de todos los campos numéricos de la tabla.
Si no selecciona un campo de subtotal, se hace un subtotal automáticamente del campo
que está estratificando.
Debe especificar explícitamente el campo a estratificar si desea calcular el subtotal de
este junto con el de uno o más campos, o si desea incluir estadísticas del campo estra-
tificar subtotalizado.

KEY salto_campo El campo o la expresión que agrupa los cálculos de subtotal de grupos. Se calcula un
subtotal cada vez que cambia el valor de salto_campo.
opcional
salto_campo debe ser un campo de caracteres o una expresión. Puede especificar un
solo campo, pero puede usar una expresión que contenga más de un campo.

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | nombre_archivo | o SCREEN: muestra los resultados en el área de visualización de ACL
GRAPH | PRINT o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en una
carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial ni
espacios. El nombre no puede comenzar con un número.
o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la extensión
de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 406 de 898


Comandos

Nombre Descripción

Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una carpeta
existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o GRAPH: muestra los resultados en un gráfico en el área de visualización de ACL
o PRINT: envía los resultados a la impresora predeterminada

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al
opcional
final de la tabla.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos, mez-
clados o sean imprecisos.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 407 de 898


Comandos

Nombre Descripción

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor de
ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

STATISTICS Nota
opcional No se puede usar, a menos que también se especifique SUBTOTAL.
Calcula los valores promedio, mínimo y máximo para todos los campos SUBTOTAL.

Ejemplos
Estratificación por importe de factura
Necesita estratificar una tabla de cuentas por cobrar por el campoImporte_factura. Se calcula auto-
máticamente el subtotal del importe de las facturas.
La salida se agrupa en intervalos de a $1000:
l de $0 a $999,99
l de $1.000 a $1.999,99
l y así sucesivamente
Se incluye el total del importe de las facturas para cada intervalo.

OPEN Cuentas_por_cobrar
STRATIFY ON Importe_factura MINIMUM 0 MAXIMUM 10000 INTERVALS 10 TO "Facturas_estra-
tificadas.FIL"

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
STRATIFY agrupa registros en intervalos numéricos de igual tamaño o de tamaño personalizado sobre la
base de valores de un campo numérico.
La salida contiene un registro único para cada intervalo, con un recuento de la cantidad de registros en la
tabla de origen que caen dentro de cada intervalo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 408 de 898


Comandos

Rellenar automáticamente los valores MINIMUM y MAXIMUM


Puede ejecutar los comandos STATISTICS o PROFILE en el campo a estratificar antes de ejecutar el
comando STRATIFY para rellenar automáticamente los valores de los parámetros MINIMUM y MAXIMUM
con los valores más bajos y más elevados del campo.

Nombres de los campos de subtotal y estadísticas autogenerados


Si utiliza STATISTICS para realizar los cálculos estadísticos en uno o más campos SUBTOTAL y envía los
resultados a una tabla de ACL, los campos autogenerados por los parámetros tienen los siguientes nom-
bres:

Descripción del campo Nombre del campo en la tabla de Título alternativo de columna (nombre visible)
autogenerado salida en la tabla de salida

Campo subtotal nombre del campo que se subtotaliza Total + título alternativo de columna sub-
en la tabla de origen totalizada en la tabla de origen

Campo promedio a_ nombre del campo que se sub- Promedio + título alternativo de columna sub-
totaliza en la tabla de origen totalizada en la tabla de origen

Campo mínimo m_ nombre del campo que se sub- Mínimo + título alternativo de columna sub-
totaliza en la tabla de origen totalizada en la tabla de origen

Campo máximo x_ nombre del campo que se sub- Máximo + título alternativo de columna sub-
totaliza en la tabla de origen totalizada en la tabla de origen

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 409 de 898


Comandos

Comando SUMMARIZE
Agrupa registros sobre la base de valores idénticos en uno o más campos de caracteres, numéricos o de
fechahora. Cuenta la cantidad de registros en cada grupo y también calcula el subtotal de campos numé-
ricos especificados para cada grupo.

Sintaxis
SUMMARIZE <ON> campo_clave <...n> <SUBTOTAL {campo_numérico <...n> |ALL}> <OTHER
{campo <...n>|ALL}> <TO {SCREEN|nombre_tabla|PRINT}> <IF prueba> <WHILE prueba>
<FIRST rango|NEXT rango> <PRESORT> <APPEND> <OPEN> <LOCAL> <HEADER texto_
encabezado> <FOOTER text_pie_de_página> <STATISTICS> <MODMEDQ> <STDEV>
<CPERCENT> <ISOLOCALE código_lugar>

Parámetros
Nombre Descripción

ON campo_clave <...n> Uno o más campos de caracteres, numéricos o de fechahora para resumir. Los dife-
rentes campos se deben separar con espacios y pueden ser distintos tipos de datos.

SUBTOTAL campo_numé- Uno o más campos numéricos o expresiones que se subtotalizarán para cada grupo.
rico <...n> | ALL
Múltiples campos se deben separar con espacios. Especifique ALL para calcular sub-
opcional totales de todos los campos numéricos de la tabla.

OTHER campo <...n> | Uno o más campos adicionales para incluir en la salida.
ALL o OTHER campo <...n>: incluya el o los campos especificados
opcional o OTHER ALL: incluya todos los campos de la tabla que no se especifican como cam-
pos clave o campos de subtotal
Utilice OTHER únicamente con campos que contienen el mismo valor para todos los
registros de cada grupo resumido. Si especifica un campo que contenga valores que
son diferentes para un grupo resumido, sólo se mostrará el valor del primer registro del
grupo, el cual no es significativo.
Por ejemplo:
o resumir una tabla por el número de cliente: "otro campo" adecuado podría ser Nom-
bre del cliente. En general, el nombre del cliente es idéntico para todos los registros
con el mismo número de cliente.
o resumir una tabla de proveedor por estado: "otro campo" inapropiado es Ciudad.
Solo se incluye la primera ciudad de cada estado en la salida. En este caso, es
mejor resumir utilizando como campos clave tanto el estado como la ciudad, en ese
orden.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 410 de 898


Comandos

Nombre Descripción

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
tabla | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
o nombre_tabla: guarda los resultados en una tabla de ACL
Especifique el nombre_tabla como una cadena entre comillas con la extensión de
archivo .FIL. Por ejemplo: TO "Salida.FIL"
Por valor predeterminado, el archivo de datos de la tabla (.FIL) se guarda en la car-
peta que contiene el proyecto de ACL.
Utilice una ruta de archivo absoluta o relativa para guardar el archivo de datos en
una carpeta existente o una diferente:
l TO "C:\Salida.FIL"
l TO "Resultados\Salida.FIL"
Nota
Los nombres de las tablas tienen un límite de 64 caracteres alfa-
numéricos, sin incluir la extensión .FIL. El nombre puede incluir un
guión bajo ( _ ), pero no puede incluir ningún otro carácter especial
ni espacios. El nombre no puede comenzar con un número.
o PRINT: envía los resultados a la impresora predeterminada

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

PRESORT Ordena la tabla por el campo primario antes de ejecutar el comando.


opcional Nota
No puede utilizar PRESORT dentro del comando GROUP.

Si utiliza PRESORT
Si usa PRESORT, la salida se ordena y contiene un solo grupo exclusivo para cada
conjunto de valores idénticos o combinación idéntica de valores, en el campo o los
campos clave.
Consejo
Si la tabla de entrada ya está ordenada, puede ahorrar tiempo de pro-
cesamiento si no especifica PRESORT.

Si no utiliza PRESORT
Si no utiliza PRESORT, los resultados de la salida utilizan el orden de la tabla de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 411 de 898


Comandos

Nombre Descripción

entrada.
Si el o los campos clave contienen valores idénticos que no están en secuencia, los
resultados de la salida contienen más de un grupo para cada conjunto de valores
idénticos o combinación idéntica de valores.
Nota
Según el contexto, contar con más de un grupo para cada conjunto de
valores idénticos o combinación de valores idénticos puede ir en contra
de la finalidad del resumen.

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

OPEN Abre la tabla creada por el comando después de la ejecución del comando. Solo es
válido si el comando crea una tabla de salida.
opcional

LOCAL Nota
opcional Aplicable únicamente al ejecutar el comando en una tabla de Servidor
de ACL con un archivo de salida que es una tabla de ACL.
Guarda el archivo de salida en la misma ubicación que el proyecto de ACL.

HEADER texto_enca- El texto que se debe insertar en la parte superior de cada página de un reporte.
bezado
texto_encabezado_de_página se debe especificar como una cadena entre comillas. El
opcional valor anula la variable de sistema HEADER de ACL.

FOOTER texto_pie_de_ El texto que se debe insertar en la parte inferior de cada página de un reporte.
página
texto_pie_de_página se debe especificar como una cadena entre comillas. El valor
opcional anula la variable de sistema FOOTER de ACL.

STATISTICS Nota
opcional No se puede usar, a menos que también se especifique SUBTOTAL.
Calcula los valores promedio, mínimo y máximo para todos los campos SUBTOTAL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 412 de 898


Comandos

Nombre Descripción

MODMEDQ Nota
opcional No se puede usar, a menos que también se especifique SUBTOTAL.
Especifica que se calculan los valores de moda, mediana, primer cuartil y tercer cuartil
para todos los campos SUBTOTAL.

STDEV Nota
opcional No se puede usar, a menos que también se especifique SUBTOTAL.
Calcula la desviación estándar y el porcentaje del total para todos los campos
SUBTOTAL.

CPERCENT Calcula el porcentaje del recuento de registros para cada grupo.


opcional

ISOLOCALE Nota
opcional Aplicable únicamente en la edición Unicode de ACL.
El idioma (configuración regional) del sistema en el formato idioma_ país. Por ejemplo,
para francés de Canadá, ingrese el código fr_ca.
Use los siguientes códigos:
o idioma: códigos de idioma estándar ISO 639
o país: códigos de país estándar ISO 3166
Si no especifica un código de país, se utiliza el país predeterminado para el idioma.
Si no utiliza ISOLOCALE, se utiliza la configuración regional predeterminada del sis-
tema.

Ejemplos
Importe total de transacciones por cliente
Usted resume una tabla de cuentas por cobrar por el campo Número_cliente y calcula el subtotal del
campo Importe_trans . La salida se agrupa por cliente e incluye el importe total de las transacciones para
cada cliente:

OPEN Cuentas_por_cobrar
SUMMARIZE ON Número_cliente SUBTOTAL Importe_trans TO "Total_cliente.FIL" PRESORT

Importe total de las transacciones por cliente por fecha de transacción


Usted resume una tabla de cuentas por cobrar por el campo Número_cliente y los campos Importe_trans .
Calcula el subtotal del campo Importe_trans .

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 413 de 898


Comandos

La salida se agrupa por cliente (y, dentro del cliente, por fecha) e incluye el importe total de las tran-
sacciones para cada cliente por cada fecha en la que el cliente hizo una transacción.

OPEN Cuentas_por_cobrar
SUMMARIZE ON Número_cliente Fecha_trans SUBTOTAL Importe_trans TO "Total_cliente_por_
fecha.FIL" PRESORT

Importes total, promedio, mínimo y máximo de las transacciones por cliente y por fecha de transacción
Usted agrega STATISTICS al ejemplo anterior.
Además del importe de las transacciones subtotalizadas para cada cliente para cada fecha en la que el
cliente realizó una transacción, también calcula los importes promedio, mínimo y máximo de las tran-
sacciones para cada cliente y para cada fecha:

OPEN Cuentas_por_cobrar
SUMMARIZE ON Número_cliente Fecha_trans SUBTOTAL Importe_trans TO "Estadísticas_
cliente_por_fecha.FIL" PRESORT STATISTICS

Importes de transacciones idénticos, misma fecha


Usted resume una tabla de transacciones de tarjeta de crédito por los campos Fecha de transacción e
Importe_de_la_transacción.
La salida se agrupa por fecha y, dentro de la fecha, por importe. Puede utilizar el recuento asociado para
identificar transacciones con importes idénticos y fechas idénticas:

OPEN Trans_CC
SUMMARIZE ON Fecha_trans Importe_trans TO "Transacciones_por_fecha_importe.FIL" OPEN
PRESORT
SET FILTER TO COUNT > 1

Observaciones
Nota
Si desea obtener más información sobre la forma en la que funciona este comando, con-
sulte Guía del usuario de ACL Analytics.

Cómo funciona
SUMMARIZE agrupa registros que tienen el mismo valor, o la misma combinación de valores, en uno o
más campos de caracteres, numéricos o de fechahora. La salida contiene un registro único para cada
grupo, con un recuento de la cantidad de registros en la tabla de origen que pertenecen al grupo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 414 de 898


Comandos

Subtotal y estadísticas: los cálculos y los nombres de campo de la tabla de salida


Puede usar uno o más parámetros opcionales para realizar cálculos estadísticos en cualquier campo
SUBTOTAL que especifique. Los cálculos estadísticos se desglosan por grupo en la salida:

Título alternativo de
columna (nombre visible) Nombre del campo en la Cálculo realizado en el
Parámetro opcional en la tabla de salida tabla de salida campo subtotal

Total + título alternativo de nombre del campo sub- Valores subtotalizados


SUBTOTAL columna subtotalizada totalizado para cada grupo

Promedio + título alter- _anombre del campo sub- El valor promedio para
nativo de columna sub- totalizado cada grupo
totalizada

Mínimo + título alternativo m_ nombre del campo sub- El valor mínimo para cada
de columna subtotalizada totalizado grupo

Máximo + título alternativo x_ nombre del campo sub- El valor máximo para cada
STATISTICS de columna subtotalizada totalizado grupo

Mediana + título alternativo c_ nombre del campo sub- El valor de la mediana


de columna subtotalizada totalizado para cada grupo
o Conjuntos de valores
impares: el valor del
centro
o Conjuntos de valores
pares: el promedio de
los dos valores del cen-
tro

Moda + título alternativo de o_ nombre del campo sub- El valor que ocurre con
columna subtotalizada totalizado mayor frecuencia en cada
grupo
o Muestra "N/D" si ningún
valor aparece más de
una vez
o En caso de empate,
muestra el valor más
bajo

Q25 + título alternativo de q_ nombre del campo sub- El valor de primer cuartil
columna subtotalizada totalizado de cada grupo (valor de
cuartil inferior)
o El resultado es un valor
interpolado sobre la
base de un algoritmo
de ACL
o Produce el mismo resul-
MODMEDQ tado que las funciones

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 415 de 898


Comandos

Título alternativo de
columna (nombre visible) Nombre del campo en la Cálculo realizado en el
Parámetro opcional en la tabla de salida tabla de salida campo subtotal

QUARTILE y
QUARTILE.INC de
Microsoft Excel

Q75 + título alternativo de p_ nombre del campo sub- El valor de tercer cuartil de
columna subtotalizada totalizado cada grupo (valor de cuar-
til superior)
o El resultado es un valor
interpolado sobre la
base de un algoritmo
de ACL
o Produce el mismo resul-
tado que las funciones
QUARTILE y
QUARTILE.INC de
Microsoft Excel

STDDEV + título alter- d_ nombre del campo sub- La desviación estándar de


nativo de columna sub- totalizado cada grupo
totalizada

% Campo + título alter- f_ nombre del campo sub- El subtotal de cada grupo
nativo de columna sub- totalizado expresado como un por-
STDEV totalizada centaje del total del campo

Porcentaje de recuento COUNT_PERCENTAGE El porcentaje de registros


de la tabla de origen que
pertenecen a cada grupo
Nota
No requiere un
campo de sub-
CPERCENT total

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 416 de 898


Comandos

Comando TOP
Va al primer registro de una tabla de ACL .

Sintaxis
TOP

Parámetros
Este comando no tiene ningún parámetro.

Observaciones
Cuándo usar TOP
Puede utilizar el comando TOP para desplazarse al primer registro de una tabla si un comando anterior,
como FIND, seleccionó otro registro de la tabla.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 417 de 898


Comandos

Comando TOTAL
Calcula el valor total de uno o más campos de una tabla de ACL.

Sintaxis
TOTAL {<FIELDS> campo_numérico <...n>|ALL} <IF prueba> <WHILE prueba> <FIRST
rango|NEXT rango>

Parámetros
Nombre Descripción

FIELDS campo numérico Los campos numéricos para los cuales se debe calcular el total. Especifique ALL para
...n | ALL calcular el total de cada campo numérico de la tabla.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

Variables de salida de ACL


Nota
Si calcula el total de más de un campo de una tabla, la variable de salida generada por el
sistema contiene el total para el primer campo enumerado únicamente.

Nombre Contiene

TOTALn El valor total calculado por el comando.


El valor de n es 1 a menos que el comando TOTAL esté dentro de un comando
GROUP, en cuyo caso el valor de n corresponde al número de línea del comando

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 418 de 898


Comandos

Nombre Contiene

TOTAL dentro del comando GROUP.


Si desea obtener más información, consulte "Comando GROUP" en la página 212.

Ejemplos
Totalización de los primeros 25 registros
Usted calcula el importe total del campo VALMERC para los primeros 25 registros de la tabla:

TOTAL FIELDS VALMERC FIRST 25

Observaciones
Cuándo usar TOTAL
Utilice TOTAL para comprobar la integridad y exactitud de los datos de origen y generar totales de control.
El comando calcula la suma aritmética de los campos o expresiones especificados.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 419 de 898


Comandos

Comando VERIFY
Comprueba si existen errores de validez en uno o más campos de una tabla de ACL verificando que los
datos sean coherentes con las definiciones de campo del formato de tabla.

Sintaxis
VERIFY {<FIELDS> campo <...n>|ALL} <IF prueba> <WHILE prueba> <FIRST
rango|NEXT rango> <ERRORLIMIT n> <TO {SCREEN|nombre_archivo|PRINT}> <APPEND>

Parámetros
Nombre Descripción

FIELDS campo <...n> | Los campos o las expresiones que deben verificarse.


ALL
Nota
Por definición, los campos calculados, las expresiones ad hoc y los cam-
pos binarios son siempre válidos.

IF prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta únicamente en los registros que cumplen la condición.
opcional

WHILE prueba Una expresión condicional que debe ser verdadera para procesar cada registro. El
comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega
opcional
al final de la tabla.

FIRST rango | NEXT rango Los registros que se deben procesar:


opcional o FIRST: comienza el procesamiento desde el primer registro
o NEXT: comienza el procesamiento desde el registro actualmente seleccionado
Utilice intervalo para especificar la cantidad de registros que se deben procesar.

ERRORLIMIT n La cantidad de errores permitidos antes de que el comando se interrumpa. El valor pre-
determinado es 10.
opcional

TO SCREEN | nombre_ El lugar al que se deben enviar los resultados del comando:
archivo | PRINT o SCREEN: muestra los resultados en el área de visualización de ACL
opcional o nombre_de_archivo: guarda los resultados en un archivo
Especifique el nombre_de_archivo como una cadena entre comillas con la exten-
sión de archivo adecuada. Por ejemplo: TO "Salida.TXT".
Por valor predeterminado, el archivo se guarda en la carpeta que contiene el pro-
yecto de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 420 de 898


Comandos

Nombre Descripción

Utilice una ruta de archivo absoluta o relativa para guardar el archivo en una car-
peta existente o una diferente:
l TO "C:\Salida.TXT"
l TO "Resultados\Salida.TXT"
o PRINT: envía los resultados a la impresora predeterminada

APPEND Anexa la salida del comando al final de un archivo existente en lugar de sobrescribir el
archivo.
opcional
Nota
Debe asegurarse de que la estructura de la salida del comando y del
archivo existente sean idénticas:
l los mismos campos
l el mismo orden de campos
l los campos coincidentes son de la misma longitud
l los campos coincidentes tienen el mismo tipo de datos
ACL anexa la salida a un archivo existente sin importar cuál sea su
estructura. Si la estructura de la salida y la del archivo existente no coin-
ciden, es posible que los datos que se obtengan estén incompletos,
mezclados o sean imprecisos.

Variables de salida de ACL


Nombre Contiene

WRITEn El número total de errores de validación de datos identificados por el comando.

Ejemplos
Verificación de datos y especificación de un límite de error
Usted verifica todas las columnas de la tabla y establece el límite de error en 10. El comando detiene el pro-
cesamiento si detecta 10 errores de validez de datos:

VERIFY ALL ERRORLIMIT 10 TO "ErroresImport.txt"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 421 de 898


Comandos

Observaciones
Cómo funciona
VERIFY compara los valores de uno o más campos con el tipo de datos que especificó para cada uno de
los campos en el formato de tabla y reporta todos los errores. El comando asegura lo siguiente:
l campos de caracteres: contienen solo caracteres válidos y no hay caracteres no imprimibles pre-
sentes.
l campos numéricos: contienen solo datos numéricos válidos. Además de los números, los campos
numéricos pueden contener un signo de más o de menos precedente y una coma decimal
l campos de fechahora: contienen fechas, fechashoras u horas válidas
Para cada error que se identifica, el número de registro y el nombre del campo se muestran en la salida,
junto con el valor no válido en formato hexadecimal.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 422 de 898


Comandos

Funciones

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 423 de 898


Comandos

Función ABS( )
Devuelve el valor absoluto de una expresión numérica. El valor absoluto de un número es el número sin el
signo.

Sintaxis
ABS(número)

Parámetros
Nombre Tipo Descripción

número numérico El valor para encontrar el valor absoluto.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 7,2:

ABS(7,2)

Devuelve 7,2:

ABS(-7,2)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 424 de 898


Comandos

Función AGE( )
Devuelve la antigüedad de una fecha (en días) comparada con una fecha de corte especificada o con la
fecha actual del sistema operativo.

Sintaxis
AGE(fecha/fechahora/cadena <;fecha_de_corte>)

Parámetros
Nombre Tipo Descripción

fecha/fechahora/cadena carácter El campo, expresión o valor literal para calcular la antigüedad


fechahora

fecha_de_corte carácter El campo, la expresión o el valor literal con el cual se comparan la


fecha /fechahora/cadena. Si se omite, se usará la fecha del sistema
opcional fechahora
operativo actual como la fecha de corte.

Nota
Tanto fecha/fechahora/cadena como fecha_de_corte pueden aceptar un valor de
fechahora, pero la porción hora del valor se ignora. No puede utilizar AGE( ) solamente con
valores de horas.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Sin fecha de corte
Devuelve la cantidad de días entre el 31 de diciembre de 2014 y la fecha actual:
l Si se devuelve un valor positivo, es igual a la cantidad de días que transcurrieron desde el 31 de
diciembre 2014.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 425 de 898


Comandos

l Si se devuelve un valor negativo, es igual a la cantidad de días que faltan para el 31 de diciembre
2014.
l Si se devuelve 0, 31 de diciembre 2014 es la fecha actual.

AGE(`20141231`)

Devuelve la cantidad de días entre cada fecha en el campo Fecha_de_vencimiento y la fecha actual:

AGE(Fecha_de_vencimiento)

Mezcla de tipos de datos


Devuelve 518, la cantidad de días entre las dos fechas especificadas:

AGE(`20130731`;`20141231`)

AGE("20130731";"20141231")

AGE(`20130731`;"20141231")

AGE(`20130731 235959`;`20141231`)

Uso de fechas de corte y campos


Devuelve la cantidad de días entre cada fecha en el campo Fecha_de_vencimiento y la fecha de corte
del 31 de diciembre de 2014:
l Las fechas anteriores a la fecha de corte devuelven un valor positivo igual a la cantidad de días pre-
vios a la fecha de corte en que tienen lugar.
l Las fechas posteriores a la fecha de corte devuelven un valor negativo igual al número de días pos-
teriores a la fecha de corte en que ocurrirán

AGE(Fecha_de_vencimiento; `20141231`)

Devuelve la cantidad de días entre el 31 de diciembre de 2014 y cada fecha en el campo Fecha_de_ven-
cimiento. Los resultados son los mismos que en el ejemplo que antecede, pero el signo de los valores
devueltos (positivo o negativo) se invierte:

AGE(`20141231`; Fecha_de_vencimiento)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 426 de 898


Comandos

Comparación de fechas en los campos


Devuelve la cantidad de días entre cada fecha en el campo Fecha_de_pago y la fecha correspondiente en
el campo Fecha_de_vencimiento:
l Las fechas de pago anteriores a las fecha de vencimiento devuelven un valor positivo, lo cual indica
el pago puntual
l Las fechas de pago posteriores a la fecha de vencimiento devuelven un valor negativo, lo cual indica
un pago fuera de plazo

AGE(Fecha_de_pago; Fecha_de_vencimiento)

Devuelve la cantidad de días entre cada fecha en el campo Fecha_de_pago y la fecha correspondiente en
el campo Fecha_de_vencimiento más un período de gracia de 15 días.
l Las fechas de pago anteriores a las fechas de vencimiento o hasta 15 días después de las fechas de
vencimiento devuelven un valor positivo.
l Las fechas de pago posteriores a los 15 días luego de las fechas de vencimiento devuelven un valor
negativo, lo cual indica un pago fuera de plazo y del período de gracia

AGE(Fecha_de_pago; Fecha_de_vencimiento+15)

Ejemplos avanzados
Extraer pagos vencidos
Extraer el nombre, el importe y la fecha de la factura para cada registro donde la antigüedad de la factura
es mayor a 180 días, sobre la base de una fecha de corte del 31 de diciembre de 2014:

EXTRACT FIELDS Nombre Importe Fecha_de_factura TO "Vencido" IF AGE(Fecha_de_factura;


`20141231`) > 180

Observaciones
Cómo funciona
La función AGE( ) función calcula la cantidad de días entre dos fechas.

Cuándo usar AGE( )


Utilice AGE( ) para comparar dos fechas a fin de determinar las cuentas vencidas, realizar análisis de anti-
güedad de los saldos o para realizar cualquier tarea que requiera conocer la cantidad de días que trans-
currieron entre dos fechas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 427 de 898


Comandos

Devolución de valores negativos


Se devuelve un valor negativo si la fecha que se especificó para fecha/fechahora/cadena es más reciente
que la fecha que se especificó para fecha_de_corte, o más reciente que la fecha del sistema operativo si
no se especificó fecha_de_corte.

Uso de un campo para la fecha de corte


A diferencia del comando AGE, que requiere un valor literal de fecha para la fecha de corte, la función
AGE( ) le permite utilizar también un campo para la fecha de corte.
Por ejemplo:

AGE(Fecha_de_pago; Fecha_de_vencimiento)

El uso de la función AGE( ) de esta manera equivale a calcular la diferencia entre dos campos de fecha
restándolos en una expresión.
Por ejemplo:

Fecha_de_pago – Fecha_de_vencimiento

Detalles del parámetro


Un campo de fechahora especificado para fecha/fechahora/cadena o fecha_de_corte puede utilizar cual-
quier formato de fecha o fechahora, siempre que la definición del campo establezca correctamente el for-
mato.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora/cadena o fecha_de_corte, solo
puede utilizar los formatos de la siguiente tabla y debe encerrar el valor entre acentos graves o comillas
simples o dobles; por ejemplo, `20141231` o "20141231".
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de
fechas u horas. Se permite el uso de dos puntos en valores de hora en caracteres.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y
hora de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre
las dos. Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`
"20141231"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 428 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

AAMMDD `141231`
"141231"

AAAAMMDD hhmmss `20141231 235959`
"20141231 235959"

AAMMDDthhmm `141231t2359`
"141231t2359"

AAAAMMDDThh `20141231T23`
"20141231T23"

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC) "20141231 235959-0500"

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC) "141231 2359+01"

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 429 de 898


Comandos

Función ALLTRIM( )
Devuelve una cadena con los espacios iniciales y finales eliminados de la cadena de entrada.

Sintaxis
ALLTRIM(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor del cual se eliminan los espacios iniciales y finales.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "Vancouver":

ALLTRIM("   Vancouver   ")

Devuelve "New York":

ALLTRIM("   Nueva York   ")

Ejemplos avanzados
Concatenar campos de caracteres
Utilice la función ALLTRIM( ) para eliminar espacios cuando concatena campos de caracteres, tales como

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 430 de 898


Comandos

los campos nombre y apellido, para que el campo resultante no contenga muchos espacios en blanco entre
los valores concatenados.

DEFINE FIELD Nombre_completo COMPUTED ALLTRIM(Nombre) + " " + ALLTRIM(Apellido)

Eliminación de espacios sin separación.


La función ALLTRIM( ) no elimina los espacios sin separación.
Si necesita eliminar espacios sin separación iniciales o finales, cree un campo calculado con la siguiente
expresión:

DEFINE FIELD Descripción_limpia COMPUTED ALLTRIM(REPLACE(Descripción; CHR(160); CHR


(32)))

La función REPLACE( ) reemplaza los espacios sin separación por espacios comunes y, a continuación,
ALLTRIM( ) elimina los espacios comunes iniciales y finales.

Observaciones
Cómo funciona
La función ALLTRIM( ) elimina los espacios iniciales y finales de una cadena. Los espacios dentro de la
cadena no se eliminan.

Funciones relacionadas
Utilice la función LTRIM( ) si desea quitar únicamente espacios iniciales de una cadena, o la función TRIM( )
si desea quitar únicamente los espacios finales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 431 de 898


Comandos

Función ASCII( )
Devuelve el código ASCII para un carácter determinado.

Sintaxis
ASCII(carácter)

Parámetros
Nombre Tipo Descripción

carácter carácter El carácter para el cual se debe identificar el código ASCII.


Puede especificar un carácter entre comillas, o una expresión, un
campo o una cadena de varios caracteres. Si especifica varios carac-
teres, sólo se evalúa el primer carácter.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 65:

ASCII("A")

Devuelve 49:

ASCII("1")

Ejemplos avanzados
Extracción de un registro que comienza con un carácter de tabulación

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 432 de 898


Comandos

Extraer registros que tengan un carácter tabulador al principio de un campo llamado "Descripción". El
código ASCII para el carácter de tabulación es "9".

EXTRACT RECORD TO "Entradas_tabulación.TXT" IF ASCII(Descripción) = 9

Observaciones
Prueba para caracteres no imprimibles
Puede usar ASCII( ) para hacer una prueba en busca de caracteres no imprimibles, tales como:
l Nulo: ASCII "0"
l Tabulación: ASCII "9"
l Salto de línea (LF): ASCII "10"
l Retorno del carro (CR): ASCII "13"

Funciones relacionadas
ASCII( ) es la función inversa a CHR( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 433 de 898


Comandos

Función AT( )
Devuelve un número que especifica el lugar de inicio de una incidencia particular de una subcadena den-
tro de un valor de caracteres.

Sintaxis
AT(empieza_en_núm; cadena; dentro_de_texto)

Parámetros
Nombre Tipo Descripción

núm_instancia numérico La instancia de cadena_de_búsqueda de la cual se debe devolver la


ubicación.
Por ejemplo, especifique 1 para devolver la ubicación inicial de la pri-
mera instancia de la cadena de búsqueda.

cadena carácter La subcadena que se debe buscar en dentro_de_texto. El valor dis-


tingue entre mayúsculas y minúsculas.
Si el valor de cadena_de_búsqueda incluye comillas dobles, nece-
sita encerrarlo entre comillas simples:

AT(1;'"prueba"'; Descripción)

dentro_de_texto carácter El valor para buscar.


Puede concatenar dos o más campos en el parámetro dentro_de_
texto si desea buscar en más de un campo de una tabla:

AT(1;'"prueba"'; Descripción+Resumen)

Salida
Numérico. Devuelve la posición inicial del byte de la ocurrencia específica del valor cadena , ó 0 si no se
encuentra ninguna incidencia.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 434 de 898


Comandos

Ejemplos
Ejemplos básicos
Instancias encontradas
Devuelve 4:

AT(1; "-"; "604-669-4225")

Devuelve 8:

AT(2; "-"; "604-669-4225")

Instancias no encontradas
Devuelve 0 porque no hay un tercer guion en el valor:

AT(3; "-"; "604-669-4225")

Devuelve 0 porque no hay una cuarta "a" minúscula en el valor:

AT(4; "a"; "Alabama")

Grupos de caracteres
Devuelve 5:

AT(2; "iss"; "Mississippi")

Buscar en un campo
Devuelve la posición de byte del primer guion de cada valor del campo Número_de_factura:

AT(1; "-"; Número_de_factura)

Ejemplos avanzados
Hallar números de factura en los que el segundo guion aparezca después de la décima posición de bytes

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 435 de 898


Comandos

Es posible analizar la consistencia de los números de factura en una tabla utilizando la función AT( ) para
crear un filtro como el que se incluye a continuación. Este filtro aísla todos los registros en los cuales el
número de factura contiene dos o más guiones y el segundo guion ocurre después de la décima posición
de byte.

SET FILTER TO AT(2; "-"; Número_de_factura) > 10

Observaciones
Cuándo utilizar AT( )
Utilice esta función para recuperar las siguientes posiciones iniciales dentro de un valor de carácter:
l la posición inicial de una subcadena
l la posición inicial de una instancia subsiguiente de la subcadena
Si solo desea confirmar varias incidencias de la misma subcadena en un campo, la función OCCURS( ) es
una mejor alternativa. Si desea obtener más información, consulte "Función OCCURS( )" en la
página 638.

Devolver valor cuando núm_instancia supera la cantidad de instancias


Si núm_instancia es mayor que la cantidad real de instancias de la subcadena en dentro_de_texto, la fun-
ción devuelve 0 porque no puede encontrar esa instancia de la subcadena.

Campos concatenados y valores devueltos


Al realizar una búsqueda en más de un campo, el valor devuelto para la instancia es la ubicación inicial de
cadena_de_búsqueda en todos los campos que especifique. Los campos concatenados se tratan como
un único campo que incluye los espacios al principio y al final de los campos individuales, a menos que uti-
lice la función ALLTRIM( ) para quitar los espacios.
Por ejemplo, si busca la primera instancia de una cadena en dos campos con un ancho de ocho carac-
teres cada uno y la cadena se encuentra al principio del segundo campo, el valor devuelto es 9.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 436 de 898


Comandos

Función BETWEEN( )
Devuelve un valor lógico que indica si el valor especificado está dentro de un rango.

Sintaxis
BETWEEN(valor; mín; máx)

Parámetros
Nombre Tipo Descripción

valor carácter El campo, expresión o valor literal a probar.


numérico
fechahora

mín carácter El valor mínimo del rango.


numérico
fechahora

máx carácter El valor máximo del rango.


numérico
fechahora

Nota
El rango que evalúa T (verdadero) incluye los valores mín y máx.
Si desea obtener información sobre los rangos de caracteres, consulte "Comportamiento
de SET EXACT" en la página siguiente.

Salida
Lógico. Devuelve T (verdadero) si el valor es mayor o igual que el valor mín y menor o igual que el valor
máx. Devuelve F (falso) en caso contrario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 437 de 898


Comandos

Ejemplos
Ejemplos básicos
Valor de entrada numérico
Devuelve T:

BETWEEN(500;400;700)

Devuelve F:

BETWEEN(100;400;700)

Valor de entrada de caracteres


Devuelve T:

BETWEEN("B"; "A"; "C")

Devuelve F, porque la comparación de caracteres distingue entre mayúsculas y minúsculas y la "b" minús-
cula no entra entre las mayúsculas “A” y “C”.

BETWEEN("b"; "A"; "C")

Valor de entrada de fechahora


Devuelve T:

BETWEEN(`141230`;`141229`;`141231`)

Devuelve T para todos los valores en el campo Hora_de_acceso entre 07:00:00 AM y 09:00:00 AM inclu-
sive y F en caso contrario:

BETWEEN(Hora_de_acceso;`t070000`;`t090000`)

Comportamiento de SET EXACT


Devuelve T para todos los valores del campo Apellido que comienzan con las letras "C" a "K", inclusive, y
F en caso contrario (SET EXACT debe estar ajustado en OFF):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 438 de 898


Comandos

BETWEEN(Apellido; "C"; "K")

Devuelve T para todos los valores del campo Apellido que comienzan con las letras "C" a "J", inclusive, y ‘F’
en caso contrario (SET EXACT debe estar ajustado en ON). También devuelve T para la letra "K":

BETWEEN(Apellido; "C"; "K")

Valor de entrada del campo


Devuelve T para todos los valores del campo Fecha_de_factura desde 30 Sep 2014 a 30 Oct 2014, inclu-
sive, y F en caso contrario:

BETWEEN(Fecha_de_factura; `20140930`; `20141030`)

Devuelve T para todos los registros en los cuales la fecha de la factura no cae entre la fecha de la orden de
compra y la fecha de pago, inclusive, y F en caso contrario:

NOT BETWEEN(Fecha_de_factura; Fecha_de_PO; Fecha_de_pago)

Devuelve T para todos los valores del campo Importe_factura que van de $1000 a $5000, inclusive, y F en
caso contrario:

BETWEEN(Importe_factura; 1000; 5000)

Ejemplos avanzados
Creación de un filtro para ver un rango de salario
El ejemplo siguiente abre la tabla de muestra Lista_empleados y aplica un filtro que limita los registros que
se muestran para incluir solo a los empleados que ganan un salario mayor o igual a $40000,00 y menor o
igual a $50000,00.

OPEN Lista_empleados
SET FILTER TO BETWEEN(Salario; 40000,00; 50000,00)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 439 de 898


Comandos

Observaciones
Tipos de datos admitidos
Los valores de entrada de la función BETWEEN( ) pueden ser numéricos, de carácter o de fechahora. No
es posible mezclar tipos de datos. Los tres valores de entrada deben pertenecer a la misma categoría de
datos.

Utilice BETWEEN( ) en lugar del operador AND


Se puede utilizar la función BETWEEN ( ) en lugar de expresiones que utilizan el operador AND.
Por ejemplo:

BETWEEN(Importe_factura; 1000; 5000)

equivale a

Importe_factura >= 1000 AND Importe_factura <= 5000

El orden de mín y máx


El orden de mín y máx en la función BETWEEN( ) no importa porque ACL identifica automáticamente
cuál valor es el mínimo y cuál es el máximo.
Los siguientes dos ejemplos devuelven T:

BETWEEN(2500; 1000; 5000)

BETWEEN(2500; 5000; 1000)

Precisión decimal de los valores de entrada numéricos


Cuando los valores de entrada numéricos que se están comparando tienen una precisión diferente en
decimales, la comparación utiliza el nivel más elevado de precisión.
Devuelve T, porque 1.23 es igual a 1.23:

BETWEEN(1.23; 1.23; 1.25)

Deuelve F, porque 1.23 es inferior a 1.234 una vez que se tiene en cuenta el tercer lugar decimal:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 440 de 898


Comandos

BETWEEN(1.23; 1.234; 1.25)

Datos de caracteres
Coincidir mayúsc.-minúsc.
La función BETWEEN( ) diferencia entre mayúsculas y minúsculas cuando se utiliza con datos de carac-
teres. Cuando compara caracteres, "a" no equivale a "A".
Devuelve F:

BETWEEN("B"; "a"; "C")

Si está trabajando con datos que incluyen incoherencias entre mayúsculas y minúsculas, puede utilizar la
función UPPER( ) para convertir los valores a un uso coherente de mayúsculas antes de usar BETWEEN
( ).
Devuelve T:

BETWEEN(UPPER("B"); UPPER("a"); UPPER("C"))

Coincidencia parcial
Se admite la coincidencia parcial para las comparaciones de caracteres.
valor puede estar contenido en mín.
Devuelve T, aun cuando el valor "AB" parece ser menos que el mín "ABC":

BETWEEN("AB"; "ABC"; "Z")

máx puede estar contenido en valor.


Devuelve T, aun cuando el valor "ZZ" parece ser superior a máx "Z":

BETWEEN("ZZ"; "ABC"; "Z")

Nota
El valor más corto en la comparación de caracteres debe aparecer al principio del valor
más extenso para que exista una coincidencia.

Coincidencia parcial y SET EXACT


La coincidencia parcial se activa cuando SET EXACT = OFF, que es el ajuste predeterminado de ACL. Si
SET EXACT = ON, la coincidencia parcial se desactiva y los valores de comparación deben coincidir de
manera exacta para que haya una coincidencia.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 441 de 898


Comandos

Los dos ejemplos anteriores son Falsos cuando SET EXACT está ON.
Si desea obtener más información acerca de SET EXACT (la opción Comparaciones de caracteres
exactos ), consulte "Comando SET" en la página 381.

Activación o desactivación de SET EXACT


Si desea asegurarse de que no se utilice la opción Comparaciones de caracteres exactos con la función
BETWEEN( ), compruebe que la opción no esté seleccionada en la ficha Tabla en el cuadro de diálogo
Opciones (Herramientas > Opciones ).
Si usted está usando un script, puede añadir el comando SET EXACT OFF antes de que aparezca la fun-
ción BETWEEN ( ). Si es necesario, puede restaurar el estado previo con el comando SET EXACT ON.

Parámetros Fechahora
Un campo de fecha, fechahora u hora especificado como un valor de entrada de una función puede uti-
lizar cualquier formato de fecha, fechahora u hora, siempre que la definición del campo establezca correc-
tamente el formato.

Combinación de valores de entrada de fecha, fechahora y hora


No existen impedimentos para mezclar los valores de fecha, fechahora y hora en los tres valores de
entrada de la función BETWEEN( ), pero la mezcla de estos subtipos de Fechahora puede dar resultados
que no son significativos.
ACL utiliza equivalentes de números de serie para procesar los cálculos de fechahora, por lo que, incluso
si usted está interesado solo en la porción fecha de un valor de fechahora, la porción hora sigue formando
parte del cálculo.
Veamos los siguientes ejemplos:
Devuelve T, porque 31 de diciembre de 2014 cae dentro del intervalo especificado por mín y máx:

BETWEEN(`20141231`;`20141229`;`20141231`)

Devuelve T, aun cuando 12:00 PM del 31 de diciembre de 2014 parece caer dentro del intervalo espe-
cificado por mín y máx:

BETWEEN(`20141231 120000`;`20141229`;`20141231`)

Si nos fijamos en el número de serie equivalente de estas dos expresiones, podemos ver por qué la
segunda se evalúa como falsa.
Devuelve T, porque el número de serie valor es igual al número de serie máx:

BETWEEN(42003.000000; 42001.000000; 42003.000000)

Devuelve F, porque el número de serie valor es superior al número de serie máx:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 442 de 898


Comandos

BETWEEN(42003.500000; 42001.000000; 42003.000000)

El número de serie 42003,500000 es mayor que 42003,000000 y por lo tanto está fuera del rango, a pesar
de que las dos fechas son idénticas. 0.500000 es el número de serie que equivale a 12:00 PM.

Armonizar subtipos de Fechahora


Para evitar problemas que podrían surgir por la mezcla de subtipos de Fechahora, puede usar las fun-
ciones para armonizar los subtipos.
Por ejemplo, esta expresión, que utiliza los mismos valores iniciales que el segundo ejemplo anterior, se
evalúa como T en lugar de F:

BETWEEN(CTOD(DATE(`20141231 120000`;"YYYYMMDD");"YYYYMMDD"); `20141229`;


`20141231`)

Especificar un valor de fecha, fechahora u hora literal


Al especificar un valor literal de fecha, fechahora u hora para cualquiera de los valores de entrada de una
función, solo puede utilizar los formatos de la siguiente tabla y debe encerrar el valor entre acentos graves;
por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 443 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

thhmmss `t235959`

Thhmm `T2359`

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 444 de 898


Comandos

Función BINTOSTR( )
Devuelve datos de caracteres Unicode convertidos a partir de datos de caracteres ZONED o EBCDIC. Abre-
viatura de “Binario a cadena”, en inglés.
Nota:
Esta función es específica de la edición Unicode de ACL. No es una función admitida en la
edición no Unicode.

Sintaxis
BINTOSTR(cadena; tipo_de_cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor ZONED o EBCDIC que desea convertir en la codificación de


caracteres Unicode.

tipo_de_cadena carácter El formato desde el cual se debe realizar la conversión. Debe espe-
cificar uno de los siguientes valores:
o "A": convertir a partir de datos ZONED (ASCII)
o "E": convertir a partir de datos EBCDIC

Salida
Carácter.

Ejemplos
Ejemplos básicos
La expresión ZONED(-6448;4) convierte el valor -6448 al formato de caracteres "644Q"; sin embargo, la
edición Unicode de ACL requiere que convierta la salida de ZONED( ) a caracteres Unicode con
BINTOSTR( ).
Devuelve "644Q" en formato Unicode:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 445 de 898


Comandos

BINTOSTR(ZONED(-6448;4); "A")

Observaciones
Cuándo usar BINTOSTR( )
Utilice esta función para convertir los valores devueltos por las funciones ZONED( ) y EBCDIC( ) a un
valor Unicode.
Nota
Si esta función no se aplica a los valores devueltos de ZONED( ) y EBCDIC( ) en las edi-
ciones Unicode de ACL, entonces se muestran incorrectamente porque la codificación no
se interpreta correctamente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 446 de 898


Comandos

Función BIT( )
Devuelve la representación binaria de la posición de bytes especificada en el registro actual como una
cadena de ocho caracteres.

Sintaxis
BIT(ubicación_de_byte)

Parámetros
Nombre Tipo Descripción

ubicación_de_byte numérico La posición de byte que se debe devolver como un valor binario.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "00110001" si el octavo byte contiene "1":

BIT(8)

Devuelve "01000001" si el noveno byte contiene "A":

BIT(9)

Devuelve "01100001" si el séptimo byte contiene "a":

BIT(17)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 447 de 898


Comandos

Ejemplos avanzados
Uso de BIT ( ) y SUBSTRING ( ) para extraer un valor
suponga que la posición de byte 17 contiene una cadena de 8 indicadores de crédito.
Para extraer todos los registros de clientes que tienen el tercer bit configurado a uno (que significa “no
enviar”), especifique:

EXTRACT IF SUBSTRING(BIT(17); 3; 1) = "1"

En este ejemplo, la función SUBSTRING( ) se utiliza para extraer el valor del tercer bit.

Observaciones
Cómo funciona
BIT( ) convierte el byte en la posición de byte especificada en una cadena de ocho caracteres de unos y
ceros.

Cuándo usar BIT( )


Utilice BIT( ) si necesita examinar los bits individuales en un byte.

Funciones relacionadas
Si desea recuperar el carácter en la posición de byte especificado, utilice la función BYTE( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 448 de 898


Comandos

Función BLANKS( )
Devuelve una cadena que contiene un determinado número de espacios en blanco.

Sintaxis
BLANKS(recuento)

Parámetros
Nombre Tipo Descripción

recuento numérico El número de espacios en blanco para insertar.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "     ":

BLANKS(5)

Devuelve "ACL Services":

"ACL" + BLANKS(1) + "Services"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 449 de 898


Comandos

Observaciones
Cuándo usar BLANKS( )
Use la función BLANKS( ) para unificar campos, inicializar variables en scripts o insertar espacios en
blanco al formatear campos o en la concatenación de cadenas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 450 de 898


Comandos

Función BYTE( )
Devuelve el carácter almacenado en la ubicación de byte especificada en el registro actual.

Sintaxis
BYTE(ubicación_de_byte)

Parámetros
Nombre Tipo Descripción

ubicación_de_byte numérico La posición de byte que se debe devolver como un valor de carácter.
El valor se refiere a la ubicación en el registro (contando desde 1),
independientemente de cualquier definición de campo.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "1" desde un registro que comienza con un campo de ID que contiene "1":

byte(112)

Ejemplos avanzados
Identificar registros en archivos de impresión o PDF sobre la base del formato uniforme
Utilice la función BYTE( ) para identificar registros en un archivo de datos en el cual hay un carácter en par-
ticular presente en una ubicación particular de byte. Esto ocurre normalmente en archivos de imagen de
impresión (Reporte) o archivos de Adobe Acrobat (PDF) en donde los datos se formatean de forma

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 451 de 898


Comandos

coherente en todo el documento.


Por ejemplo, para ubicar y extraer registros que incluyen un punto en una posición de byte 113:

EXTRACT RECORD IF BYTE(113) = "." TO "Salida.fil"

Observaciones
Cuándo usar BYTE( )
Utilice BYTE( ) para examinar el contenido de una posición en un registro, sin necesidad de definir un
campo para tal fin.

Uso de BYTE( ) en datos EBCDIC


Si utiliza esta función sobre datos EBCDIC, el valor que se devuelve también será EBCDIC. Es posible
que no pueda comparar esto con los valores de caracteres.

Funciones relacionadas
Si desea recuperar la representación binaria para la ubicación de byte especificada, utilice la función BIT( 
).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 452 de 898


Comandos

Función CDOW( )
Devuelve el nombre del día de la semana de una fecha o fechahora especificada. Abreviatura de la expre-
sión "Día de la semana en caracteres", en inglés.

Sintaxis
CDOW(fecha/fechahora; longitud)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o valor literal del cual se devuelve el nombre del
día.

longitud numérico Un valor entre 1 y 9 que especifica la longitud de la cadena de salida.


Para mostrar los nombres abreviados de los días, especifique un valor
menor.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "Miércoles" porque el 31 de diciembre de 2014 es un miércoles y la longitudes 9:

CDOW(`20141231`; 9)

Devuelve "Mie" porque el 31 de diciembre de 2014 es un miércoles y la longitudes 3:

CDOW(`20141231 235959`; 3)

Devuelve el nombre completo del día para cada valor del campo Fecha_de_factura:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 453 de 898


Comandos

CDOW(Fecha_de_factura ; 9)

Devuelve el nombre abreviado del día para cada valor del campo Marca_de_hora_recepción:

CDOW(Marca_de_hora_recepción ; 3)

Ejemplos avanzados
Agregar un campo que identifique los días de la semana para las fechas
Utilice la función CDOW( ) para crear un campo calculado que identifique los días de la semana para
todas las fechas de un campo de fecha. Una vez que haya creado el campo calculado, puede agregarlo a
la vista junto a la columna de la fecha:

DEFINE FIELD Nombre_de_día COMPUTED CDOW(Fecha_trans; 3)

Creación de un filtro para probar las transacciones que ocurrieron en un fin de semana
Utilice la función CDOW ( ) para crear un filtro que aísle las transacciones que ocurrieron en un fin de
semana:

SET FILTER TO CDOW(Fecha_trans; 3) = "Sat" OR CDOW(Fecha_trans; 3) = "Sun"

Observaciones
Detalles del parámetro
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.
Si el parámetro longitud es más corto que el nombre del día, el nombre del día se trunca según la longitud
especificada. Si el parámetro longitud es más largo que el nombre del día, el nombre del día se rellena con
espacios en blanco.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos
de la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de
fechas u horas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 454 de 898


Comandos

l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Funciones relacionadas
Si necesita devolver el día de la semana como un número (1 al 7), utilice DOW( ) en lugar de CDOW( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 455 de 898


Comandos

Función CHR( )
Devuelve el carácter asociado con el código ASCII especificado.

Sintaxis
CHR(número)

Parámetros
Nombre Tipo Descripción

número numérico Una expresión numérica válida entre 1 y 255.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "A":

CHR(65)

Devuelve "1":

CHR(49)

Ejemplos avanzados
Agregar el símbolo de libras esterlinas (£) a cada uno de los valores de un campo de moneda
Crear un campo calculado que agregue el símbolo de libras (código ASCII 163) antes de los importes del

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 456 de 898


Comandos

campo Importe_factura. El campo numérico Importe_factura primero se convierte en un campo de carac-


teres y se eliminan los espacios al principio y al final.

DEFINE FIELD Moneda_GB COMPUTED CHR(163)+ALLTRIM(STRING(Importe_factura; 12))

Observaciones
Cuándo usar CHR( )
Utilice la función CHR( ) para devolver el carácter asociado a un código ASCII, incluyendo aquellos que no
se pueden introducir directamente desde un teclado o mostrar en pantalla. Con CHR( ), puede buscar cam-
pos o registros para determinar la existencia de estos caracteres específicos.

Referencia a NUL
Referencia a carácter ASCII NUL (nulo), CHR(0), puede producir resultados impredecibles porque ACL lo
utiliza como un calificador de texto y debe evitarse si es posible.

Funciones relacionadas
CHR( ) es la función inversa a ASCII ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 457 de 898


Comandos

Función CLEAN( )
Reemplaza el primer carácter no válido de una cadena, y todos los caracteres subsiguientes, por espa-
cios en blanco.

Sintaxis
CLEAN(cadena <;caracteres_inválidos_extras>)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor desde el cual se extraen los caracteres predeterminados y


cualquier carácter no válido adicional.

caracteres_invá- carácter Los caracteres no válidos que usted desea eliminar de la cadena,
lidos_extras además de los caracteres no válidos predeterminados. Puede espe-
cificar más de un carácter no válido adicional:
opcional

" ,;\"

Los caracteres de tabulación, los caracteres nulos y los caracteres


de retorno de carro y salto de línea son caracteres no válidos pre-
determinados que se eliminan de forma automática y no es nece-
sario especificarlos.
Para especificar el carácter de comillas dobles como un carácter no
válido adicional, enciérrelo caracteres_inválidos_extras entre comi-
llas simples:

 '"'

Salida
Carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 458 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve "ABC    " ("ABC" seguido de cuatro espacios en blanco):

CLEAN("ABC%DEF";"%")

Devuelve "1234,56      " ("1234,56" seguido de seis espacios en blanco):

CLEAN("1234.56,111,2"; ",")

Observaciones
Cuándo usar CLEAN( )
Utilice esta función para asegurar que los campos que contienen datos no válidos se impriman correc-
tamente. También puede utilizar esta función para aislar partes de un campo, como el apellido en un campo
de cliente que incluye el nombre y apellido del cliente.

Especificación de las comillas simples y dobles como caracteres no válidos


Si necesita especificar tanto las comillas simples como las dobles como caracteres no válidos, debe anidar
la función CLEAN( ) dentro de sí misma:

CLEAN(CLEAN(cadena; '"'); "'")

CLEAN( ) de forma automática


En un script de ACL, puede aplicar la función CLEAN( ) automáticamente a todos los caracteres añadiendo
SET CLEAN ON a su script. No puede especificar caracteres individuales extra utilizando esta opción.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 459 de 898


Comandos

Función CMOY( )
Devuelve el nombre del mes de una fecha o fechahora especificada. Abreviatura de la expresión "Mes del
año en caracteres", en inglés.

Sintaxis
CMOY(fecha/fechahora; longitud)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o valor literal del cual se devuelve el nombre
del mes.

longitud numérico Un valor entre 1 y 9 que especifica la longitud de la cadena de


salida. Para mostrar los nombres abreviados de los meses, espe-
cifique un valor menor.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "Diciembre":

CMOY(`20141231`; 10)

Returns "Dic":

CMOY(`20141231 235959`; 3)

Devuelve el nombre abreviado del mes para cada valor del campo Marca_de_hora_recepción:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 460 de 898


Comandos

CMOY(Marca_de_hora_recepción; 3)

Devuelve el nombre completo del mes para cada valor del campo Fecha_de_factura:

CMOY(Fecha_de_factura ; 9)

Devuelve el nombre completo del mes 15 días después de cada valor en el campo Fecha_de_factura:

CMOY(Fecha_de_factura+15; 9)

Observaciones
Detalles del parámetro
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.
Si el parámetro longitud es más corto que el nombre del mes, el nombre del mes se trunca según la longitud
especificada. Si el parámetro longitud es más largo que el nombre del mes, el nombre del mes se rellena
con espacios en blanco.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos de
la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 461 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Funciones relacionadas
Si necesita devolver el mes del año como un número (1 al 12), utilice la función MONTH( ) en lugar de
CMOY( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 462 de 898


Comandos

Función COS( )
Devuelve el coseno de un ángulo expresado en radianes, con una precisión de 15 lugares decimales.

Sintaxis
COS(radianes)

Parámetros
Nombre Tipo Descripción

radianes numérico La medida del ángulo en radianes.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 0,500000000000000 (la cantidad especificada de radianes):

COS(1,047197551196598)

Ejemplos avanzados
Uso de grados como información de entrada
Devuelve 0,500000000000000 (el coseno de 60 grados):

COS(60 * PI( )/180)

Redondeo a 3 lugares decimales

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 463 de 898


Comandos

Devuelve 0,500 (el coseno de 60 grados, redondeado a 3 lugares decimales):

DEC(COS(60 * PI( )/180);3)

Observaciones
Realización de la Prueba de arco de la mantisa
as tres funciones trigonométricas de ACL – SIN( ), COS( ) y TAN( ) – permiten realizar la Prueba de arco
de la mantisa asociada con la Ley de Benford.

Conversión de grados a radianes


Si su entrada es en grados, puede utilizar la función PI( ) para convertir la entrada en radianes: (grados *
PI( )/180) = radianes. Si es necesario, puede redondear o truncar el valor devuelto utilizando la función
DEC( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 464 de 898


Comandos

Función CTOD( )
Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer la fecha del
valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abreviatura de la expresión
"Carácter a fecha", en inglés.

Sintaxis
CTOD(cadena/número <; formato>)

Parámetros
Nombre Tipo Descripción

cadena/número carácter El campo, expresión o el valor literal para convertir en una fecha o de
donde extraer la fecha.
numérico

formato carácter El formato de fecha de cadena/número. Se requiere formato para los


valores que utilizan cualquier formato de fecha que no sean
opcional
AAAAMMDD o AAMMDD; por ejemplo "DD/MM/AAAA".
Nota
Si utiliza la función CTOD con un valor de fechahora que
requiere el parámetro formato, especifique solo la por-
ción fecha del formato y no la porción hora. Por ejemplo:

CTOD("31/12/2014 23:59:59"; "DD/MM/YYYY")

Si especifica la porción de horas, impide que aparezcan


los resultados.

Salida
Fechahora. La salida del valor fecha utiliza el formato de visualización de fecha actual de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 465 de 898


Comandos

Ejemplos
Ejemplos básicos
Información de entrada de caracteres literales
Devuelve `20141231` que se visualiza como 31 Dic 2014 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

CTOD("20141231")

CTOD("31/12/2014"; "DD/MM/YYYY")

CTOD("20141231 235959")

Valor de entrada literal numérico


Devuelve `20141231` que se visualiza como 31 Dic 2014 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

CTOD(20141231)

CTOD(31122014; "DDMMYYYY")

CTOD(20141231.235959)

Valor de entrada del campo de caracteres


Devuelve cada valor del campo de caracteres especificado como una fecha, utilizando el formato de visua-
lización de la fecha actual de ACL.

CTOD(Fecha_de_factura; "DD/MM/YYYY")

CTOD(Marca_de_hora_recepción)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 466 de 898


Comandos

Valor de entrada del campo numérico


Devuelve cada valor en el campo numérico especificado como una fecha, utilizando el formato de visua-
lización de la fecha actual de ACL.

CTOD(Fecha_de_vencimiento; "DDMMYYYY")

CTOD(Marca_de_hora_pago)

Ejemplos avanzados
Comparar un campo de caracteres o numérico con una fecha
Utilice la función CTOD( ) para comparar una fecha con campos de caracteres o numéricos que contengan
valores que representan fechas.
El siguiente filtro compara dos valores:
l el campo numérico Fecha_de_vencimiento que almacena fechas como números con el formato
DDMMAAAA
l el valor de fecha literal 1 de julio de 2014

SET FILTER TO CTOD(Fecha_de_vencimiento; "DDMMAAAA") < ‘20140701‘

Observaciones
Formatos de fecha obligatorios
Los campos de caracteres y numéricos que contienen valores de fecha o fechahora deben coincidir con los
formatos en la siguiente tabla. Los valores de fechahora pueden utilizar cualquier combinación de formatos
de fecha, separador y hora válidos para su tipo de datos. La fecha debe preceder a la hora y se debe utilizar
un separador entre las dos.
Las fechas, o la porción fecha de los valores de fechahora, pueden utilizar cualquier formato de fecha admi-
tido por ACL y válido para el tipo de datos, siempre que los formatos distintos de AAAAMMDD o AAMMDD
estén correctamente definidos por formato.

Formatos de sepa-
Formatos de fecha radores Formatos de hora

Campos de caracteres

AAAAMMDD un espacio en hhmmss


blanco
hh:mm:ss

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 467 de 898


Comandos

Formatos de sepa-
Formatos de fecha radores Formatos de hora

AAMMDD la letra 't' hhmm


hh:mm

cualquier formato de fecha admitido por ACL, válido para el tipo de datos, la letra 'T' hh
si se ha definido por formato

+/-hhmm
+/-hh:mm
(desplazamiento
de UTC)

+/-hh
(desplazamiento
de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 468 de 898


Comandos

Formatos de sepa-
Formatos de fecha radores Formatos de hora

Nota
No use
solo hh
en el
for-
mato
de la
hora
prin-
cipal
con
datos
que tie-
nen un
des-
pla-
zamie-
nto del
UTC.
Por
ejem-
plo,
evite:
hh+hh-
mm.
Los
resul-
tados
pue-
den
ser
poco
fia-
bles).

Campos numéricos

AAAAMMDD coma decimal hhmmss

AAMMDD hhmm

cualquier formato de fecha admitido por ACL, válido para el tipo de datos, hh
si se ha definido por formato

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 469 de 898


Comandos

Otras funciones de conversión de fechahora


Conversión de datos de Carácter o Numéricos a Fechahora
Función Descripción

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de


la expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Conversión de datos de Fechahora a Carácter


Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la
fechahora actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Conversión de datos de Serie a Fechahora


Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 470 de 898


Comandos

Función CTODT( )
Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de la expresión
"Carácter a fechahora", en inglés.

Sintaxis
CTODT(string/number <;formato>)

Parámetros
Nombre Tipo Descripción

cadena/número carácter El campo, expresión o valor literal a convertir en una fechahora.


numérico

formato carácter El formato de fecha de cadena/número. Se requiere el formato para


los valores que utilizan cualquier formato de fecha que no sea
opcional
AAAAMMDD o AAMMDD; por ejemplo "DD/MM/AAAA".

Salida
Fechahora. La salida del valor fechahora utiliza los formatos de visualización de fecha y hora actuales de
ACL.

Ejemplos
Ejemplos básicos
Información de entrada de caracteres literales
Devuelve `20141231t235959` que se visualiza como 31 Dic 2014 23:59:59 suponiendo que la visualización
actual de la fecha de ACL sea DD MMM AAAA y hh:mm:ss:

CTODT("20141231 235959")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 471 de 898


Comandos

CTODT("31/12/2014 23:59:59"; "DD/MM/YYYY hh:mm:ss")

Valor de entrada literal numérico


Devuelve `20141231t235959` que se visualiza como 31 Dic 2014 23:59:59 suponiendo que la visua-
lización actual de la fecha de ACL sea DD MMM AAAA y hh:mm:ss:

CTODT(20141231,235959)

CTODT(31122014,235959; "DDMMYYYY.hhmmss")

Valor de entrada del campo de caracteres


Devuelve cada valor del campo de carácter Marca_de_hora_recepción como una fechahora, utilizando
el formato de visualización de la fecha actual de ACL:

CTODT(Marca_de_hora_recepción; "DD/MM/YYYY hh:mm:ss")

Valor de entrada del campo numérico


Devuelve cada valor del campo numérico Marca_de_hora_pagado como una fechahora, utilizando el for-
mato de visualización de la fecha actual de ACL:

CTODT(Marca_de_hora_pagado; "DD/MM/YYYY hh:mm:ss")

Ejemplos avanzados
Comparar un campo de caracteres o numérico con una fechahora
Utilice la función CTODT( ) para comparar una fechahora con campos de caracteres o numéricos que con-
tengan valores que representan fechahoras.
El siguiente filtro compara dos valores:
l el campo de caracteres Marca_de_hora_pagado que almacena fechahoras como datos de carac-
teres con el formato DD/MM/AAAA hh:mm:ss
l el valor de fechahora literal 1 de julio de 2014 13:30:00

SET FILTER TO CTODT(Marca_de_hora_recepción; "DD/MM/AAAA hh:mm:ss") <


'20140701t133000'

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 472 de 898


Comandos

Observaciones
Formatos de fechahora requeridos
Los campos de caracteres y numéricos que contienen valores de fechahora deben coincidir con los for-
matos en la siguiente tabla. Los valores de fechahora pueden utilizar cualquier combinación de formatos de
fecha, separador y hora válidos para su tipo de datos. La fecha debe preceder a la hora y se debe utilizar un
separador entre las dos.
La porción fecha de los valores puede utilizar cualquier formato de fecha admitido por ACL y válido para el
tipo de datos, siempre que los formatos distintos de AAAAMMDD o AAMMDD estén correctamente defi-
nidos por formato. Si utiliza formato, también debe especificar el formato de la hora, que debe ser uno de
los formatos de hora que aparecen en la siguiente tabla.
ACL reconoce automáticamente el separador entre las porciones de fecha y hora de los valores de
fechahora, así que no hay necesidad de especificar el separador en formato. Puede especificar el sepa-
rador si lo desea.

Formatos de sepa-
Formatos de fecha radores Formatos de hora

Campos de caracteres

AAAAMMDD un espacio en hhmmss


blanco
hh:mm:ss

AAMMDD la letra 't' hhmm


hh:mm

cualquier formato de fecha admitido por ACL, válido para el tipo de datos, la letra 'T' hh
si se ha definido por formato

+/-hhmm
+/-hh:mm
(desplazamiento
de UTC)

+/-hh
(desplazamiento
de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 473 de 898


Comandos

Formatos de sepa-
Formatos de fecha radores Formatos de hora

Nota
No use
solo hh
en el
for-
mato
de la
hora
prin-
cipal
con
datos
que tie-
nen un
des-
pla-
zamie-
nto del
UTC.
Por
ejem-
plo,
evite:
hh+hh-
mm.
Los
resul-
tados
pue-
den
ser
poco
fia-
bles).

Campos numéricos

AAAAMMDD coma decimal hhmmss

AAMMDD hhmm

cualquier formato de fecha admitido por ACL, válido para el tipo de datos, hh
si se ha definido por formato

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 474 de 898


Comandos

Otras funciones de conversión de fechahora


Conversión de datos de Carácter o Numéricos a Fechahora
Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer
la fecha del valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abre-
viatura de la expresión "Carácter a fecha", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Conversión de datos de Fechahora a Carácter


Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una cadena
de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la fechahora
actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Conversión de datos de Serie a Fechahora


Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 475 de 898


Comandos

Función CTOT( )
Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer la hora de
un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abreviatura de la expresión
"Carácter a hora", en inglés.

Sintaxis
CTOT(cadena/número)

Parámetros
Nombre Tipo Descripción

cadena/número carácter El campo, expresión o el valor literal para convertir en una hora o de
donde extraer la hora.
numérico

Salida
Fechahora. La salida del valor hora utiliza el formato de visualización de la hora actual de ACL.

Ejemplos
Ejemplos básicos
Información de entrada de caracteres literales
Devuelve `t235959` que se visualiza como 23:59:59 suponiendo que el formato de visualización actual de
la hora de ACL sea hh:mm:ss:

CTOT("t235959")

CTOT("23:59:59")

CTOT("20141231 235959")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 476 de 898


Comandos

Valor de entrada literal numérico


Devuelve `t235959` que se visualiza como 23:59:59 suponiendo que el formato de visualización actual de la
hora de ACL sea hh:mm:ss:

CTOT(,235959)

CTOT(0,235959)

CTOT(20141231,235959)

Valor de entrada del campo de caracteres


Devuelve cada valor del campo de carácter Hora_de_acceso como una hora, utilizando el formato de visua-
lización de hora actual de ACL:

CTOT(Hora_de_acceso)

Valor de entrada del campo numérico


Devuelve cada valor del campo numérico Marca_de_hora_pagado como una hora, sin la parte de la fecha,
utilizando el formato de visualización de hora actual de ACL:

CTOT(Marca_de_hora_pagado)

Ejemplos avanzados
Compare un campo de caracteres o numérico con una hora
Utilice la función CTOT( ) para comparar una hora con campos de caracteres o numéricos que contengan
valores que representan horas.
El siguiente filtro compara dos valores:
l el campo numérico Hora_de_acceso que almacena horas como datos numéricos
l el valor de hora literal 09:30:00

SET FILTER TO CTOT(Hora_de_acceso) > ‘t093000‘

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 477 de 898


Comandos

Observaciones
Formatos de fechahora requeridos
Los campos de caracteres y numéricos que contienen valores de hora o fechahora deben coincidir con los
formatos en la siguiente tabla.
Los valores de hora pueden utilizar cualquier formato que combine separador y hora. Debe haber un sepa-
rador antes del valor de la hora, o dos puntos entre los componentes de la hora, para que la función opere
correctamente.
Los valores de fechahora pueden utilizar cualquier combinación de formatos de fecha, separador y hora
válidos para su tipo de datos. La fecha debe preceder a la hora y se debe utilizar un separador entre las
dos.
Utilice la función CTOD ( ) si desea convertir un valor fecha de caracteres o numérico en una fecha o
extraer la fecha de un valor fechahora de caracteres o numérico y devolverlo como una fecha.
Utilice la función CTODT( ) si desea convertir un valor fechahora de caracteres o numérico en una
fechahora.

Formatos de fecha Formatos de separadores Formatos de hora

Campos de caracteres

AAAAMMDD un espacio en blanco hhmmss


hh:mm:ss

AAMMDD la letra 't' hhmm


hh:mm

la letra 'T' hh

+/-hhmm
+/-hh:mm
(desplazamiento de UTC)

+/-hh
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 478 de 898


Comandos

Formatos de fecha Formatos de separadores Formatos de hora

Nota:
No use solo hh en el formato
de la hora principal con
datos que tienen un des-
plazamiento del UTC. Por
ejemplo, evite: hh+hhmm.
Los resultados pueden ser
poco fiables).

Campos numéricos

AAAAMMDD coma decimal hhmmss

AAMMDD hhmm

hh

Otras funciones de conversión de fechahora


Conversión de datos de Carácter o Numéricos a Fechahora
Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer
la fecha del valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abre-
viatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de la


expresión "Carácter a fechahora", en inglés.

Conversión de datos de Fechahora a Carácter


Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una cadena
de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la fechahora
actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 479 de 898


Comandos

Conversión de datos de Serie a Fechahora


Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 480 de 898


Comandos

Función CUMIPMT( )
Devuelve el interés acumulado que se pagó por un préstamo durante un intervalo de períodos.

Sintaxis
CUMIPMT(tasa; períodos; cantidad; período_inicial; período_final <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos de pago.

cantidad numérico La cantidad de capital del préstamo.

período_inicial numérico El primer período del cálculo.


El período_inicial no puede ser 0.

período_final numérico El último período del cálculo.


El período_final no puede ser mayor que el número total de los perío-
dos de pago.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa y
2 para los períodos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 481 de 898


Comandos

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 17437,23, el monto total de los intereses pagados durante el segundo año de una hipoteca de
$275.000 a 25 años e intereses del 6,5 % anual, con pagos que vencen a fin de mes:

CUMIPMT(0,065/12; 12*25; 275000; 13; 24; 0)

Devuelve 1774,31, la cantidad de intereses pagados sobre el mismo préstamo en el primer año del prés-
tamo:

CUMIPMT(0,065/12; 12*25; 275000; 1; 12; 0)

Observaciones
Funciones relacionadas
La función CUMPRINC( ) es el complemento de la función CUMIPMT( ).
La función IPMT( ) calcula el interés pagado para un único período.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 482 de 898


Comandos

Función CUMPRINC( )
Devuelve el capital acumulado que se pagó por un préstamo durante un intervalo de períodos.

Sintaxis
CUMPRINC(tasa; períodos; cantidad; período_inicial; período_final <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos de pago.

cantidad numérico La cantidad de capital del préstamo.

período_inicial numérico El primer período del cálculo.


El período_inicial no puede ser 0.

período_final numérico El último período del cálculo.


El período_final no puede ser mayor que el número total de los perío-
dos de pago.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa y
2 para los períodos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 483 de 898


Comandos

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 4844,61, el monto total del capital pagado durante el segundo año de un préstamo de $275.000
al 6,5 % anual, con pagos que vencen a fin de mes:

CUMPRINC(0,065/12; 12*25; 275000; 13; 24; 0)

Devuelve 367,24, el monto del capital pagado por el mismo préstamo en el primer mes del préstamo:

CUMPRINC(0,065/12; 12*25; 275000; 1; 1; 0)

Observaciones
Funciones relacionadas
La función CUMIPMT( ) es el complemento de la función CUMPRINC( ).
La función PPMT( ) calcula el capital pagado para un único período.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 484 de 898


Comandos

Función DATE( )
Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una cadena de carac-
teres. También puede devolver la fecha actual del sistema operativo.

Sintaxis
DATE(< fecha/fechahora> <;formato>)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o el valor literal de donde extraer la fecha. Si se


omite, se devuelve la fecha actual del sistema operativo.
opcional

formato carácter El formato que se debe aplicar a la cadena de salida, por ejemplo
"DD/MM/AAAA". Si se omite, se utiliza el formato de visualización de la
opcional
fecha actual de ACL. No puede especificar un formato si ha omitido
fecha/fechahora.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "20141231" en el formato de visualización de fecha actual de ACL:

DATE(`20141231 235959`)

Devuelve "31-Dic-2014":

DATE(`20141231 235959`; "DD-MMM-YYYY")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 485 de 898


Comandos

Devuelve la fecha actual del sistema operativo como una cadena de caracteres, utilizando el formato de
visualización de la fecha actual de ACL

DATE()

Devuelve cada valor del campo Marca_de_hora_recepción como una cadena de caracteres, utilizando el
formato de visualización de la fecha actual de ACL:

DATE(Marca_de_hora_recepción)

Devuelve cada valor del campo Marca_de_hora_recepción como una cadena de caracteres utilizando el
formato de visualización de fecha especificado:

DATE(Marca_de_hora_recepción; "DD/MM/YYYY")

Observaciones
Longitud de la cadena de salida
La longitud de la cadena de salida es siempre de 12 caracteres. Si el formato de salida especificado, o el
formato de visualización de la fecha de ACL, tiene menos de 12 caracteres, la cadena de salida se rellena
con espacios finales en blanco.

Detalles del parámetro


Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.
Si utiliza formato para controlar cómo se muestra la cadena de salida, puede utilizar cualquier formato de
visualización de la fecha admitido por ACL. Por ejemplo:
l DD/MM/AAAA
l MM-DD-AA
l DD MMM AAAA
El formato se debe especificar usando comillas simples o dobles; por ejemplo, "DD MMM AAAA".

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos
de la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 486 de 898


Comandos

No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Funciones relacionadas
Si necesita devolver la fecha actual del sistema operativo como un valor de fechahora, utilice TODAY( ) en
lugar de DATE( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 487 de 898


Comandos

Otras funciones de conversión de fechahora


Conversión de datos de Fechahora a Carácter
Función Descripción

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la
fechahora actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Conversión de datos de Carácter o Numéricos a Fechahora


Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede
extraer la fecha del valor en caracteres o numérico de fechahora y devolverlo como una
fecha. Abreviatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de


la expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Conversión de datos de Serie a Fechahora


Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 488 de 898


Comandos

Función DATETIME( )
Convierte una fechahora en una cadena de caracteres. También puede devolver la fechahora actual del sis-
tema operativo.

Sintaxis
DATETIME(< fechahora> <;formato>)

Parámetros
Nombre Tipo Descripción

fechahora fechahora El campo, expresión o valor literal a convertir. Si se omite, se devuelve


la fecha actual del sistema operativo.
opcional

formato carácter El formato que se debe aplicar a la cadena de salida, por ejemplo
"DD/MM/AAAA". Si se omite, se utiliza el formato de visualización de la
opcional
fecha actual de ACL. No puede especificar un formato si ha omitido
fecha/fechahora.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Valor de entrada de fechahora literal
Devuelve "20141231 235959" en los formatos de visualización de fecha y hora actuales de ACL:

DATETIME(`20141231 235959`)

Devuelve "31-Dic-2014 11:59 P":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 489 de 898


Comandos

DATETIME(`20141231 235959`; "DD-MMM-YYYY hh:mm A")

Devuelve la fecha y la hora actual del sistema operativo como una cadena de caracteres, utilizando los for-
matos de visualización actuales de la fecha y la hora de ACL:

DATETIME()

Valor de entrada del campo


Devuelve cada valor del campo Marca_de_hora_recepción como una cadena de caracteres, utilizando
los formatos de visualización de la fecha y hora actuales de ACL:

DATETIME(Marca_de_hora_recepción)

Devuelve cada valor del campo Marca_de_hora_recepción como una cadena de caracteres utilizando
los formatos de visualización de fecha y hora especificados:

DATETIME(Marca_de_hora_recepción; "DD/MM/YYYY hh:mm:ss")

Observaciones
Longitud de la cadena de salida
La longitud de la cadena de salida es siempre de 27 caracteres. Si el formato de salida especificado, o los
formatos de visualización de la fecha y hora de ACL, tienen menos de 27 caracteres, la cadena de salida
se rellena con espacios finales en blanco.

Detalles del parámetro


Un campo especificado para fechahora puede utilizar cualquier formato de fechahora, siempre que la defi-
nición del campo establezca correctamente el formato.
Si utiliza el formato para controlar cómo se muestra la cadena de salida, solo puede utilizar los formatos
de la siguiente tabla.
l Se puede utilizar cualquier combinación de formatos de fecha, hora y AM/PM.
l La fecha debe preceder a la hora. No es necesaria la colocación de un separador entre las dos ya
que ACL utiliza automáticamente un espacio como separador en la cadena de salida.
l El formato AM/PM es opcional y se coloca al final.
l El formato se debe especificar usando comillas simples o dobles.
For example: "DD-MMM-AAAA hh:mm:ss AM"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 490 de 898


Comandos

Formatos de Formatos
Formatos de fecha hora AM/PM Ejemplos

todos los formatos de visualización de fecha admitidos hh:mm:ss ninguno "DD/MM/AAAA hh:-
por ACL mm:ss"
reloj de 24
horas

hhmmss AM o PM "MMDDAA hhmmss


PM"
reloj de 12
horas

hh:mm AoP "DD-MMM-AAAA


hh:mm A"
reloj de 12
horas

hhmm

hh

Especificar un valor de fechahora literal


Al especificar un valor literal de fechahora para fechahora, solo puede utilizar los formatos de la siguiente
tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231 235959`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 491 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Otras funciones de conversión de fechahora


Conversión de datos de Fechahora a Carácter
Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la fecha actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Conversión de datos de Carácter o Numéricos a Fechahora


Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede
extraer la fecha del valor en caracteres o numérico de fechahora y devolverlo como una
fecha. Abreviatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de


la expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Conversión de datos de Serie a Fechahora


Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 492 de 898


Comandos

Función Descripción

porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión


"Fecha de serie a fechahora", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 493 de 898


Comandos

Función DAY( )
Extrae el día del mes a partir de una fecha o fechahora especificada y la devuelve como un valor numérico
(1 a 31).

Sintaxis
DAY(fecha/fechahora)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o el valor literal de donde extraer el día.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 31:

DAY(`20141231`)

DAY(`20141231 235959`)

Devuelve el día del mes para cada valor en el campo Fecha_de_factura:

DAY(Fecha_de_factura)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 494 de 898


Comandos

Observaciones
Detalles del parámetro
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos de
la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 495 de 898


Comandos

Funciones relacionadas
Si necesita devolver:
l el día de la semana como un número (1 al 7), utilice DOW( ) en lugar de CDOW( )
l el nombre del día de la semana, utilice CDOW( ) en lugar de DAY( )

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 496 de 898


Comandos

Función DBYTE( )
Devuelve el carácter Unicode que se encuentra en la posición de byte especificada en un registro.
Nota
Esta función es específica de la edición Unicode de ACL. No es una función admitida en la
edición no Unicode.

Sintaxis
DBYTE(ubicación_de_byte)

Parámetros
Nombre Tipo Descripción

ubicación_de_byte numérico La posición de byte que se debe devolver como un valor de carácter.
Para devolver un valor significativo, debe especificar el punto de inicio
de los caracteres de doble byte, lo que significa que sólo debe espe-
cificar números impares en el parámetro ubicación_de_byte.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Los ejemplos ilustran el comportamiento de la función cuando se aplica al siguiente valor de campo de Uni-
code, que contiene 11 caracteres (22 bytes) 美丽 10072DOE:
Devuelve "丽 ":

DBYTE(3)

Devuelve "D":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 497 de 898


Comandos

DBYTE(17)

Devuelve "E":

DBYTE(21)

Observaciones
Cuándo usar DBYTE( )
Utilice DBYTE( ) para examinar el contenido de una posición en un registro, sin necesidad de definir un
campo para este fin.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 498 de 898


Comandos

Función DEC( )
Devuelve una expresión numérica con una cantidad de posiciones decimales especificada.

Sintaxis
DEC(número; decimales)

Parámetros
Nombre Tipo Descripción

número numérico El valor para el cual se ajusta el número de lugares decimales:


o Si número es un entero, el número de decimales especificado se
agrega al final de número.
o Si se reduce el número de decimales, el número se redondea.

decimales numérico El número de decimales que se usará en el valor devuelto.


Puede que necesite ajustar el número de decimales de los datos para
lograr la precisión necesaria en sus cálculos dado que ACL utiliza arit-
mética de punto fijo.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 7,00:

DEC(7; 2)

Devuelve 7,565:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 499 de 898


Comandos

DEC(7,5647; 3)

Ejemplos avanzados
Calcular el interés diario
Calcula el interés diario con seis decimales para un campo denominado Tasa_anual :

DEC(Tasa_anual; 6) / 365

Observaciones
Cuándo usar DEC( )
Utilice esta función cuando desee ajustar los lugares decimales en cálculos matemáticos o cuando desee
redondear un resultado a una cantidad especificada de lugares decimales.

Funciones relacionadas
Si desea redondear un valor al número entero más cercano, utilice la función ROUND( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 500 de 898


Comandos

Función DHEX( )
Convierte una cadena Unicode en una cadena hexadecimal.
Nota:
Esta función es específica de la edición Unicode de ACL. No es una función admitida en la
edición no Unicode.

Sintaxis
DHEX(campo)

Parámetros
Nombre Tipo Descripción

campo carácter La cadena Unicode para convertir en una cadena hexadecimal.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "004100420043003100320033":

DHEX("ABC123")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 501 de 898


Comandos

Observaciones
Cómo funciona
DHEX( ) muestra cada doble byte en formato "big-endian", con los doble bytes más significativos alma-
cenados primero.
Cada carácter se representa mediante un código de cuatro caracteres. La cadena de salida es cuatro
veces más larga que el valor del campo e incluye los dígitos entre 0 y 9, y las letras entre A y F que con-
forman los valores hexadecimales.

Funciones relacionadas
DHEX( ) es la función inversa de la función HTOU( ), que convierte la cadena hexadecimal en una cadena
Unicode.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 502 de 898


Comandos

Función DICECOEFFICIENT( )
Devuelve el Coeficiente de Dice de dos cadenas especificadas, que es una medida de la similitud entre
ambas cadenas.

Sintaxis
DICECOEFFICIENT(cadena1; cadena2 <;ngrama>)

Parámetros
Nombre Tipo Descripción

cadena1 carácter La primera cadena de la comparación.

cadena2 carácter La segunda cadena de la comparación.

ngrama numérico La longitud n-grama que se debe utilizar.


opcional Especifique un número entero, 1 o superior. El incremento de la lon-
gitud del ngrama hace que el criterio para la similitud entre ambas
cadenas sea más estricto.
Si no especifica una longitud, la longitud predeterminada que se uti-
liza es 2.
Los n-gramas son subcadenas (bloques de caracteres) que se super-
ponen y en los que las cadenas de comparación se dividen como
parte del cálculo del Coeficiente de Dice.
Si desea obtener información detallada, consulte "Observaciones" en
la página 505.

Salida
Numérico. El valor es el Coeficiente de Dice de las dos cadenas. El rango es de 0,0000 a 1,0000, inclusive.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 503 de 898


Comandos

Ejemplos
Ejemplos básicos
Cómo afecta el resultado la longitud del n-grama
Los tres ejemplos que se incluyen a continuación comparan las mismas dos cadenas. El grado de simi-
litud que se obtiene varía según la longitud de n-grama que se especificó.
Devuelve 0,9167 (con la longitud predeterminada de n-grama (2), las dos cadenas tienen una similitud del
92 %):

DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST")

Devuelve 1,0000 (con una longitud de n-grama de 1, las dos cadenas tienen una similitud del 100 %):

DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST"; 1)

Devuelve 0,8261 (con una longitud de n-grama de 3, las dos cadenas tienen una similitud del 83 %):

DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST"; 3)

Valor de entrada del campo


Devuelve el Coeficiente de Dice de cada valor en el campo Dirección, al ser comparado con la cadena
"125 SW 39TH ST, Suite 100" (con la longitud predeterminada de n-grama de 2):

DICECOEFFICIENT(Dirección;"125 SW 39TH ST, Suite 100")

Ejemplos avanzados
Trabajo con elementos transpuestos
Al reducir la longitud de n-grama y eliminar los caracteres que no son esenciales, puede optimizar
DICECOEFFICIENT( ) al buscar elementos transpuestos.
Devuelve 0,7368 (con la longitud predeterminada de n-grama (2), las dos cadenas tienen una similitud del
74 %):

DICECOEFFICIENT("John Smith";"Smith, John")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 504 de 898


Comandos

Devuelve 1,0000 (al excluir la coma entre el apellido y el nombre, con una longitud de n-grama de 1, las dos
cadenas tienen una similitud del 100 %):

DICECOEFFICIENT("John Smith"; EXCLUDE("Smith, John"; ","); 1)

Calificación de los valores en comparación con "125 SW 39TH ST, Suite 100"
Cree el campo calculado Co_Dice para mostrar el Coeficiente de Dice entre "125 SW 39TH ST, Suite 100"
y cada uno de los valores del campo Dirección:

DEFINE FIELD Co_Dice COMPUTED DICECOEFFICIENT(Dirección;"125 SW 39TH ST, Suite


100")

Agregue el campo calculado Co_Dice a la vista y, a continuación, ordene rápidamente de forma des-
cendente para calificar los valores del campo Dirección sobre la base de su similitud con "125 SW 39TH
ST, Suite 100".

Aislamiento de duplicados inexactos para "125 SW 39TH ST, Suite 100"


Cree un filtro que aísle todos los valores del campo Dirección que se encuentren a un grado específico de
similitud con "125 SW 39TH ST, Suite 100":

SET FILTER TO DICECOEFFICIENT(Dirección; "125 SW 39TH ST, Suite 100") > 0,5

Cambiar el número de la expresión le permite ajustar el grado de similitud en los valores filtrados.

Observaciones
Cuándo usar DICECOEFFICIENT( )
Utilice DICECOEFFICIENT( ) para buscar valores casi idénticos (duplicados inexactos). También puede uti-
lizar DICECOEFFICIENT( ) para buscar valores con contenido idéntico o casi idéntico, pero con elementos
traspuestos. Por ejemplo:
l números de teléfono o números de seguridad social, con dígitos traspuestos
l versiones del mismo domicilio, con diferente formato

Cómo funciona
DICECOEFFICIENT( ) devuelve el Coeficiente de Dice de las dos cadenas que se evaluaron, que es una
medida del grado de similitud entre las cadenas, expresado en una escala de 0,0000 al 1,0000. Cuanto
mayor es el valor que se obtiene, mayor es la similitud entre las dos cadenas:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 505 de 898


Comandos

l 1,0000: significa que cada cadena está compuesta por un conjunto de caracteres idéntico, aunque
estos puedan estar en un orden diferente y presentar diferencias en el uso de mayúsculas y minús-
culas.
l 0,7500: significa que las dos cadenas tienen una similitud del 75 %.
l 0,0000: significa que las dos cadenas no comparten ningún n-grama (se explica a continuación) o
que la longitud especificada para el n-grama que se usó en el cálculo es más larga que la cadena
más corta del par de cadenas que se están comparando.

Consejos de uso
l Filtrar u ordenar: Filtrar u ordenar los valores de un campo sobre la base de su Coeficiente de Dice
identifica los valores más similares a la cadena de comparación.
l Distinción entre mayúsculas y minúsculas: Esta función no distingue entre mayúsculas y minús-
culas; por lo tanto "SMITH" es equivalente a "smith".
l Espacios en blanco al principio y al final: La función recorta automáticamente los espacios en
blanco al principio y al final de los campos, por lo que no es necesario utilizar las funciones TRIM( )
u ALLTRIM( ) cuando se especifica un campo como un parámetro.
l Eliminación de elementos genéricos: Las funciones OMIT( ) y EXCLUDE( ) pueden mejorar la efi-
cacia de la función DICECOEFFICIENT( ) quitando elementos genéricos como "Corporación" o
"Inc.", o caracteres como comas, puntos y signos et (&) de los valores del campo.
La eliminación de los elementos genéricos y la puntuación centra la comparación de cadenas de
DICECOEFFICIENT( ) solo en la parte de las cadenas donde puede haber una diferencia sig-
nificativa.

Cómo se calcula el Coeficiente de Dice


El Coeficiente de Dice se calcula dividiendo primero las cadenas que se están comparando en n-gramas.
Los n-gramas (también denominados q-gramas) son subcadenas superpuestas o bloques de caracteres
superpuestos con una longitud equivalente a n. Puede especificar la longitud de n utilizando el parámetro
ngram o aceptar la longitud predeterminada de 2.

Dos nombres divididos en n-gramas


Aquí se ven los nombres "John Smith" y "Smith, John D." divididos en n-gramas con una longitud de 2 y n-
gramas con una longitud de 3. Los guiones bajos indican espacios. Los espacios internos y la puntuación
se cuentan como caracteres.

Longitud de n-
grama "John Smith" n-gramas "Smith, John D." n-gramas

2 Jo | oh | hn | n_ | _S | Sm | mi | it | th Sm | mi | it | th | h, | ,_ | _J | Jo | oh | hn | n_ | _D | D.

3 Joh | ohn | hn_ | n_S | _Sm | Smi | mit Smi | mit | ith | th, | h,_ | ,_J | _Jo | Joh | ohn | hn_ | n_D
| ith | _D.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 506 de 898


Comandos

Fórmula del coeficiente de Dice


Una vez que se hayan establecido los n-gramas de las dos cadenas que se están comparando, el cálculo
se completa con la siguiente fórmula:
l 2 x la cantidad de n-gramas compartidos / la cantidad total de n-gramas en ambas cadenas
Los n-gramas compartidos son los n-gramas que aparecen en ambas cadenas. Por ejemplo, "ABC" y
"BCD" comparten el n-grama "BC", suponiendo que la longitud del n-grama sea 2 (AB | BC y BC | CD).

Ejemplos del cálculo del Coeficiente de Dice


La siguiente tabla muestra el cálculo del Coeficiente de Dice para dos cadenas similares, "John Smith" y
"Smith, John D.", con distintas longitudes de n-grama.
Observe que, a medida que se incrementa la longitud del n-grama para el mismo par de cadenas, el valor
del Coeficiente de Dice se reduce, lo cual indica menor similitud. Si bien las cadenas continúan siendo las
mismas, el criterio de similitud se vuelve más estricto porque al dividir las cadenas en n-gramas más exten-
sos debe haber secuencias más largas de caracteres coincidentes para que haya un n-grama compartido.
Otra manera de ver esta comparación es considerar que la posición relativa de los caracteres tiene más
peso a medida que se incrementa la longitud del n-grama. Por el contrario, la posición relativa de los carac-
teres no se tiene en cuenta al utilizar un n-grama con una longitud de 1. La posición relativa hace referencia
a la posición de los caracteres entre sí, en lugar de su posición absoluta dentro de una cadena.
Consejo
Si está buscando específicamente una trasposición, utilice una longitud de n-grama de 1.

Longitud de n- n-gramas Coeficiente


grama "John Smith" n-gramas "Smith, John D." n-gramas compartidos de Dice

1 J|o|h|n|_|S|m|i|t| S|m|i|t|h|,|_|J|o|h|n|_|D| 10 2x10 /


h . (10+14) =
0,8333
(10 n-gramas) (14 n-gramas)

2 Jo | oh | hn | n_ | _S | Sm Sm | mi | it | th | h, | ,_ | _J | Jo | oh | hn 8 2x8 / (9+13)
| mi | it | th | n_ | _D | D. = 0,7273
(predeterminado)
(9 n-gramas) (13 n-gramas)

3 Joh | ohn | hn_ | n_S | _ Smi | mit | ith | th, | h,_ | ,_J | _Jo | Joh 6 2x6 / (8+12)
Sm | Smi | mit | ith | ohn | hn_ | n_D | _D. = 0,6000
(8 n-gramas) (120 n-gramas)

4 John | ohn_ | hn_S | n_ Smit | mith | ith, | th,_ | h,_J | ,_Jo | _ 4 2x4 / (7+11)
Sm | _Smi | Smit | mith Joh | John | ohn_ | hn_D | n_D. = 0,4444
(7 n-gramas) (11 n-gramas)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 507 de 898


Comandos

Comparación entre DICECOEFFICIENT( ) e ISFUZZYDUP( ) y LEVDIST( )


Una de las principales diferencias entre la función DICECOEFFICIENT( ) y las funciones LEVDIST( ) e
ISFUZZYDUP( ), que utilizan la Distancia de Levenshtein, es que DICECOEFFICIENT( ) quita el énfasis o
ignora por completo la posición relativa de los caracteres o los bloques de caracteres de las dos cadenas
que se están comparando. La posición relativa es significativa en las funciones que utilizan la Distancia de
Levenshtein.

Valores de comparación con trasposición


Si está comparando cadenas, como domicilios, en los que se pueden trasponer todos los elementos, tal
vez sea mejor optar por DICECOEFFICIENT( ). Por ejemplo, el mismo domicilio con el elemento "Suite"
traspuesto se identifica como un elemento muy similar con DICECOEFFICIENT( ), pero muy diferente
con LEVDIST( ):

Coeficiente de Dice
(valor predeterminado de n-grama
Par de domicilios de 2) Distancia de Levenshtein

o 125 SW 39TH ST, Suite 100 0,9167 22


o Suite 100, 125 SW 39TH ST (cuanto mayor sea la Distancia de
Levenshtein, mayor será la dife-
rencia entre dos cadenas)

Valores de comparación con trasposición


Si la trasposición no es un problema, la función LEVDIST( ) puede ofrecer resultados más útiles. Por ejem-
plo, el mismo nombre corporativo con diferente puntuación se identifica como un elemento muy diferente
con DICECOEFFICIENT( ), pero muy similar con LEVDIST( ):

Coeficiente de Dice
(valor predeterminado de n-grama
Par de nombres corporativos de 2) Distancia de Levenshtein

o AVS, Inc 0,3750 3


o A.V.S. Inc

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 508 de 898


Comandos

Función DIGIT( )
Devuelve el dígito superior o inferior de un byte del tipo dato Packed (compactado) especificado.

Sintaxis
DIGIT(ubicación_de_byte; posición)

Parámetros
Nombre Tipo Descripción

ubicación_de_byte numérico La ubicación del byte en el registro.

posición numérico El dígito que se debe devolver:


o especifique 1 para devolver la mitad superior del byte
o especifique 2 para devolver la mitad inferior del byte

Salida
Numérico.

Ejemplos
Ejemplos básicos
Un campo compactado con el valor 123,45 (00 12 34 5C), que contiene dos decimales y comienza en la
posición 10 de byte, aparece en el registro de datos en el siguiente formato:

Byte 10 Byte 11 Byte 12 Byte 13

UPPER(1) 0 1 3 5

LOWER(2) 0 2 4 C

Devuelve 3 (encuentra el dígito ubicado en la 12° posición en la mitad superior del byte):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 509 de 898


Comandos

DIGIT(12; 1)

Devuelve 4 (encuentra el dígito ubicado en la 12° posición en la mitad inferior del byte):

DIGIT(12; 2)

Observaciones
Cómo funciona
DIGIT( ) separa las mitades individuales de un byte y devuelve el valor del byte especificado en el pará-
metro de posición como un dígito entre 0 y 15.

Cuándo usar DIGIT( )


Utilice DIGIT( ) para acceder a las mitades individuales de los bytes. Esto es necesario si se trabaja con
aplicaciones que utilizan campos compactados alineados de medio byte, como las aplicaciones de
Unisys.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 510 de 898


Comandos

Función DOW( )
Devuelve un valor numérico (1 a 7) que representa el día de la semana de una fecha o fechahora espe-
cificada. Abreviatura de la expresión "Día de la semana", en inglés.

Sintaxis
DOW(fecha/fechahora)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, la expresión o el valor literal de donde extraer el día numé-
rico de la semana.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 4, porque el 31 de diciembre de 2014 cae en miércoles, el 4º día de la semana:

DOW(`20141231`)

DOW(`20141231 235959`)

Devuelve el día numérico de la semana para cada valor del campo Fecha_de_factura:

DOW(Fecha_de_factura)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 511 de 898


Comandos

Ejemplos avanzados
Identificación de las transacciones que ocurren en un fin de semana
Utilice la función DOW ( ) para identificar las transacciones que ocurren en un fin de semana. El filtro a con-
tinuación aísla las fechas del campo Fecha_trans que se producen en un sábado o un domingo:

SET FILTER TO DOW(Fecha_trans) = 7 OR DOW(Fecha_trans) = 1

Observaciones
Detalles del parámetro
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos
de la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de
fechas u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y
hora de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre
las dos. Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 512 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Funciones relacionadas
Si necesita devolver:
l el nombre del día de la semana, utilice CDOW( ) en lugar de DOW( )
l el día del mes como un número (1 al 31), utilice DAY( ) en lugar de DOW( )

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 513 de 898


Comandos

Función DTOU( )
Convierte un valor de fecha de ACL en una cadena Unicode en el formato de configuración regional y de
idioma especificado. Abreviatura de la expresión "Fecha a Unicode", en inglés.
Nota
Esta función es específica de la edición Unicode de ACL. No es una función admitida en la
edición no Unicode.

Sintaxis
DTOU(< fecha> <;localidad> <;estilo>)

Parámetros
Nombre Tipo Descripción

fecha fechahora El campo, expresión o valor literal para convertir en una cadena Uni-
code. Si se omite, se utiliza la fecha actual del sistema operativo.
opcional
La fecha puede contener un valor de fechahora, pero la porción de la
hora del valor se ignora. Los valores de hora independientes no son
compatibles.
Puede especificar un valor de fecha literal o un campo:
o El campo: puede utilizar cualquier formato de fecha, siempre que
la definición del campo establezca correctamente el formato
o El Literal: debe utilizar uno de los formatos AAAAMMDD o
AAMMDD; por ejemplo `20141231`
La fecha mínima admitida es 31 de diciembre de 1969.

localidad carácter El código de configuración regional especifica el idioma de la


cadena de salida y, como opción, la versión del idioma asociado con
opcional
un país o una región en particular.
Por ejemplo, "zh" especifica chino y "pt_BR" especifica portugués de
Brasil.
Si se omite, se utiliza la configuración regional predeterminada para
su computadora. Si se especifica un idioma, pero no es especifica un
país, se usa el país predeterminado para el idioma.
No se puede especificar una configuración regional si no ha espe-
cificado una fecha.
Para obtener información sobre los códigos de localización, consulte
www.unicode.org.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 514 de 898


Comandos

Nombre Tipo Descripción

estilo numérico El estilo de formato de fecha que se debe usar para la cadena Uni-
code. El estilo de formato coincide con el estándar de la con-
opcional
figuración regional que usted especifique:
o 0: formato de especificación completa, como "Domingo, 18 de sep-
tiembre de 2016"
o 1: formato extenso, como "18 de septiembre de 2016"
o 2: formato medio, como "Sep 18, 2016"
o 3: formato numérico breve, como "9/18/16"
Si se omite, se utiliza el valor predeterminado 2. No se puede espe-
cificar un estilo si no ha especificado una fecha y una configuración
regional.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Valores de entrada literales
Devuelve "31 de dezembro de 2014"

DTOU(`20141231`; "pt_BR"; 1)

Devuelve "31 grudnia 2014":

DTOU(`20141231`; "pl"; 1)

Valores de entrada de campo


Devuelve cada fecha numérica del campo Fecha_de_factura como una cadena Unicode:

DTOU(Fecha_de_factura ; "zh" ; 1)

La salida utiliza el estilo de fecha completo


Devuelve "星 期 三 , 2014 十 二 月 31" (no se especificó el identificador de región):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 515 de 898


Comandos

DTOU(`20141231`; "zh"; 0)

Devuelve "2014年 12月 31日 星 期 三 " (se especificó el identificador de región):

DTOU(`20141231`; "zh_CN"; 0)

La salida utiliza el estilo de fecha extenso


Devuelve "2014 十 二 月 31" (no se especificó el identificador de región):

DTOU(`20141231`; "zh"; 1)

Devuelve "2014年 12月 31日 " (se especificó el identificador de región):

DTOU(`20141231`; "zh_CN" ; 1)

Observaciones
Funciones relacionadas
DTOU( ) es la función inversa de la función UTOD( ), que convierte la cadena Unicode en una fecha.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 516 de 898


Comandos

Función EBCDIC( )
Devuelve una cadena que se ha convertido en la codificación de caracteres EBCDIC.

Sintaxis
EBCDIC(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para convertir a EBCDIC.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "ñòó@Æ '…@â£K":

EBCDIC("123 Fake St.")

Ejemplos avanzados
Creación de un campo codificado EBCDIC para exportar
Para crear un campo que contiene el valor codificado a EBCDIC de un campo Nombre para exportar a una
aplicación que requiere la codificación EBCDIC, especifique lo siguiente:

DEFINE FIELD Exp_nombre COMPUTED EBCDIC(Nombre)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 517 de 898


Comandos

Observaciones
Cuándo usar EBCDIC( )
Utilice esta función para convertir los datos a la codificación de caracteres Código de Intercambio Decimal
Binario Codificado Extendido (EBCDIC). La codificación de caracteres EBCDIC se utiliza principalmente
en sistemas de operativos de mainframe IBM, como z/OS.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 518 de 898


Comandos

Función EFFECTIVE( )
Devuelve la tasa de interés anual efectiva de un préstamo.

Sintaxis
EFFECTIVE(tasa_nominal; períodos)

Parámetros
Nombre Tipo Descripción

tasa_nominal numérico La tasa de interés anual nominal.

períodos numérico La cantidad de períodos compuestos por año.


Nota
Especifique un entero. Si especificó una porción deci-
mal, se trunca.

Salida
Numérico. La tasa se calcula a lugares de ocho decimales.

Ejemplos
Ejemplos básicos
Devuelve 0,19561817 (19,56 %), la tasa de interés efectiva anual sobre el saldo impago de una tarjeta de
crédito que cobra el 18 % anual, compuesto mensualmente:

EFFECTIVE(0,18; 12)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 519 de 898


Comandos

Observaciones
¿Qué es la tasa de interés efectiva anual?
La tasa de interés efectiva anual de un préstamo es la tasa de interés real que se paga, teniendo en
cuenta el interés sobre el saldo restante, compuesto mensualmente o diariamente.

Funciones relacionadas
La función NOMINAL( ) es la inversa de la función EFFECTIVE( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 520 de 898


Comandos

Función EOMONTH( )
Devuelve la fecha del último día del mes que es la cantidad de meses previos o posteriores a una fecha
determinada.

Sintaxis
EOMONTH(< fecha/fechahora> <;meses>)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o el valor literal a partir del cual calcular la fecha
de fin de mes. Si se omite, se calculará la fecha de fin de mes a partir
opcional
de la fecha actual del sistema operativo.
Nota
Puede especificar un valor de fechahora para fecha/-
fechahora pero se ignora la parte de la hora del valor.

meses numérico La cantidad de meses antes o después de fecha/fechahora. Si se


omite, se utiliza el valor predeterminado 0 (cero).
opcional
No se puede especificar meses si se ha omitido fecha/fechahora.

Salida
Fechahora. La salida del valor fecha utiliza el formato de visualización de fecha actual de ACL.

Ejemplos
Ejemplos básicos
Sin valor de entrada
Devuelve el último día del mes de la fecha actual del sistema operativo:

EOMONTH()

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 521 de 898


Comandos

Valores de entrada literales


Devuelve `20140131` que se visualiza como 31 Ene 2014 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

EOMONTH(`20140115`)

Devuelve `20140430` que se visualiza como 30 Abr 2014 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

EOMONTH(`20140115`; 3)

Devuelve `20131031` que se visualiza como 31 Oct 2013 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

EOMONTH(`20140115`; -3)

Valores de entrada de campo


Devuelve el último día del mes que cae tres meses después de cada fecha del campo Fecha_de_factura:

EOMONTH(Fecha_de_factura; 3)

Devuelve el último día del mes que cae tres meses después de cada fecha del campo Fecha_de_factura
más un período de gracia de 15 días:

EOMONTH(Fecha_de_factura+15; 3)

Devuelve el primer día del mes en el que cae la fecha de la factura:

EOMONTH(Fecha_de_factura; -1) + 1

Observaciones
Formatos de Fechahora
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.
Un valor literal de fecha debe usar uno de los siguientes formatos:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 522 de 898


Comandos

l AAAAMMDD
l AAMMDD
Debe escribir los valores de fecha literales entre acentos graves. Por ejemplo: `20141231`

Cómo funciona el valor meses


l Valor positivo: la fecha de salida es más reciente que la fecha/fechahora especificada
l Valor negativo: la fecha de salida es anterior a la fecha/fechahora especificada
l Sin valor o con un valor de '0' (cero): la fecha de salida es el último día del mes en que cae la fecha/-
fechahora.

Devolver la fecha del primer día de un mes


Agregue 1 día a los resultados de la función EOMONTH( ) para devolver la fecha del primer día de un mes.
Devuelve `20140201` que se visualiza como 1 Feb 2014 suponiendo que el formato de visualización actual
de la fecha de ACL sea DD MMM AAAA:

EOMONTH(`20140115`) + 1

Funciones relacionadas
Utilice la función GOMONTH( ) si quiere devolver la fecha exacta, en lugar de la fecha del último día del
mes, que es la cantidad especificada de meses previos o posteriores a una fecha determinada.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 523 de 898


Comandos

Función EXCLUDE( )
Devuelve una cadena que excluye los caracteres especificados.

Sintaxis
EXCLUDE(cadena; caracteres_a_excluir)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor a partir del cual excluir caracteres.

caracteres_a_ carácter La lista de caracteres que se deben excluir.


excluir
Si especifica comillas dobles en caracteres_a_excluir, debe encerrar
la lista de caracteres entre comillas simples.
Por ejemplo: '"-/'

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve " Alberni Street", que es la cadena de entrada después de excluir todos los números:

EXCLUDE("1550 Alberni Street"; "0123456789")

Devuelve todos los valores del campo Número_producto excluyendo la barra y el signo de número:

EXCLUDE(Nombre_producto; "/#")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 524 de 898


Comandos

Observaciones
Cómo funciona
La función EXCLUDE( ) compara cada carácter de la cadena con los caracteres que se incluyen en la lista
caracteres_a_excluir. Si hay una coincidencia, el carácter se excluye de la cadena de salida.
Por ejemplo, la salida para EXCLUDE("123-45-4536"; "-") es “123454536”.

Sin coincidencia de caracteres


Si no hay ninguna coincidencia entre cadena y caracteres_a_excluir la cadena y la salida de la función son
iguales.
Por ejemplo, la salida para EXCLUDE("ACL"; "D") es “ACL”.

Coincidir mayúsc.-minúsc.
La función EXCLUDE( ) distingue mayúsculas y minúsculas. Si especifica “ID” en caracteres_a_excluir
estos caracteres no se excluirán de “id#94022”. Si existe la posibilidad de que las mayúsculas y minúsculas
estén mezcladas, primero use la función UPPER( ) para pasar todos los caracteres de la cadena a mayús-
culas.
Por ejemplo:

EXCLUDE(UPPER("id#94022"); "ID#")

Consejos de uso
Utilice EXCLUDE( ) si el conjunto de caracteres que desea excluir es pequeño y el conjunto que desea
incluir es grande.

Exclusión de comillas simples y dobles


Las comillas se utilizan como delimitadores de las cadenas; por lo tanto, para excluir tanto las comillas sim-
ples como las dobles, debe anidar EXCLUDE( ) para que haya una única función para cada tipo de signo de
puntuación:

EXCLUDE(EXCLUDE(campo_a_procesar; "'"); '"')

Funciones relacionadas
La función EXCLUDE( ) es lo opuesto de la función INCLUDE( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 525 de 898


Comandos

Función EXP( )
Devuelve el valor exponencial (base 10) de una expresión numérica con un número especificado de posi-
ciones decimales.

Sintaxis
EXP(número; decimales)

Parámetros
Nombre Tipo Descripción

número numérico El valor, la expresión o el campo numérico del cual se debe devolver
el valor exponencial.

decimales numérico El número de decimales para incluir en el valor devuelto.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 1000,00:

EXP(3; 2)

Devuelve 72443,596007:

EXP(4,86; 6)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 526 de 898


Comandos

Ejemplos avanzados
Hallar la raíz cúbica
Crea un campo que sea la raíz cúbica del campo X con dos lugares decimales:

DEFINE FIELD raíz_cúbica COMPUTED EXP(LOG(X; 6) / 3; 2)

Consejo
Puede determinar la raíz n dividiendo el logaritmo del valor entre n y tomando el exponente
del resultado.

Observaciones
Cómo funciona
Esta función devuelve el valor exponencial (base 10) de una expresión numérica, que se define como 10
elevado a la n potencia. Por ejemplo, el valor exponencial de 3 es 103, o 1000.

Cuándo usar EXP( )


Utilice EXP( ) para aplicaciones financieras que requieran cálculos matemáticos complejos. EXP( ) lleva a
cabo una operación similar a la del operador de exponenciación (^), pero puede resultar de utilidad en apli-
caciones que también utilizan la función LOG( ).

Funciones relacionadas
La inversa de un exponente es su logaritmo, por lo que EXP( ) es la función opuesta de la función LOG( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 527 de 898


Comandos

Función FILESIZE( )
Devuelve el tamaño de un archivo especificado en bytes o -1 si no existe el archivo.

Sintaxis
FILESIZE(nombre de archivo)

Parámetros
Nombre Tipo Descripción

nombre de archivo carácter El nombre del archivo.


Si el archivo está en la misma carpeta que el proyecto de ACL, no es
necesario especificar la ruta del archivo.
En el caso de archivos que se encuentran en otras carpetas, espe-
cifique una ruta relativa o una ruta absoluta. Por ejemplo:
o "resultados\salida_prueba.fil"
o "c:\resultados\salida_prueba.fil"
Nota
Es necesario especificar el nombre del archivo de
datos físicos (.fil) para las tablas ACL, no el nombre de
la tabla.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 14744:

FILESIZE("Inventario.fil")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 528 de 898


Comandos

Si el archivo que está verificando no está en la misma carpeta que el proyecto de ACL, debe especificar la
ruta de acceso relativa o la ruta de acceso absoluta al archivo.
Devuelve 6018:

FILESIZE("C:\ACL Data\Archivos de datos de muestra\Backup\Trans_Cp.fil")

Ejemplos avanzados
Ejecución de un script si no existe un archivo
Solo ejecuta el script denominado importar_datos si el archivoMetaphor_Inventario_2002.fil no
existe:

DO SCRIPT importar_datos IF FILESIZE("Metaphor_Inventario_2002.fil") = -1

Registro del tamaño del archivo en el log de comandos de ACL


Utilice el comando CALCULATE para registrar el tamaño de Metaphor_Inventario_2002.fil en el
log de comandos de ACL:

CALCULATE FILESIZE("Metaphor_Inventario_2002.fil")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 529 de 898


Comandos

Función FIND( )
Devuelve un valor lógico que indica si la cadena que se especificó está presente en un campo en par-
ticular o en algún lugar de un registro completo.
Nota
La función FIND( ) y el "Comando FIND" en la página 201 son dos funciones inde-
pendientes de ACL, que tienen diferencias significativas.

Sintaxis
FIND(cadena <;campo_donde_buscar>)

Parámetros
Nombre Tipo Descripción

cadena carácter La cadena de caracteres que se buscará. Esta búsqueda no dis-


tingue mayúsculas y minúsculas.

campo_donde_bus- carácter El campo o la variable en la cual se debe realizar la búsqueda. Si se


car omite, se busca en todo el registro, incluidas las partes no definidas
del registro.
opcional

Salida
Lógico. Devuelve T (verdadero) si se determina el valor de la cadena especificada y F (falso) en caso con-
trario.

Ejemplos
Ejemplos básicos
Buscar en un registro completo
Devuelve T para todos los registros que contienen la cadena "New York" en cualquier campo, entre límites
de campos y en cualquier parte no definida del registro. De lo contrario, devuelve F:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 530 de 898


Comandos

FIND("New York")

Buscar en un solo campo


Devuelve T para todos los registros que contienen la cadena "New York" en el campo Ciudad. De lo con-
trario, devuelve F.

FIND("New York"; Ciudad)

Devuelve T para todos los registros que contienen la cadena "Ne" en el campo Ciudad. De lo contrario,
devuelve F:

FIND("Ne"; Ciudad)

Devuelve T para todos los registros que contienen la cadena "New York" precedida de uno o más espacios
en el campo Ciudad. De lo contrario, devuelve F:

FIND(" New York"; Ciudad)

Devuelve T para todos los registros que tienen un valor en el campo Descripción que coincide con el valor
de la variable v_término_búsqueda o que lo contiene. De lo contrario, devuelve F:

FIND(v_término_búsqueda; Descripción)

Buscar en varios campos


Devuelve T para todos los registros que contienen la cadena "New York" en el campo Ciudad o el campo
Ciudad_2. De lo contrario, devuelve F:

FIND("New York"; Ciudad+Ciudad_2)

Devuelve T para todos los registros que contienen la cadena "New York" en el campo Ciudad o el campo
Ciudad_2. De lo contrario, devuelve F:

FIND("New York"; Ciudad) OR FIND("New York"; Ciudad_2)

Combinación con otras funciones


Devuelve T para todos los registros que tienen un valor en el campo Apellido_2 que coincide con el valor
del campo Apellido o que lo contiene. De lo contrario, devuelve F:

FIND(ALLTRIM(Apellido); Apellido_2)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 531 de 898


Comandos

Observaciones
Cuándo usar FIND( )
Utilice la función FIND( ) para comprobar la presencia de la cadena especificada en uno, dos o más cam-
pos, o un registro completo.

Cómo funciona la coincidencia


El valor de la cadena puede tener una coincidencia exacta o puede estar incluido dentro de una cadena
más larga. Los espacios al principio no afectan la búsqueda, a menos que se incluyan uno o más espacios
iniciales en el valor de la cadena.

Buscar en un registro completo


Si no se especifica el campo_donde_buscar opcional, se busca en todo el registro, incluida cualquier
parte no definida del registro. Los límites del campo se ignoran cuando se realiza una búsqueda en todo el
registro y los espacios al final de los campos se consideran como caracteres.
Nota
Cuando realice la búsqueda en un registro completo, se busca en el registro físico. No se
realizan búsquedas en los campos calculados ni en los campos relacionados.

Buscar en un subconjunto de campos


Puede concatenar dos o más campos en el campo_donde_buscar si desea buscar en un subconjunto de
campos de una tabla. Por ejemplo, para buscar la cadena "New York" tanto en el campo Ciudad como en
el campo Ciudad_2.

FIND("New York"; Ciudad+Ciudad_2)

Los campos concatenados se tratan como un único campo que incluye los espacios al principio y al final
de los campos individuales, a menos que utilice la función ALLTRIM( ) para quitar los espacios.
También puede generar una expresión que busque en cada campo de manera individual:

FIND("New York"; Ciudad) OR FIND("New York"; Ciudad_2)

Si una cadena incluye un espacio al principio, los resultados de la búsqueda de estos dos enfoques pue-
den diferir.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 532 de 898


Comandos

Comparaciones exactas de caracteres con distinción entre mayúsculas y minúsculas


La función FIND( ) no distingue mayúsculas y minúsculas, y encuentra tanto caracteres ASCII como
EBCDIC. La función no se ve afectada por la opción Comparaciones de caracteres exactos (SET EXACT
ON/OFF).

Buscar en un campo calculado


Para buscar en un campo calculado, debe especificar el nombre del campo en campo_donde_buscar). Por
ejemplo, si Ciudad_proveedor es un campo calculado que aísla la ciudad en una dirección:

FIND("New York"; Ciudad_proveedor)

Buscar en un campo relacionado


Para buscar en un campo relacionado, debe especificar el nombre calificado completo del campo (es decir,
tabla.nombre campo) en el valor campo_donde_buscar:

FIND("New York"; Proveedor.Ciudad_proveedor)

Buscar datos numéricos o de fechahora


Es posible usar la función FIND( ) para buscar datos numéricos o de fechahora a nivel del registro. No se
admite la especificación del campo_donde_buscar para búsquedas numéricas o de fechahora.
La cadena numérica o de fechahora debe estar encerrada entre comillas y debe coincidir de forma exacta
con el formato de los datos de origen en lugar de con el formato de la vista.
No se admite el uso de la función FIND para buscar datos numéricos o de fechahora en campos calculados
o relacionados.
Nota
No se recomienda usar la función FIND( ) para buscar datos numéricos o de fechahora por-
que puede resultar difícil hacerlo con éxito.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 533 de 898


Comandos

Función FINDMULTI( )
Devuelve un valor lógico que indica si una cadena de un conjunto de una o más cadenas especificadas
está presente en un campo en particular o en algún lugar de un registro completo.

Sintaxis
FINDMULTI({buscar_en | RECORD}; cadena_1 <;...n>)

Parámetros
Nombre Tipo Descripción

buscar_en | carácter El campo o la variable donde se realiza la búsqueda.


RECORD
Especifique la palabra clave RECORD para buscar en todo el regis-
tro, incluidas las partes no definidas del registro.
También puede especificar una lista de campos concatenando los
nombres de los campos:

Campo_1+Campo_2+Campo_3

cadena_1 <;...n> carácter Búsqueda de una o más cadenas de caracteres. Separe las dife-
rentes cadenas de búsqueda con punto y coma:

FINDMULTI(RECORD; "Joa"; "Jim"; "Joh")

La búsqueda no distingue mayúsculas y minúsculas.

Salida
Lógico. Devuelve T (verdadero) si se encuentra alguno de los valores de la cadena especificada y F
(falso) en caso contrario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 534 de 898


Comandos

Ejemplos
Ejemplos básicos
Buscar en un registro completo
Devuelve T para todos los registros que contienen "New York" o "Chicago" en cualquier campo, entre lími-
tes de campos y en cualquier parte no definida del registro. De lo contrario, devuelve F:

FINDMULTI(RECORD; "New York"; "Chicago")

Buscar en un solo campo


Devuelve T para todos los registros que contienen "New York" o "Chicago" en el campo Ciudad. De lo con-
trario, devuelve F:

FINDMULTI(Ciudad; "New York"; "Chicago")

Devuelve T para todos los registros que contienen la cadena "Ne" o "Chi" en el campo Ciudad. De lo con-
trario, devuelve F:

FINDMULTI(Ciudad; "Ne"; "Chi")

Devuelve T para todos los registros que contienen "New York" o "Chicago" precedida de uno o más espa-
cios en el campo Ciudad. De lo contrario, devuelve F:

FINDMULTI(Ciudad; "New York"; "Chicago")

Devuelve T para todos los registros que tienen un valor en el campo Descripción que contiene o coincide
con cualquiera de los valores de las variables v_término_búsqueda. De lo contrario, devuelve F:

FINDMULTI(Description; v_término_búsqueda_1; v_término_búsqueda_2, v_término_búsqueda_3)

Buscar en varios campos


Devuelve T para todos los registros que contienen la cadena "New York" o "Chicago" en el campo Ciudad o
el campo Ciudad_2. De lo contrario, devuelve F:

FINDMULTI(Ciudad+Ciudad_2; "New York"; "Chicago")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 535 de 898


Comandos

Devuelve T para todos los registros que contienen la cadena "New York" o "Chicago" en el campo Ciudad
o el campo Ciudad_2. De lo contrario, devuelve F:

FINDMULTI(Ciudad; "New York"; "Chicago") OR FINDMULTI(Ciudad_2; "New York"; "Chicago")

Combinación con otras funciones


Devuelve T para todos los registros que tienen un valor en el campo Apellido_1 que coincide con el valor
recortado de los campos Apellido_2 o Apellido_3 o que lo contiene. De lo contrario, devuelve F:

FINDMULTI(Apellido; ALLTRIM(Apellido_2), ALLTRIM(Apellido_3))

Observaciones
Cuándo usar FINDMULTI( )
Utilice la función FINDMULTI( ) para comprobar la presencia de cualquiera de las cadenas especificadas
en uno, dos o más campos, o en un registro completo.

Cómo funciona la coincidencia


El valor de la cadena puede tener una coincidencia exacta o puede estar incluido dentro de una cadena
más larga. Los espacios al principio no afectan la búsqueda, a menos que se incluyan uno o más espacios
iniciales en el valor de la cadena.

Buscar en un registro completo


Si especifica RECORD en lugar de un campo buscar_en, se busca en todo el registro, incluida cualquier
parte no definida del registro. Los límites del campo se ignoran cuando se realiza una búsqueda en todo el
registro y los espacios al final de los campos se consideran como caracteres.
Nota
Cuando realice la búsqueda en un registro completo, se busca en el registro físico. No se
realizan búsquedas en los campos calculados ni en los campos relacionados.

Buscar en un subconjunto de campos


Puede concatenar dos o más campos en el parámetro buscar_en si desea buscar en un subconjunto de
campos de una tabla. Por ejemplo, para buscar la cadena "New York" o "Chicago" tanto en el campo Ciu-
dad como en el campo Ciudad_2:

FINDMULTI(Ciudad+Ciudad_2; "New York"; "Chicago")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 536 de 898


Comandos

Los campos concatenados se tratan como un único campo que incluye los espacios al principio y al final de
los campos individuales, a menos que utilice la función ALLTRIM( ) para quitar los espacios.
También puede generar una expresión que busque en cada campo de manera individual:

FINDMULTI(Ciudad; "New York"; "Chicago") OR FINDMULTI(Ciudad_2; "New York"; "Chicago")

Si un valor cadena incluye un espacio al principio, los resultados de la búsqueda de estos dos enfoques pue-
den diferir.

Comparaciones exactas de caracteres con distinción entre mayúsculas y minúsculas


La función FINDMULTI( ) no distingue mayúsculas y minúsculas, y encuentra tanto caracteres ASCII como
EBCDIC. La función no se ve afectada por la opción Comparaciones de caracteres exactos (SET EXACT
ON/OFF).

Buscar en un campo calculado


Para buscar en un campo calculado, debe especificar el nombre del campo en buscar_en. Por ejemplo, si
Ciudad_proveedor es un campo calculado que aísla la ciudad en una dirección:

FINDMULTI(Ciudad_proveedor; "New York"; "Chicago")

Buscar en un campo relacionado


Para buscar en un campo relacionado, debe especificar el nombre calificado completo del campo (es decir,
tabla.nombre campo) en el valor buscar_en:

FINDMULTI(Proveedor.Ciudad_proveedor; "New York"; "Chicago")

Buscar datos numéricos o de fechahora


Es posible usar la función FINDMULTI( ) para buscar datos numéricos o de fechahora a nivel del registro,
cuando se especifica RECORD. No se admite la especificación de un campo buscar_en para búsquedas
numéricas o de fechahora.
Los valores de la cadena numérica o de fechahora deben estar encerrados entre comillas y deben coincidir
de forma exacta con el formato de los datos de origen en lugar de con el formato de la vista.
No se admite el uso de la función FINDMULTI( ) para buscar datos numéricos o de fechahora en campos
calculados o relacionados.
Nota
No se recomienda usar la función FINDMULTI( ) para buscar datos numéricos o de
fechahora porque puede resultar difícil hacerlo con éxito.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 537 de 898


Comandos

Función FREQUENCY( )
Devuelve la frecuencia Benford esperada para los dígitos numéricos positivos, iniciales y secuenciales,
con una precisión de ocho decimales.

Sintaxis
FREQUENCY(cadena_de_dígitos)

Parámetros
Nombre Tipo Descripción

cadena_de_dígitos carácter Una cadena de caracteres que contiene dígitos (0-9) para la cual se
identifica la frecuencia. cadena_de_dígitos debe ser un número posi-
tivo y se ignoran los ceros iniciales.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 0,00998422:

FREQUENCY("43")

Returns 0,00000000:

FREQUENCY("87654321")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 538 de 898


Comandos

Nota
El resultado es 0,00000000495, pero dado que ACL calcula con una precisión de ocho
decimales, se devolverá un valor cero.

Observaciones
Cómo funciona
FREQUENCY( ) devuelve la frecuencia Benford esperada para dígitos numéricos positivos, iniciales y
secuenciales, con una precisión de ocho dígitos. Permite ejecutar pruebas Benford limitadas para situa-
ciones específicas.

Uso de esta función para combinaciones específicas de dígitos


Puede utilizar esta función el lugar del comando BENFORD, si desea concentrarse en combinaciones de
dígitos específicas. Por ejemplo, cuando audita reclamos de seguro que tienen límites en una cantidad de
reclamo especificado, puede utilizar la función FREQUENCY( ) para investigar cantidades inmediatamente
inferiores al límite aprobado.
Para investigar reclamos con un valor cercano a un límite de aprobación de $5.000, puede seleccionar un
rango de $4.900 a $4.999. En primer lugar, cuente la cantidad total de registros, luego utilice un filtro para
contar los registros para los que LEADING( ) devuelve 49 y compare la relación de los dos recuentos con el
valor que obtiene para FREQUENCY("49").
Esto es más rápido que ejecutar un análisis completo de una tabla de un millón de registros y no genera
una tabla de datos grande ni entradas voluminosas en el registro de comandos.

Especificación de cadenas mayores a seis dígitos


La especificación de cadenas mayores a seis dígitos puede resultar en valores cero. Los cálculos para cade-
nas mayores a seis dígitos pueden exigir mayor precisión que el límite de ACL de ocho posiciones deci-
males.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 539 de 898


Comandos

Función FTYPE( )
Devuelve un carácter que identifica la categoría de datos de un campo o variable o el tipo de un elemento
del proyecto ACL.

Sintaxis
FTYPE(cadena_de_nombre_de_campo)

Parámetros
Nombre Tipo Descripción

cadena_de_nom- carácter Un nombre de campo, un nombre de variable o un nombre de un ele-


bre_de_campo mento de proyecto de ACL.
Encierre cadena_nombre_de_campo entre comillas:

FTYPE("Importe")

Salida
Carácter. Esta función devuelve uno de los siguientes caracteres, que indica el campo, variable, o tipo de
elemento del proyecto ACL:
l "C": Campo Carácter
l "N": Campo Numérico
l "D": Campo de fechahora
l "L": Campo Lógico
l "c": Variable de caracteres
l "n": Variable numérica
l "d": Variable de fechahora
l "l": Variable lógica
l "b": Script de ACL
l "y": Formato de tabla de ACL
l "w": Área de trabajo de ACL
l "i": Índice de ACL
l "r": Reporte de ACL

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 540 de 898


Comandos

l "a": Archivo de log de ACL


l "U": No definido

Ejemplos
Ejemplos básicos
En el ejemplo siguiente se asigna un valor de 4 para la variable num y luego verifica el tipo.
Devuelve "n":

ASSIGN núm = 4
FTYPE("núm")

Ejemplos avanzados
Comprobar el tipo de datos de un campo
Si tiene un script o estudio analítico que requiere un campo numérico Monto, necesita probar que el campo
es del tipo correcto antes de ejecutar el script.
El comando siguiente ejecuta solo Script_1 si Monto es un campo Numérico.

OPEN Facturas
DO Script_1 IF FTYPE("Monto") = "N"

Comprobar si existe una tabla o un elemento de ACL


El siguiente comando ejecuta únicamente Script_1 si hay una tabla denominada Facturas en el proyecto:

DO Script_1 IF FTYPE("Facturas") <> "U"

Comprobar el entorno del tiempo de ejecución


Puede utilizar FTYPE para determinar si un estudio analítico se está ejecutando en ACL Analytics, en ACL
GRC Analytics Exchange o en la ventana Aplicación de análisis.
Si un estudio analítico se está ejecutando en ACL GRC Analytics Exchange, o en la ventana Aplicación de
análisis, 'ax_main' es igual a 'b':

IF FTYPE('ax_main') = 'b' v_ejecución_en_ax_o_app_análisis = T

Si un estudio analítico se está ejecutando en ACL Analytics, 'ax_main' no es igual a 'b':

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 541 de 898


Comandos

IF FTYPE('ax_main') <> 'b' v_ejecución_en_ax_o_app_análisis = F

La capacidad de detectar el entorno del tiempo de ejecución le permite diseñar un único script que ejecute
diferentes bloques de código según la aplicación que lo ejecuta.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 542 de 898


Comandos

Función FVANNUITY( )
Devuelve el valor futuro de una serie de pagos que se calculan utilizando una tasa de interés constante. El
valor futuro es la suma de los pagos más el interés compuesto acumulado.

Sintaxis
FVANNUITY(tasa; períodos; pago <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos de pago.

pago numérico El pago por período.


El importe del pago debe ser constante durante el período de validez
de la renta vitalicia.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa, los períodos y el pago a fin
de asegurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para un pago mensual en una inversión o un préstamo a dos años, con un interés del
5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para un pago anual del mismo préstamo o inversión, especifique 0.05 para la tasa y
2 para los períodos

Salida
Numérico. El resultado se calcula con dos lugares decimales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 543 de 898


Comandos

Ejemplos
Ejemplos básicos
Pagos mensuales
Devuelve 27243,20, el valor futuro de $1.000 pagado al inicio de cada mes durante 2 años al 1 % men-
sual, compuesto mensualmente:

FVANNUITY(0,01; 2*12; 1000; 1)

Devuelve 12809,33, el valor futuro de la misma renta vitalicia después del primer año:

FVANNUITY(0,01; 12; 1000; 1)

Pagos anuales
Devuelve 25440,00, el valor futuro de $12.000 pagado al final de cada año durante dos años al 12 %
anual, compuesto anualmente:

FVANNUITY(0,12; 2; 12000; 0)

Ejemplos avanzados
Cálculos de las anualidades
Los cálculos de las anualidades involucran cuatro variables:
l valor presente o valor futuro: en los ejemplos siguientes, $21,243.39 y $ 26,973.46
l importe de pago por período: en los ejemplos siguientes, $1,000.00
l tasa de interés por período: en los ejemplos siguientes, 1% mensual
l cantidad de períodos: en los ejemplos siguientes, 24 meses
Si conoce el valor de tres de las variables, puede utilizar una función de ACL para calcular el cuarto valor.

Si desea determinar: Función de ACL que debe usar:

PVANNUITY( )
Devuelve 21243.39:

PVANNUITY(0.01; 24; 1000)


Valor presente

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 544 de 898


Comandos

Si desea determinar: Función de ACL que debe usar:

FVANNUITY( )
Devuelve 26973.46:

FVANNUITY(0.01; 24; 1000)


Valor futuro

PMT( )
Devuelve 1000:

PMT(0.01; 24; 21243.39)


Importe de pago por período

RATE( )
Devuelve 0.00999999 (1%):

RATE(24; 1000; 21243.39)


Tasa de interés por período

NPER( )
Devuelve 24.00:

NPER(0.01; 1000; 21243.39)


Número de períodos

Fórmulas para la anualidad


La fórmula para calcular el valor presente de una anualidad ordinaria (pago al final de un período):

La fórmula para calcular el valor futuro de una anualidad ordinaria (pago al final de un período):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 545 de 898


Comandos

Observaciones
Funciones relacionadas
La función PVANNUITY( ) es la inversa de la función FVANNUITY( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 546 de 898


Comandos

Función FVLUMPSUM( )
Devuelve el valor futuro de una suma global actual que se calcula utilizando una tasa de interés constante.

Sintaxis
FVLUMPSUM(tasa; períodos; cantidad)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos.

cantidad numérico La inversión realizada al inicio del primer período.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa y
2 para los períodos

Salida
Numérico. El resultado se calcula con dos lugares decimales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 547 de 898


Comandos

Ejemplos
Ejemplos básicos
Interés compuesto mensual
Devuelve 1269,73, el valor futuro de la suma global de $1.000 invertida por 2 años al 1 % por mes, com-
puesto mensualmente:

FVLUMPSUM(0,01; 2*12; 1000)

Devuelve 1126,83, el valor futuro de la misma inversión después del primer año:

FVLUMPSUM(0,01; 12; 1000)

Devuelve 27243,20, el valor futuro de $21.455,82 invertidos por 2 años al 1 % mensual, compuesto men-
sualmente:

FVLUMPSUM(0,01; 2*12; 21455,82)

Interés compuesto semestral


Devuelve 1262,48, el valor futuro de la suma global de $1.000 invertida por 2 años al 12 % anual, com-
puesto semestralmente:

FVLUMPSUM(0,12/2; 2*2; 1000)

Interés compuesto anual


Devuelve 1254,40, el valor futuro de la suma global de $1.000 invertida por 2 años al 12 % anual, com-
puesto anualmente:

FVLUMPSUM(0,12; 2; 1000)

Observaciones
¿Qué es el valor futuro?
El valor futuro de una suma invertida es el capital de inversión inicial más el interés compuesto acu-
mulado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 548 de 898


Comandos

Funciones relacionadas
La función PVLUMPSUM( ) es la inversa de la función FVLUMPSUM( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 549 de 898


Comandos

Función FVSCHEDULE( )
Devuelve el valor futuro de una suma global actual que se calcula utilizando una serie de tasas de interés.

Sintaxis
FVSCHEDULE(principal; tasa1 <;tasa2...>)

Parámetros
Nombre Tipo Descripción

capital numérico El monto de la inversión inicial.

tasa1, tasa2... numérico Una serie de tasas de interés para períodos de igual longitud.
Nota
Los períodos pueden representar meses o años, u otro
período de tiempo, siempre que el tipo del período de
tiempo sea uniforme.
Debe especificar las tasas de interés por período. Por
lo tanto, si una de las tasas de interés es del 5 % anual
y el período es meses, especifique 0,05/12.

Salida
Numérico. El resultado se calcula con dos lugares decimales.

Ejemplos
Ejemplos básicos
Devuelve 1282,93, el valor futuro de la suma global de $1000 invertida a 3 años al 10 % durante el primer
año, 9 % durante el segundo año y 7 % durante el tercer año, compuesto anualmente:

FVSCHEDULE(1000; 0,1; 0,09; 0,07)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 550 de 898


Comandos

Observaciones
El valor futuro de una suma invertida es el capital de inversión inicial más el interés compuesto acumulado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 551 de 898


Comandos

Función GETOPTIONS( )
Devuelve el ajuste actual para la opción especificada de ACL (ajuste del cuadro de diálogo Opciones ).

Sintaxis
GETOPTIONS(opción)

Parámetros
Nombre Tipo Descripción

opción carácter La opción de ACL para la cual devolver el ajuste.


El nombre de la opción se debe especificar tal como aparece en la
siguiente lista y debe encerrarse entre comillas:
o separators: devuelve el ajuste actual de los tres caracteres sepa-
radores de ACL, en el siguiente orden:
l símbolo de posición decimal
l separador de miles
l separador de listas
Nota
Actualmente, "separators" es la única opción que se
puede especificar para la función GETOPTIONS( ).

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve el ajuste actual de los tres caracteres separadores de ACL. Por ejemplo, ",.,":

GETOPTIONS("SEPARATORS")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 552 de 898


Comandos

Ejemplos avanzados
Uso de GETOPTIONS( ) en un script
Si un script necesita modificar uno o más de los caracteres separadores de ACL, la función GETOPTIONS
( ) ofrece un método para descubrir los ajustes actuales. El ajuste actual se puede almacenar en una varia-
ble que después se vuelve a insertar al final del script.

ASSIGN v_SeparatorsSetting = GETOPTIONS("separadores")
SET SEPARATORS ",.;"
< contenido del script>
v_SeparatorsSetting = GETOPTIONS("SEPARATORS")

Observaciones
Los tres caracteres separadores de ACL se especifican en las siguientes opciones en el cuadro de diálogo
Opciones :
l Símbolo de posición decimal
l Separador de miles
l Separador de listas

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 553 de 898


Comandos

Función GOMONTH( )
Devuelve la fecha que corresponde a la cantidad especificada de meses previos o posteriores a una fecha
determinada.

Sintaxis
GOMONTH(fecha/fechahora; meses)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o el valor literal a partir del cual calcular la fecha
de salida.

meses numérico La cantidad de meses antes o después de fecha/fechahora.


Nota
Puede especificar un valor de fechahora para fecha/-
fechahora pero se ignora la parte de la hora del valor.

Salida
Fechahora. La salida del valor fecha utiliza el formato de visualización de fecha actual de ACL.

Ejemplos
Ejemplos básicos
Valores de entrada literales
Devuelve `20140415` que se visualiza como 15 Abr 2014 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

GOMONTH(`20140115`; 3)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 554 de 898


Comandos

Devuelve `20131015` que se visualiza como 15 Oct 2013 suponiendo que el formato de visualización actual
de la fecha de ACL sea DD MMM AAAA:

GOMONTH(`20140115`; -3)

Devuelve `20140430` que se visualiza como 30 Abr 2014 suponiendo que el formato de visualización actual
de la fecha de ACL sea DD MMM AAAA (el redondeo de la fecha devuelve 31 Abr 2014, que no es una
fecha válida):

GOMONTH(`20140330`; 1)

GOMONTH(`20140331`; 1)

Devuelve `20140501` que se visualiza como 01 May 2014 suponiendo que el formato de visualización
actual de ACL sea DD MMM AAAA:

GOMONTH(`20140401`; 1)

Valores de entrada de campo


Devuelve la fecha que es tres meses posterior a cada fecha del campo Fecha_de_factura:

GOMONTH(Fecha_de_factura; 3)

Devuelve la fecha que es tres meses posterior a cada fecha del campo Fecha_de_factura más un período
de gracia de 15 días:

GOMONTH(Fecha_de_factura+15; 3)

Observaciones
Formatos de Fechahora
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.
Un valor literal de fecha debe usar uno de los siguientes formatos:
l AAAAMMDD
l AAMMDD
Debe escribir los valores de fecha literales entre acentos graves. Por ejemplo: `20141231`

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 555 de 898


Comandos

Cómo funciona el valor meses


l Valor positivo: la fecha de salida es más reciente que la fecha/fechahora especificada
l Valor negativo: la fecha de salida es anterior a la fecha/fechahora especificada
l Sin valor o con un valor de '0' (cero): la fecha de salida es la misma que la fecha/fechahora.

Redondeo de la fecha para evitar fechas no existentes


Si la combinación de la fecha/fechahora y meses daría origen a una fecha inexistente, la función
GOMONTH( ) utiliza 'redondeo de la fecha' para devolver la fecha válida más cercana dentro del mismo
mes.
Por ejemplo, `20140330` (30 abr 2014) porque 31 abr 2014 es una fecha no válida:

GOMONTH(`20140331`;1)

Funciones relacionadas
Utilice la función EOMONTH( ) si quiere devolver la fecha del último día del mes, en lugar de la fecha
exacta, que es la cantidad especificada de meses previos o posteriores a una fecha determinada.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 556 de 898


Comandos

Función HASH( )
Devuelve un valor aleatorio añadido hash criptográfico basado en el valor de entrada.

Sintaxis
HASH(campo <;valor_aleatorio>)

Parámetros
Nombre Tipo Descripción

campo carácter El valor al que se desea aplicar el código hash.


numérico
fechahora
lógico

valor_aleatorio carácter El valor aleatorio añadido para utilizar. Puede especificar un número
identificador de PASSWORD del 1 al 10 o una cadena de caracteres.
opcional numérico
Si se omite, se utiliza el valor aleatorio predeterminado de ACL.
El valor aleatorio se limita a 128 caracteres y se trunca auto-
máticamente en 128 caracteres si usted especifica un valor más
extenso.
Si desea obtener más información, consulte "El valor aleatorio aña-
dido" en la página 560.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Con el valor aleatorio predeterminado de ACL
Devuelve "819A974BB91215D58E7753FD5A42226150100A0763087CA7DECD93F3C3090405":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 557 de 898


Comandos

HASH("555-44-3322")

Devuelve el valor hash de cada número del campo Núm_tarjeta_de_crédito:

HASH(Núm_tarjeta_de_crédito)

Con un valor aleatorio especificado por el usuario


Devuelve "AD1E7D9B97B6F6B5345AB13471A74C31EBE6630CA2622BB7E8C280E9FBEE1F17":

HASH("555-44-3322"; "mi valor aleatorio 123")

Ejemplos avanzados
Asegurarse de que los valores hash sean idénticos
Use otras funciones en combinación con HASH( ) para estandarizar los valores de texto claro que debe-
rían generar valores hash idénticos.
Considere los siguientes conjuntos de ejemplos. Tenga en cuenta la manera en la que el uso de mayús-
culas o minúsculas en los valores de texto claro modifica completamente el valor hash de salida en los pri-
meros dos ejemplos.
Devuelve "DF6789E1EC65055CD9CA17DD5B0BEA5892504DFE7661D258737AF7CB9DC46462":

HASH("John Smith")

Devuelve "3E12EABB5940B7A2AD90A6B0710237B935FAB68E629907927A65B3AA7BE6781D":

HASH("JOHN SMITH")

Por medio del uso de la función UPPER( ) para estandarizar el uso de mayúsculas y minúsculas, se obtie-
nen resultados de valor hash idénticos.
Devuelve "3E12EABB5940B7A2AD90A6B0710237B935FAB68E629907927A65B3AA7BE6781D":

HASH(UPPER("John Smith"))

Uso de HASH( ) para comparar bloques de texto extensos


Utilice HASH( ) para probar si los bloques de texto de dos campos de comentario son idénticos.
Para realizar esta prueba, cree dos campos calculados similares a los que se muestran a continuación y
después cree un filtro para encontrar los bloques de texto que no sean idénticos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 558 de 898


Comandos

DEFINE FIELD Hash_1 COMPUTED HASH(Campo_de_comentario_1)


DEFINE FIELD Hash_2 COMPUTED HASH(Campo_de_comentario_2)
SET FILTER TO Hash_1 <> Hash_2

Si los campos de comentario están en tablas independientes, cree un campo calculado HASH( ) en cada
tabla y, a continuación, utilice los campos calculados como campo clave común para realizar una unión sin
coincidencias de las dos tablas. Los registros de la tabla de salida unida representan bloques de texto que
no son idénticos.

Observaciones
Cuándo usar HASH( )
Utilice la función HASH( ) para proteger datos sensibles, como números de tarjetas de crédito, información
sobre salarios o números de seguridad social.

Cómo funciona
HASH( ) proporciona codificación en una sola dirección. Los datos en texto claro se pueden utilizar para pro-
ducir un valor de código hash; sin embargo, el valor de código hash no se puede decodificar ni desencriptar
posteriormente.
Un valor de texto claro específico genera siempre el mismo valor de código hash; por lo tanto, usted puede
buscar un campo de números de tarjetas de crédito con el código hash para detectar duplicados o unir dos
campos de números de tarjetas de crédito con el código hash, y los resultados serán los mismos que si
hubiese realizado la operación en los campos de datos claros equivalentes.

Protección de datos sensibles


Para evitar almacenar datos sensibles en un servidor, puede crear un campo calculado de manera local
con la función HASH( ) y, a continuación, crear una nueva tabla extrayendo el campo con el código hash y
cualquier otro campo necesario, mientras excluye el campo con el texto claro. Puede utilizar la nueva tabla
del servidor para sus análisis y, una vez que tiene los resultados, consultar la tabla original si es que nece-
sita ver la versión de texto clara de alguno de los datos con el código hash.
Si está prohibido el almacenamiento de datos sensibles en forma local después de su uso inicial, puede eli-
minar la tabla original después de crear la nueva tabla con los valores con el código hash y consultar el sis-
tema de origen inicial para ver los valores de texto claro.

Los valores de texto claro deben ser absolutamente idénticos


Para obtener valores de código hash idénticos, dos valores de texto claro deben ser exactamente iguales.
Por ejemplo, se obtienen valores de código hash diferentes con el mismo número de tarjeta de crédito con
o sin guiones o el mismo nombre en mayúsculas y minúsculas o únicamente en mayúscula.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 559 de 898


Comandos

Es posible que deba incorporar funciones como INCLUDE( ), EXCLUDE( ) o UPPER( ) en la función
HASH( ) para estandarizar los valores de texto claro.
Los espacios en blanco al principio y al final se recortan automáticamente con la función HASH( ); por lo
tanto, no es necesario utilizar las funciones TRIM( ) o ALLTRIM( ).

¿Qué ocurre si los espacios en blanco al principio o al final son significativos?


Si tiene datos en los que los espacios en blanco al principio o al final representan diferencias significativas
entre los valores, debe reemplazar los espacios en blanco por otro carácter antes de colocar el valor hash
en los valores.
Antes de aplicar el código hash, reemplaza los espacios en blanco por un guion bajo (_) en los valores de
los campos:

HASH(REPLACE(nombre_campo; " "; "_"))

El algoritmo criptográfico utilizado por HASH( )


HASH( ) utiliza el algoritmo de codificación criptográfica hash SHA-2 que genera una salida de longitud
fija de 64 bytes, sin importar cuál sea la longitud del valor de entrada. El valor de entrada del texto claro
puede tener más de 64 bytes.

El valor aleatorio añadido


Cómo funciona
La protección que ofrece la función HASH( ) se ve fortalecida por el agregado automático de un valor alea-
torio antes del proceso de cifrado hash. El valor aleatorio añadido es una cadena alfanumérica que se con-
catena con el valor de datos de origen. Después, se utiliza la cadena concatenada completa para generar
el valor aleatorio hashed. Con este enfoque, los valores hashed son más resistentes a las técnicas de
decodificación.

Especificación opcional de su propio valor aleatorio


Automáticamente se utiliza un valor aleatorio añadido predeterminado y fijo, a menos que usted espe-
cifique un valor aleatorio. Puede utilizar cualquiera de los siguientes métodos para especificar un valor
aleatorio:
l Valor aleatorio como cadena de texto claro
Especifique una cadena alfanumérica. Por ejemplo:

HASH(Núm_tarjeta_crédito; "mi valor aleatorio")

l Valor aleatorio como contraseña

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 560 de 898


Comandos

Utilice el comando PASSWORD junto con la función HASH( ) y especifique un número identificador
de PASSWORD de 1 a 10. Por ejemplo:

PASSWORD 3 "Introducir un valor aleatorio"


EXTRACT FIELDS HASH(Núm_tarjeta_crédito; 3) TO "Tabla_protegida"

Nota
El valor aleatorio de PASSWORD se debe introducir antes de poder extraer el
campo de la función HASH( ).
La ventaja de utilizar un número identificador de PASSWORD con HASH( ) es que no necesita expo-
ner un valor aleatorio en texto claro.
Si desea obtener más información, consulte "Comando PASSWORD" en la página 323.

Pautas del método de contraseña


El método de contraseña está diseñado para ser utilizado en scripts que solicitan la contraseña al comienzo
del script o antes de que aparezca la función HASH( ) en el script.
El método de contraseña no es adecuado para utilizarlo en campos calculados porque las asignaciones de
PASSWORD se eliminan al cerrar ACL.
Además, los campos calculados que utilizan valores aleatorios basados en contraseñas se eliminan auto-
máticamente de las vistas al volver a abrir ACL. Esta eliminación es necesaria para evitar que se vuelvan a
calcular los valores hash utilizando el valor aleatorio predeterminado. Los valores calculados nuevamente
serían diferentes de los valores hash originales con el valor aleatorio proporcionado por el usuario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 561 de 898


Comandos

Función HEX( )
Convierte una cadena ASCII en una cadena hexadecimal.

Sintaxis
HEX(campo)

Parámetros
Nombre Tipo Descripción

campo carácter La cadena ASCII para convertir en una cadena hexadecimal.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "3132333435":

HEX("12345")

Devuelve los valores del campo Recuento como cadenas hexadecimales:

HEX(Recuento)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 562 de 898


Comandos

Observaciones
Cómo funciona
Esta función devuelve la cadena hexadecimal que es equivalente al valor del campo o expresión que espe-
cifique. Puede utilizar la función cuando necesita identificar el contenido exacto de un campo, incluidos los
caracteres que no se pueden mostrar en la pantalla, como CR (retorno de carro), LF (salto de línea) y NUL
(nulo).

Longitud del valor devuelto


El valor devuelto es una cadena que es el doble de la longitud del valor campo. Los dígitos 0 a 9 y las letras
A a F (para los dígitos 10 a 15) representan los 16 valores hexadecimales.

Usar campos como valores de entrada en lugar de expresiones


En general, debe aplicar esta función en campos más que en expresiones, dado que muestra una repre-
sentación del formato de almacenamiento interno de las expresiones, que no es significativa en la mayoría
de las instancias.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 563 de 898


Comandos

Función HOUR( )
Extrae la porción de la hora de una hora o fechahora especificada y la devuelve como un valor numérico,
con un formato de 24 horas.

Sintaxis
HOUR(hora/fechahora)

Parámetros
Nombre Tipo Descripción

hora/fechahora fechahora El campo, expresión o el valor literal de donde extraer la porción


hora de la hora.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 23:

HOUR(`t235959`)

HOUR(`20141231 235959`)

Devuelve la hora de cada valor del campo Hora_inicio_llamada:

HOUR(Hora_inicio_llamada)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 564 de 898


Comandos

Observaciones
Detalles del parámetro
Un campo especificado para hora/fechahora puede utilizar cualquier formato de hora o fechahora, siempre
que la definición del campo establezca correctamente el formato.
Especificar un valor de fechahora u hora literal
Al especificar un valor literal de hora o fechahora para hora/fechahora, solo puede utilizar los formatos de la
siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231 235959`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de hora: puede utilizar cualquiera de los formatos de la siguiente tabla. Debe utilizar un sepa-
rador antes de un valor de la hora independiente para que la función opere correctamente. Los sepa-
radores válidos son la letra 't' o la letra 'T'. Debe especificar las horas con el reloj de 24 horas. Los
desplazamientos respecto del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir
precedidos de un signo más (+) o un signo menos (-).
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.

Formatos de ejemplo Valores literales de ejemplo

thhmmss `t235959`

Thhmm `T2359`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 565 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 566 de 898


Comandos

Función HTOU( )
Convierte una cadena hexadecimal en una cadena Unicode. Abreviatura de la expresión "Hexadecimal a
Unicode", en inglés.
Nota
Esta función es específica de la edición Unicode de ACL. No es una función admitida en la
edición no Unicode.

Sintaxis
HTOU(cadena_hex)

Parámetros
Nombre Tipo Descripción

cadena_hex carácter La cadena hexadecimal para convertir en una cadena Unicode. La


cadena solo puede contener valores hexadecimales, por ejemplo
"20AC".

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "ABC123":

HTOU("004100420043003100320033")

Ejemplos avanzados
Agregar un símbolo de moneda a un valor

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 567 de 898


Comandos

Debe extraer un campo monetario a una nueva tabla. El campo debe mostrar el valor del campo numérico
Importe y antecederlo con el símbolo de Euro (€):

EXTRACT HTOU("20AC") + STRING(Importe; 10) AS "Moneda_Importe" TO Tabla_visible

Cuando se ejecuta el comando EXTRACT, HTOU( ) devuelve el símbolo "€" y lo concatena con el valor
Importe que STRING( ) convierte en un carácter. Si el valor original de Importe era 2000, entonces el
valor de Moneda_importe es "€2000".

Observaciones
Funciones relacionadas
HTOU( ) es la función inversa de la función DHEX( ), que convierte la cadena Unicode en una cadena
hexadecimal.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 568 de 898


Comandos

Función INCLUDE( )
Devuelve una cadena que incluye solo los caracteres especificados.

Sintaxis
INCLUDE(cadena; caracteres_a_incluir)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para restringir a los caracteres incluidos.

caracteres_para_ carácter La lista de caracteres que se deben incluir.


incluir
Si especifica comillas dobles en caracteres_a_incluir, debe encerrar
la lista de caracteres entre comillas simples.
Por ejemplo: '"-/'
Nota
Si un carácter que especifica para incluir no aparece en
cadena, no se lo incluye en el valor que se devuelve.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "123", que es la cadena de entrada solo con los números incluidos:

INCLUDE("123 Main St."; "0123456789")

Devuelve "1231234", que es la cadena de entrada solo con los números incluidos:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 569 de 898


Comandos

INCLUDE("123-123-4"; "1243")

Devuelve "" (nada), porque la cadena de entrada no contiene "D":

INCLUDE("ACL"; "D")

Observaciones
Cómo funciona
La función INCLUDE( ) compara cada carácter de la cadena con los caracteres que se incluyen en la lista
caracteres_a_incluir. Si hay una coincidencia, el carácter se incluye en la cadena de salida.

Sin coincidencia de caracteres


Si no hay ninguna coincidencia entre cadena y caracteres_a_incluir la salida de la función aparece en
blanco.

Coincidir mayúsc.-minúsc.
La función INCLUDE( ) distingue mayúsculas y minúsculas. Si especifica "ID" en caracteres_a_incluir,
estos caracteres no es incluyen en "id#94022". Si existe la posibilidad de que las mayúsculas y minús-
culas estén mezcladas, primero use la función UPPER( ) para pasar todos los caracteres de la cadena a
mayúsculas.
Por ejemplo:

INCLUDE(UPPER("id#94022"); "ID0123456789")

Consejos de uso
Utilice INCLUDE( ) si el conjunto de caracteres que desea incluir es pequeño y el conjunto que desea
excluir es grande.

Funciones relacionadas
La función INCLUDE( ) es lo opuesto de la función EXCLUDE( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 570 de 898


Comandos

Función INSERT( )
Devuelve la cadena original con el texto especificado insertado en una ubicación de byte especifica.

Sintaxis
INSERT(cadena; insertar_texto; posición)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor en donde se insertará el texto.

insertar_texto carácter El texto a insertar.

ubicación numérico La posición entre los caracteres en la cual se debe insertar el inser-
tar_texto en la cadena.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "aXXXbcde":

INSERT("abcde"; "XXX"; 2)

Devuelve "XXXabcde":

INSERT("abcde"; "XXX"; 0)

Devuelve "abcdeXXX", con "XXX" insertado en la posición de byte 6 en lugar de 8, porque "abcde" solo
tiene 5 bytes de longitud:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 571 de 898


Comandos

INSERT("abcde"; "XXX"; 8)

Observaciones
Cómo funciona
La función INSERT( ) inserta los caracteres o espacios especificados en una cadena de caracteres,
comenzando en una posición especificada de la cadena.

Cuándo usar INSERT( )


Utilice INSERT( ) para normalizar los datos para formatear, para la coincidencia de duplicados y para los
comandos JOIN y DEFINE RELATION, que requieren campos idénticos.
Por ejemplo, los números de piezas en un archivo pueden estar en un formato "12345" y en otro archivo,
"12-345". En el primer archivo, puede utilizar INSERT( ) para insertar un guion (-) en la posición 3.

Pautas de posición
l Si el valor de posición es mayor que la longitud de la cadena, el valor insertar_texto se inserta al
final de la cadena.
l Si la posición es 0 o 1, insertar_texto se inserta al inicio de la cadena.

Inserción de comillas dobles


Si especifica comillas dobles en insertar_texto, debe encerrarlas entre comillas simples.
Por ejemplo: '"'

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 572 de 898


Comandos

Función INT( )
Devuelve el valor entero de una expresión numérica o un valor de campo.

Sintaxis
INT(número)

Parámetros
Nombre Tipo Descripción

número numérico El campo o expresión numérica para convertir a un entero. Si el valor


especificado incluye decimales, los decimales se truncan sin redon-
deo.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 7:

INT(7,9)

Devuelve -7:

INT(-7,9)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 573 de 898


Comandos

Función IPMT( )
Devuelve el interés pagado sobre un préstamo durante un único período.

Sintaxis
IPMT(tasa; período_especificado; períodos; cantidad <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

período_espe- numérico El período para el cual desea saber el pago de intereses.


cificado

períodos numérico El número total de períodos de pago.

cantidad numérico La cantidad de capital del préstamo.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa
y 2 para los períodos

Salida
Numérico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 574 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve 1489,58, el interés pagado durante el primer mes de un préstamo de $275.000 a 25 años e inte-
reses del 6,5 % anual, con pagos que vencen a fin de mes:

IPMT(0,065/12; 1; 12*25; 275000; 0)

Devuelve 10,00, el interés pagado por el mismo préstamo en el último mes del préstamo:

IPMT(0,065/12; 300; 12*25; 275000; 0)

Observaciones
Funciones relacionadas
La función PPMT( ) es el complemento de la función IPMT( ).
La función CUMIPMT( ) calcula el interés pagado durante un intervalo de períodos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 575 de 898


Comandos

Función ISBLANK( )
Devuelve un valor lógico que indica si el valor de entrada es en blanco.

Sintaxis
ISBLANK(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para probar datos en blanco.

Salida
Lógico. Devuelve T (verdadero) si el valor del parámetro cadena está en blanco y F (falso) en caso con-
trario.

Ejemplos
Ejemplos básicos
Devuelve F:

ISBLANK(" A")

Devuelve T:

ISBLANK(" ")

ISBLANK("")

Devuelve T para todos los valores del campo Domicilio que están vacíos y F para los demás:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 576 de 898


Comandos

ISBLANK(Domicilio)

Observaciones
Cuándo usar ISBLANK( )
Utilice ISBLANK( ) durante la fase de integridad de los datos de un proyecto de análisis para identificar los
campos con los datos faltantes, lo que puede indicar problemas con los datos de origen.

¿Qué es un valor de entrada vacío?


Para que la función se evalúe como verdadera, el valor de entrada debe cumplir con una de las siguientes
condiciones:
l totalmente vacío (es decir, contiene únicamente espacios)
l una cadena con una longitud de cero
La función sólo identifica los espacios en blanco reales en los datos de origen, sin caracteres no válidos que
aparecen como los espacios en blanco en una vista.

Caracteres nulos
ISBLANK( ) no puede devolver resultados útiles cuando se utiliza con los campos de caracteres que con-
tienen caracteres nulos. ACL utiliza el carácter nulo para indicar el final de una cadena y por esta razón la
función ISBLANK( ) no leerá ningún dato de carácter que siga a un carácter nulo, incluidos los espacios en
blanco.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 577 de 898


Comandos

Función ISDEFINED( )
Devuelve T (verdadero) si se define la variable o el campo especificado; de lo contrario, devuelve F
(falso).

Sintaxis
ISDEFINED(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El nombre del campo o variable para verificar su existencia. El valor
se debe introducir como una cadena entre comillas:

ISDEFINED("v_límite_numérico")

Salida
Lógico.

Ejemplos
Ejemplos básicos
Devuelve T si v_límite_numérico se define como una variable o un campo; de lo contrario, devuelve F:

ISDEFINED("v_límite_numérico")

Ejemplos avanzados
Uso de ISDEFINED( ) para probar un campo
En el ejemplo siguiente se utiliza la función ISDEFINED( ) para probar si el campo Límite está definido en

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 578 de 898


Comandos

la tabla antes de extraer registros en función del valor del campo:

OPEN Metaphor_Employees_US
IF ISDEFINED("Límite") EXTRACT RECORD IF Límite > 50000 TO "Límitealto.fil"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 579 de 898


Comandos

Función ISFUZZYDUP( )
Devuelve un valor lógico que indica si una cadena es un duplicado impreciso de una cadena de com-
paración.

Sintaxis
ISFUZZYDUP(cadena1; cadena2; levdist <;diffpct>)

Parámetros
Nombre Tipo Descripción

cadena1 carácter La primera cadena de la comparación.

cadena2 carácter La segunda cadena de la comparación.

levdist numérico La distancia de Levenshtein máxima permitida entre las dos cadenas
que puedan identificarse como duplicados difusas.
El valor levdist no puede ser menor de 1 o mayor que 10.
Al incrementar el valor de levdist aumenta la cantidad de resultados
porque se incluyen valores con un mayor grado de diferencias; es
decir valores que difieren más entre sí.

diffpct numérico El umbral superior para el 'porcentaje de diferencia'.


opcional El porcentaje de diferencia se explica en "Cómo funciona" en la
página 582.
El valor de diffpct no puede ser menor que 1 ni mayor que 99.
Al incrementar el valor diffpct, se incrementa la cantidad de resul-
tados por medio de la inclusión de valores con una mayor proporción
de diferencia en relación con su longitud.
Si se omite, el porcentaje de diferencia no se considera durante el
procesamiento de la función ISFUZZYDUP( ).

Salida
Lógico. Devuelve T (verdadero) si los valores de cadena son duplicados inexactos y F (falsos) en caso
contrario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 580 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve F, porque se necesitan dos ediciones para transformar “Smith” en “Smythe”, pero el valor delev-
dist es solo 1:

ISFUZZYDUP("Smith";"Smythe"; 1; 99)

Devuelve T, porque se necesitan dos ediciones para transformar “Smith” en “Smythe” y el valor de levdist
es 2:

ISFUZZYDUP("Smith";"Smythe"; 2; 99)

Devuelve T, porque no es necesaria ninguna edición para transformar “SMITH” en “smith” y el valor de lev-
dist es 1 (la función ISFUZZYDUP( ) no distingue entre mayúsculas y minúsculas:

ISFUZZYDUP("SMITH";"smith"; 1; 99)

Devuelve un valor lógico (T o F) que indica si los valores individuales del campo Apellido son duplicados ine-
xactos para la cadena "Smith":

ISFUZZYDUP(Apellido; "Smith"; 3; 99)

Ejemplos avanzados
Trabajo con el porcentaje de diferencia
El porcentaje de diferencia le proporciona una herramienta para reducir la cantidad de falsos positivos
devueltos por ISFUZZYDUP( ).
Sin especificación de diffpct
Devuelve T, porque se necesitan cinco ediciones para transformar “abc” en “Smith” y el valor de levdist es
5:

ISFUZZYDUP("abc"; "Smith"; 5)

Con especificación de diffpct


Devuelve F, aun cuando "abc" está dentro de la Distancia de Levenshtein especificada de "Smith", porque 5
ediciones/una longitud de cadena 3 genera un porcentaje de diferencia del 167 %, lo cual supera el valor
diffpct especificado de 99 %:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 581 de 898


Comandos

ISFUZZYDUP("abc"; "Smith"; 5; 99)

El porcentaje de diferencia se explica de forma exhaustiva en "Cómo funciona" abajo.

Aislamiento de duplicados inexactos para "Smith"


Cree un filtro que aísle todos los valores del campo Apellido que sean duplicados inexactos para "Smith":

SET FILTER TO ISFUZZYDUP(Apellido; "Smith"; 3; 99)

Cambiar los valores de levdist o diffpct le permite ajustar la cantidad de diferencia en los valores filtrados.

Observaciones
Cuándo usar ISFUZZYDUP( )
Utilice la función ISFUZZYDUP( ) para buscar valores casi idénticos (duplicados inexactos) o buscar orto-
grafía incoherente en los datos introducidos de forma manual.

Cómo funciona
La función ISFUZZYDUP( ) calcula la distancia de Levenshtein entre dos cadenas y calcula el porcentaje
de diferencia.
ISFUZZYDUP( ) se evalúa como T (verdadero) si:
l La Distancia de Levenshtein es inferior o igual al valor levdist.
l El porcentaje de diferencia es inferior o igual al valor diffpct (si se lo especificó).

Distancia de Levenshtein
La Distancia de Levenshtein es un valor que representa el mínimo número de ediciones de caracteres indi-
viduales requerido para hacer que una cadena sea idéntica a otra.
Si desea obtener más información, consulte "Función LEVDIST( )" en la página 591.

Porcentaje de diferencia
El porcentaje de diferencia es el porcentaje de la cadena más corta de las dos cadenas evaluadas que es
diferente.
El porcentaje de diferencia es el resultado del siguiente cálculo interno de ACL, que utiliza la Distancia de
Levenshtein entre las dos cadenas:
Distancia de Levenshtein / número de caracteres en la cadena más corta × 100 = porcentaje de diferencia

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 582 de 898


Comandos

El uso del porcentaje de diferencia opcional ayuda a reducir la cantidad de falsos positivos devueltos por
ISFUZZYDUP( ):
l El umbral superior de diffpct es 99 %, lo cual impide el reemplazo completo de la cadena a fin de con-
vertirla en idéntica.
l Las cadenas que requieren un mayor número de ediciones en relación a su longitud se excluyen.

Consejos de uso
l Distinción entre mayúsculas y minúsculas: Esta función no distingue entre mayúsculas y minús-
culas; por lo tanto "SMITH" es equivalente a "smith".
l Espacios en blanco al final: La función recorta automáticamente los espacios en blanco finales en
los campos, por lo que no es necesario utilizar la función TRIM( ) cuando se especifica un campo
como un parámetro.
l Eliminación de elementos genéricos: La función OMIT( ) puede mejorar la eficacia de la función
ISFUZZYDUP( ) quitando elementos genéricos como "Corporación" o "Inc." de los valores del
campo.
La eliminación de elementos genéricos enfoca la comparación de cadenas ISFUZZYDUP( ) úni-
camente en la parte de las cadenas donde puede ocurrir una diferencia significativa.

Diferencia entre el comando FUZZYDUP y la función ISFUZZYDUP( )


El comando FUZZYDUP identifica todos los duplicados inexactos de un campo, los organiza en grupos y
envía resultados no exhaustivos.
La función ISFUZZYDUP( ) identifica una lista exhaustiva de duplicados inexactos para un valor de carac-
teres único.
Tanto el comando como la función identifican duplicados exactos. A diferencia del comando, no se pueden
excluir los duplicados exactos cuando se utiliza la función.

Qué significa exhaustivo


Exhaustivo significa que todos los valores dentro del grado de diferencia especificado del valor de prueba
se devuelven, independientemente de su posición en el campo de prueba relativo al valor de prueba.
La función ISFUZZYDUP( ) es útil si los resultados no exhaustivos generados por el comando FUZZYDUP
no son suficientes para los fines de su análisis y necesita examinar directamente cada duplicado inexacto
en busca de un valor de carácter específico.

Funciones relacionadas
l LEVDIST( ): proporciona un método alternativo para comparar cadenas sobre la base de la dis-
tancia de Levenshtein.
A diferencia de ISFUZZYDUP( ), LEVDIST( ) distingue entre mayúsculas y minúsculas de forma pre-
determinada.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 583 de 898


Comandos

l DICECOEFFICIENT( ): le quita el énfasis o ignora completamente la posición relativa de los carac-


teres o de los bloques de caracteres al comparar cadenas.
l SOUNDSLIKE( ) y SOUNDEX( ): comparan cadenas basándose en una comparación fonética
(sonido) en lugar de una comparación ortográfica (escritura).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 584 de 898


Comandos

Función LAST( )
Devuelve una cantidad específica de caracteres del final de una cadena.

Sintaxis
LAST(cadena; longitud)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor de donde se devuelven los caracteres.

longitud numérico La cantidad de caracteres que se deben devolver.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "Ahorros":

LAST("Tipo de cuenta: Ahorros"; 7)

Devuelve "efghi":

LAST("abcdefghi"; 5)

Devuelve "fghi ":

LAST("abcdefghi "; 5)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 585 de 898


Comandos

Devuelve "   abc", porque el valor de la cadena es más corto que la longitud especificada de 6; por lo tanto,
se agregan espacios a la salida:

LAST("abc"; 6)

Observaciones
Resultados en blanco debido a los espacios al final
Los espacios al final en la cadena pueden hacer que los resultados que se obtienen con la función LAST
( ) estén en blanco.
Por ejemplo, la salida para LAST("6483-30384   "; 3) es "   ".
Puede utilizar la función ALLTRIM( ) junto con LAST( ) para quitar los espacios finales de la cadena.
Por ejemplo, LAST(ALLTRIM("6483-30384   "); 3) devuelve "384".

Devolución de caracteres del principio de una cadena


Si desea devolver una cantidad específica de caracteres del principio de una cadena, utilice la función
SUBSTR( ). Si desea obtener más información, consulte "Función SUBSTR( )" en la página 772.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 586 de 898


Comandos

Función LEADING( )
Devuelve una cadena que contiene una cantidad especificada de dígitos iniciales.

Sintaxis
LEADING(número; dígitos_iniciales)

Parámetros
Nombre Tipo Descripción

número numérico El valor del que se devolverán los dígitos.

dígitos_iniciales numérico El número de dígitos iniciales que deben devolverse.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Valor de entrada numérico literal
Devuelve 623:

LEADING(6234,56; 3)

Devuelve 62345:

LEADING(-6234,56; 5)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 587 de 898


Comandos

Completar con ceros al final


Devuelve 000:

LEADING(0,00; 3)

Devuelve 00000:

LEADING(0,00; 5)

Devuelve 35500:

LEADING(3,55; 5)

Observaciones
Utilice LEADING( ) para extraer dígitos de un campo numérico como una cadena y filtrar los elementos
que no son dígitos, como decimales o signos de dólares.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 588 de 898


Comandos

Función LENGTH( )
Devuelve la cantidad de caracteres de una cadena.

Sintaxis
LENGTH(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para el cual se busca la longitud.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 12:

LENGTH(“ACL Services”)

Devuelve la longitud en caracteres del campo Descripción en el formato de tabla:

LENGTH(Descripción)

Ejemplos avanzados
Mostrar la longitud de cada domicilio en el campo domicilio
Cree un campo calculado que muestre la longitud en caracteres de cada domicilio en el campo Calle_

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 589 de 898


Comandos

proveedor. Primero se cortan los espacios en blanco al principio y al final de los valores de domicilio para
que no se los cuente en la longitud.

DEFINE FIELD Longitud_domicilio COMPUTED LENGTH(ALLTRIM(Calle_proveedor))

Observaciones
Cómo funciona
La función LENGTH( ) cuenta el número de caracteres de una cadena, incluidos todos los espacios y
devuelve el número.

Espacios al final
Los espacios al final se cuentan como caracteres. Si no desea que se cuenten los espacios en blanco fina-
les, utilice las funciones TRIM( ) u ALLTRIM( ) para eliminarlos. Por ejemplo:

LENGTH(TRIM(Calle_proveedor))

Si crea un campo calculado para mostrar la longitud de los valores de un campo y no elimina los espacios
al final, se muestra la longitud máxima del campo para cada valor.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 590 de 898


Comandos

Función LEVDIST( )
Devuelve la distancia de Levenshtein entre dos cadenas especificadas, que es una medida de cuánto difie-
ren las dos cadenas.

Sintaxis
LEVDIST(cadena1; cadena2 <;coincidir_mayúsc./minúsc.>)

Parámetros
Nombre Tipo Descripción

cadena1 carácter La primera cadena de la comparación.

cadena2 carácter La segunda cadena de la comparación.

coincidir_mayús- lógico Especifique T para una comparación de cadenas que distinga entre
c./minúsc. mayúsculas y minúsculas, o F para ignorar las mayúsculas y las
minúsculas.
opcional
Si se omite, se utiliza el valor predeterminado T.

Salida
Numérico. El valor es la distancia de Levenshtein entre dos cadenas.

Ejemplos
Ejemplos básicos
Devuelve 3, porque se requieren dos sustituciones y una inserción para transformar "smith" en "Smythe":

LEVDIST("smith";"Smythe")

Devuelve 2, dado que se ignoran las mayúsculas o minúsculas; por lo tanto, solo se necesitan dos sus-
tituciones para transformar "smith's" en "Smythes":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 591 de 898


Comandos

LEVDIST("smith's";"Smythes";F)

Devuelve la distancia de Levenshtein entre cada valor del campo Apellido y la cadena "Smith":

LEVDIST(TRIM(Apellido);"Smith")

Ejemplos avanzados
Calificación de los valores en comparación con "Smith"
Cree el campo calculado Dist_Lev para mostrar la distancia de Levenshtein entre "Smith" y cada valor del
campo Apellido:

DEFINE FIELD Dist_Lev COMPUTED LEVDIST(TRIM(Apellido);"Smith"; F)

Agregue el campo calculado Dist_Lev a la vista y después haga un ordenamiento rápido ascendente
para calificar todo los valores del campo Apellido por la cantidad de diferencia respecto de "Smith".

Aislamiento de duplicados inexactos para "Smith"


Cree un filtro que aísle todos los valores del campo Apellido que están dentro de una determinada dis-
tancia de Levenshtein de "Smith":

SET FILTER TO LEVDIST(TRIM(Apellido);"Smith"; F) < 3

Cambiar el número de la expresión le permite ajustar la cantidad de distancia de Levenshtein en los valo-
res filtrados.

Observaciones
Cuándo usar LEVDIST( )
Utilice la función LEVDIST( ) para buscar valores casi idénticos (duplicados inexactos) o buscar ortografía
incoherente en los datos introducidos de forma manual. LEVDIST( ) también identifica duplicados exac-
tos.

Cómo funciona
La función LEVDIST( ) devuelve la distancia de Levenshtein entre dos cadenas evaluadas, lo cual es un
valor que representa el mínimo número de ediciones de caracteres individuales requerido para hacer que
una cadena sea idéntica a la otra.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 592 de 898


Comandos

Cada edición necesaria incrementa el valor de la distancia de Levenshtein en 1. Cuanto mayor sea la dis-
tancia de Levenshtein, mayor será la diferencia entre las dos cadenas. Una distancia de cero (0) significa
que las cadenas son idénticas.

Tipos de ediciones
Las ediciones pueden ser de tres tipos:
l inserción
l eliminación
l sustitución
El algoritmo de Levenshtein no reconoce las trasposiciones (dos letras adyacentes invertidas) y las cuenta
como dos ediciones; en concreto, dos sustituciones.

Caracteres no alfabéticos
Los signos de puntuación, los caracteres especiales y los espacios en blanco se tratan como caracteres indi-
viduales, al igual que las letras y los números.

Mayúscula y minúscula de los caracteres


Cambiar las mayúsculas o minúsculas de un carácter cuenta como una sustitución, a menos que desactive
la coincidencia entre mayúsculas y minúsculas utilizando el ajuste coincidir_mayúsc./minúsc..

La posición de los caracteres


La distancia de Levenshtein toma en cuenta la posición de los caracteres. Los mismos caracteres orde-
nados de manera diferente pueden resultar en una distancia de Levenshtein diferente.
Devuelve 2:

LEVDIST("abc"; "dec")

Devuelve 3:

LEVDIST("abc"; "cde")

Uso de TRIM( ) con LEVDIST( )


Para asegurar resultados precisos cuando utilice LEVDIST( ) para comparar una cadena literal como
"Smith" con un campo de caracteres, debe utilizar la función TRIM( ) para eliminar los espacios en blanco al
final del campo.
Si está comparando dos campos, debe utilizar la función TRIM ( ) con cada campo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 593 de 898


Comandos

El algoritmo de Levenshtein cuenta los espacios en blanco como caracteres, por lo que cualquier espacio
final se incluye en el cálculo del número de ediciones que se deben hacer para obtener dos cadenas idén-
ticas.

Uso de OMIT( ) con LEVDIST( )


La función OMIT( ) puede mejorar la eficacia de la función LEVDIST( ) quitando elementos genéricos
como "Corporación" o "Inc." de los valores del campo. La eliminación de los elementos genéricos enfoca
la comparación de cadenas de LEVDIST( ) solo en la parte de las cadenas donde puede haber una dife-
rencia significativa.

Funciones relacionadas
l ISFUZZYDUP( ): proporciona un método alternativo para comparar cadenas sobre la base de la
distancia de Levenshtein.
A diferencia del comportamiento de forma predeterminada de LEVDIST( ), ISFUZZYDUP( ) no dis-
tingue entre mayúsculas y minúsculas.
l DICECOEFFICIENT( ): le quita el énfasis o ignora completamente la posición relativa de los carac-
teres o de los bloques de caracteres al comparar cadenas.
l SOUNDSLIKE( ) y SOUNDEX( ): comparan cadenas basándose en una comparación fonética
(sonido) en lugar de una comparación ortográfica (escritura).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 594 de 898


Comandos

Función LOG( )
Devuelve el logaritmo (base 10) de una expresión de numérica o valor de campo con un número espe-
cificado de posiciones decimales.

Sintaxis
LOG(número; decimales)

Parámetros
Nombre Tipo Descripción

número numérico El valor para el cual encontrar el logaritmo.

decimales numérico El número de decimales para el valor devuelto.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 3,0000:

LOG(1000; 4)

Devuelve 4,86:

LOG(72443; 2)

Ejemplos avanzados
Hallar la raíz cúbica

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 595 de 898


Comandos

Crea un campo que sea la raíz cúbica del campo X con dos lugares decimales:

DEFINE FIELD Raíz_cúbica COMPUTED EXP(LOG(X; 6) / 3; 2)

Nota
Puede determinar la raíz n dividiendo el logaritmo del valor entre n y tomando el expo-
nente del resultado.

Observaciones
Cómo funciona
El logaritmo de un número es el exponente (o potencia) de 10 necesario para generar ese número. Por lo
tanto, el logaritmo de 1000 es 3.

Funciones relacionadas
La función LOG( ) es la inversa de la función EXP( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 596 de 898


Comandos

Función LOWER( )
Devuelve una cadena con caracteres alfabéticos convertidos en minúsculas.

Sintaxis
LOWER(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para convertir en minúsculas.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "abc":

LOWER("ABC")

Devuelve "abc 123 def":

LOWER("abc 123 DEF")

Devuelve "abcd 12":

LOWER("AbCd 12")

Devuelve todos los valores del campo Apellido convertidos a minúsculas:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 597 de 898


Comandos

LOWER(Apellido)

Observaciones
Cómo funciona
La función LOWER( ) convierte todos los caracteres alfabéticos de la cadena en minúscula. Todos los
caracteres no alfabéticos no sufren cambios.

Cuándo usar LOWER( )


Utilice LOWER( ) cuando busque datos escritos con mayúsculas y minúsculas combinadas o sin espe-
cificar, o bien cuando desee datos con formato en minúscula.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 598 de 898


Comandos

Función LTRIM( )
Devuelve una cadena con los espacios iniciales eliminados de la cadena de entrada.

Sintaxis
LTRIM(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor del cual se remueven los caracteres iniciales.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Tenga en cuenta que en ambos ejemplos los espacios finales no se eliminan mediante la función LTRIM( ).
Devuelve "Vancouver   ":

LTRIM("   Vancouver   ")

Devuelve "New York   ":

LTRIM("   New York   ")

Ejemplos avanzados
Eliminación de espacios sin separación.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 599 de 898


Comandos

La función LTRIM( ) no elimina los espacios sin separación.


Si necesita eliminar espacios sin separación iniciales, cree un campo calculado con la siguiente expre-
sión:

DEFINE FIELD Descripción_limpia COMPUTED LTRIM(REPLACE(Descripción; CHR(160); CHR


(32)))

La función REPLACE( ) reemplaza los espacios sin separación por espacios comunes y, a continuación,
LTRIM( ) elimina los espacios comunes iniciales.

Observaciones
Cómo funciona
La función LTRIM( ) elimina únicamente los espacios iniciales. Los espacios dentro de la cadena y al final
no se eliminan.

Funciones relacionadas
LTRIM( ) está relacionada con la función TRIM( ), que elimina los espacios finales de una cadena y a la
función ALLTRIM( ), que elimina los espacios iniciales y finales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 600 de 898


Comandos

Función MAP( )
Regresa un valor lógico que indica si una cadena de caracteres coincide con una cadena de formato espe-
cífico que contiene caracteres comodín, caracteres literales, o ambos.

Sintaxis
MAP(cadena; formato)

Parámetros
Nombre Tipo Descripción

cadena carácter El campo, la expresión o el valor literal que se debe probar en busca
de coincidencias.

formato carácter El patrón de datos o la cadena de caracteres que desea comparar con
la cadena.
El formato puede tener caracteres comodín, caracteres literales o una
combinación de ambos:

"\9\9\9-999-9999"

Se admiten los siguientes caracteres comodín:


o "X": Coincide con cualquier carácter alfabético (a-z, A-Z, caracteres
europeos). Este carácter comodín no distingue entre mayúsculas o
minúsculas. Puede usar "X" o "x"
o "9": Coincide con cualquier número (0-9)
o "!": Coincide con cualquier carácter que no esté en blanco
o "?": Coincide con cualquier carácter, incluidos los espacios en
blanco
o "\": Un carácter de escape que especifica que el carácter siguiente
es un literal. Utilice el carácter de escape si desea hacer coincidir
literalmente cualquiera de los caracteres comodines (X, x, 9, !, ?).
o "\\": Especifica una barra invertida literal

Salida
Lógico. Devuelve T (verdadero) si se encuentra una coincidencia, y F (falso) en caso contrario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 601 de 898


Comandos

Ejemplos
Ejemplos básicos
Patrones de búsqueda simples
Devuelve T:

MAP("ABC Plumbing"; "xxx")

Devuelve F (la cadena solo tiene 3 números cuando se necesita un mínimo de 4):

MAP("045"; "9999")

Escape de un comodín
Si el objetivo es devolver T solo para los valores que comienzan con el carácter literal "X", seguido de una
segunda letra, el parámetro formato "\XX" se asegura de que el primer carácter "X" del parámetro se inter-
prete de manera literal y no como un comodín.
Devuelve T:

MAP("XA-123"; "XX")

MAP("GC-123"; "XX")

MAP("XA-123"; "\XX")

Devuelve F:

MAP("GC-123"; "\XX")

Campos y patrones
Devuelve T para todos los registros con números de facturas que estén conformados o comiencen con
dos letras seguidas de cinco números. De lo contrario, devuelve F:

MAP(Número_de_factura; "XX99999")

Devuelve T para todos los registros con números de factura que coinciden totalmente con "AB12345" o
que comienzan con "AB12345". De lo contrario, devuelve F:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 602 de 898


Comandos

MAP(Número_de_factura; "AB12345")

Devuelve T para todos los registros con números de facturas que contengan o comiencen con las letras
"AB" seguidas de cinco números. De lo contrario, devuelve F:

MAP(Número_de_factura; "AB99999")

Devuelve T para todos los registros que no coinciden con el formato estándar de los números de seguridad
social en el campo SSN. De lo contrario, devuelve F:

NOT MAP(SSN; "999-99-9999")

Ejemplos avanzados
Extracción de registros con códigos de producto de 10 caracteres y la combinación de caracteres "859-" al prin-
cipio
Utilice una sentencia IF y la función MAP( ) para extraer únicamente los registros con códigos de producto
de al menos 10 caracteres de longitud y que tengan los caracteres iniciales“859-”:

EXTRACT RECORD IF MAP(Código_de_producto; "85\9-999999") TO "Códigos_largos_859"

Observaciones
Cuándo usar MAP( )
Use la función MAP( ) para buscar patrones o formatos particulares en datos alfanuméricos. Los patrones o
formatos pueden estar conformados por caracteres comodín, caracteres literales o una combinación de
ambos.

Coincidir mayúsc.-minúsc.
La función MAP( ) distingue entre mayúsculas y minúsculas al comparar dos caracteres literales. Por ejem-
plo, "a" no es lo mismo que "A".
Si cadena incluye datos de caracteres con uso incoherente de mayúsculas y minúsculas, puede utilizar la
función UPPER( ) para convertir los valores a un uso coherente de mayúsculas y minúsculas antes de usar
MAP( ).
Por ejemplo:

MAP(UPPER(Número_de_factura); "AB99999")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 603 de 898


Comandos

Coincidencia parcial
MAP( ) admite la coincidencia parcial en una situación pero no en la otra.
La coincidencia parcial en MAP( ) no se ve afectada por la opción Comparaciones de caracteres exac-
tos (SET EXACT ON/OFF).

Admite la coincidencia parcial


La coincidencia parcial se admite si el valor de formato es más corto que el valor de la cadena.
Devuelve T, porque el formato tiene 7 caracteres y la cadena tiene 9 caracteres:

MAP("AB1234567"; "AB99999")

Nota
Para devolver T (verdadero), el valor de formato debe aparecer al principio del valor de la
cadena.

No se admite la coincidencia parcial


La coincidencia parcial no se admite si el valor de formato es más largo que el valor de la cadena.
Devuelve F, porque el formato tiene 7 caracteres y la cadena tiene 6 caracteres:

MAP("AB1234", "AB99999")

Si el formato es más largo que la cadena, el resultado es siempre Falso.

Justificación de los espacios en blanco


Los espacios en blanco se tratan como caracteres y se pueden indicar de dos maneras:
l coincidencia con espacios en blanco literalmente, por medio de la inclusión de espacios en blanco
en el valor formato en la posición adecuada
l uso del comodín "?" , que coincide con cualquier carácter, incluidos los espacios en blanco
Si es necesario, puede utilizar las funciones TRIM( ), LTRIM( ) o ALLTRIM( ) para quitar los espacios en
blanco al principio o al final de la cadena. De esta forma, se asegurará de comparar únicamente los carac-
teres de texto y los espacios internos.

Concatenar campos
Puede concatenar dos o más campos en la cadena si desea buscar en más de un campo de una tabla.
Los campos concatenados se tratan como un único campo que incluye los espacios al principio y al final
de los campos individuales, a menos que utilice la función ALLTRIM( ) para quitarlos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 604 de 898


Comandos

Función MASK( )
Realiza una operación AND a nivel del bit en los primeros bytes de dos cadenas de caracteres.

Sintaxis
MASK(valor_carácter; máscara_de_carácter)

Parámetros
Nombre Tipo Descripción

valor_de_carácter carácter La cadena con el byte que se debe probar.

máscara_de_carác- carácter La cadena con el byte contra el que se debe hacer la prueba (el valor
ter de máscara).

Salida
Carácter. La salida es la representación en caracteres del resultado binario de una operación AND a nivel
de los bits.

Ejemplos
Ejemplos básicos
Devuelve "2" (00110010), el resultado de una operación AND de 3 (00110011) y 6 (00110110) a nivel de
los bits:

MASK("3"; "6")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 605 de 898


Comandos

Observaciones
Cuándo usar MASK( )
Utilice MASK( ) para identificar patrones de bits específicos en un byte de datos, lo cual incluye si un bit en
particular está ajustado en 1 o no.

Cómo funciona
La función MASK( ) realiza una operación AND a nivel de los bits sobre las representaciones binarias de
los primeros caracteres de valor_de_carácter y máscara_de_carácter. Los dos bytes de comparación se
comparan de un bit por vez, lo cual arroja un tercer valor binario.
El resultado de cada comparación de bits correspondientes es 1 o 0:

bit de valor_de_carácter bit de máscara_de_carácter Resultado

0 0 0

0 1 0

1 0 0

1 1 1

Cadenas de comparación más extensas que un byte


Si alguna de las cadenas de comparación es mayor a un byte, los caracteres subsiguientes se ignoran.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 606 de 898


Comandos

Función MATCH( )
Devuelve un valor lógico que indica si el valor especificado coincide con alguno de los valores con los que
se lo compara.

Sintaxis
MATCH(valor_de_comparación; prueba <;...n>)

Parámetros
Nombre Tipo Descripción

valor_comparación carácter El campo, la expresión o el valor literal que se debe probar en busca
de coincidencias.
numérico
fechahora

prueba <;...n> carácter Cualquier campo, expresión o valor literal que desee comparar con el
valor_de_comparación.
numérico
Puede especificar tantos valores de prueba como sea necesario, pero
fechahora
todos los valores especificados deben ser del mismo tipo de datos.

MATCH(valor_comparación; `20140930`; `20141030`)

Nota
Los valores de entrada de la función MATCH( ) pueden ser datos de carácter, numéricos o
de fechahora. No es posible mezclar tipos de datos. Todos los valores de entrada deben
pertenecer a la misma categoría de datos.

Salida
Lógico. Devuelve T (verdadero) si se encuentra al menos una coincidencia, y F (falso) en caso contrario.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 607 de 898


Comandos

Ejemplos
Ejemplos básicos
Nota
Los valores que se devuelven para las comparaciones de caracteres asumen que SET
EXACT está OFF (el ajuste predeterminado), salvo cuando se especifique lo contrario.

Comprobación de valores literales


Devuelve T:

MATCH("ABC"; "BCD"; "CDE"; "AB")

Devuelve F:

MATCH(98; 99; 100; 101)

Comprobación de un campo
Devuelve T para todos los registros que contienen “Phoenix”, “Austin” o “Los Angeles” en el campo Ciu-
dad_proveedor. De lo contrario, devuelve F:

MATCH(Ciudad_proveedor; "Phoenix"; "Austin"; "Los Angeles")

Devuelve T para todos los registros que no contienen "Phoenix", "Austin" o "Los Angeles" en el campo
Ciudad_proveedor. De lo contrario, devuelve F:

NOT MATCH(Ciudad_proveedor; "Phoenix"; "Austin"; "Los Angeles")

Devuelve T para todos los registros que contienen "PHOENIX", "AUSTIN" o "LOS ANGELES" en el
campo Ciudad_proveedor, sin importar las mayúsculas y minúsculas de los caracteres del campo. De lo
contrario, devuelve F:
Los valores del campo Ciudad_proveedor se convierten a mayúsculas antes de que se comparen con los
nombres de las ciudades en mayúsculas.

MATCH(UPPER(Ciudad_proveedor); "PHOENIX"; "AUSTIN"; "LOS ANGELES")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 608 de 898


Comandos

Comprobación de varios campos


Devuelve T para todos los registros que contienen "Phoenix" en el campo Ciudad_proveedor, Ciudad o
Ciudad_2. De lo contrario, devuelve F:

MATCH("Phoenix"; Ciudad_proveedor; Ciudad; Ciudad_2)

Comportamiento de SET EXACT
Devuelve T para todos los registros con códigos de producto "A", "D" o "F" o códigos de producto que
comienzan con "A", "D" o "F" en el campo Código_de_producto. De lo contrario, devuelve F:

MATCH(Código_de_producto; "A"; "D"; "F")

Devuelve T para todos los registros con códigos de producto de un carácter "A", "D" o "F" en el campo
Código_de_producto. De lo contrario, devuelve F (SET EXACT debe estar activado en ON):

MATCH(Código_de_producto; "A"; "D"; "F")

Comparación de dos campos


Devuelve T para todos los registros que tienen domicilios idénticos de proveedor y empleado. De lo con-
trario, devuelve F:
Puede utilizar funciones adicionales para estandarizar el formato de los domicilios de los proveedores y los
empleados.

MATCH(Ciudad_proveedor; Domicilio_empleado)

Comparación de fechas
Devuelve T para todos los registros con una fecha de factura del 30 Sep 2014 o 30 Oct 2014. De lo con-
trario, devuelve F:

MATCH(Fecha_de_factura; `20140930`; `20141030`)

Ejemplos avanzados
Extracción de registros de inventario anómalos
Utilice la declaración IF y la función MATCH( ) para extraer los registros que contienen diferentes importes
en el campo Valor_inventario_al_costo y el campo calculado Costo_x_cantidad:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 609 de 898


Comandos

EXTRACT RECORD IF NOT MATCH(Valor_inventario_al_costo; Costo_x_cantidad) TO "Importes_


no_coincidentes"

Se están extrayendo los registros para los departamentos 101, 103 y 107
Utilice la instrucción IF y la función MATCH( ) para extraer únicamente los registros asociados con los
departamentos 101, 103 o 107:

EXTRACT RECORD IF MATCH(Dept; "101"; "103"; "107") TO "Tres_Departamentos"

Observaciones
Utilice MATCH( ) en lugar del operador OR
Puede utilizar la función MATCH( ) en lugar de expresiones que utilizan el operador OR.
Por ejemplo:

MATCH(Ciudad; "Phoenix"; "Austin"; "Los Angeles")

equivale a

Ciudad="Phoenix" OR Ciudad="Austin" OR Ciudad="Los Angeles"

Precisión decimal de los valores de entrada numéricos


Cuando los valores de entrada numéricos que se están comparando tienen una precisión diferente en
decimales, la comparación utiliza el nivel más elevado de precisión.
Devuelve T, porque 1.23 es igual a 1.23:

MATCH(1.23; 1.23; 1.25)

Devuelve F, porque 1.23 no es igual a 1.234 una vez que se tiene en cuenta el tercer lugar decimal:

MATCH(1.23; 1.234; 1.25)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 610 de 898


Comandos

Parámetros de caracteres
Coincidir mayúsc.-minúsc.
La función MATCH( ) diferencia entre mayúsculas y minúsculas cuando se utiliza con datos de caracteres.
Cuando compara caracteres, "a" no equivale a "A".
Devuelve F:

MATCH("a";"A";"B";"C")

Si está trabajando con datos que incluyen incoherencias entre mayúsculas y minúsculas, puede utilizar la
función UPPER( ) para convertir los valores a un uso coherente de mayúsculas antes de usar MATCH( ).
Devuelve T:

MATCH(UPPER("a"); UPPER("A"); UPPER("B"); UPPER("C"))

Coincidencia parcial
Se admite la coincidencia parcial para las comparaciones de caracteres. Cualquiera de los valores que se
están comparando puede estar contenido por el otro valor y eso se considerará una coincidencia.
Los siguientes dos ejemplos devuelven T:

MATCH("AB"; "ABC")

MATCH("ABC"; "AB")

Nota
El valor más corto debe aparecer al principio del valor más extenso para que exista una
coincidencia.

Coincidencia parcial y SET EXACT


La coincidencia parcial se activa cuando SET EXACT = OFF, que es el ajuste predeterminado de ACL. Si
SET EXACT = ON, la coincidencia parcial se desactiva y los valores de comparación deben coincidir de
manera exacta para que haya una coincidencia.
Los dos ejemplos anteriores son Falsos cuando SET EXACT está ON.
Si desea obtener más información acerca de SET EXACT (la opción Comparaciones de caracteres exac-
tos ), consulte "Comando SET" en la página 381.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 611 de 898


Comandos

Activación o desactivación de SET EXACT


Si desea asegurarse de que no se utilice la opción Comparaciones de caracteres exactos con la función
MATCH( ), compruebe que la opción no esté seleccionada en la ficha Tabla del cuadro de diálogo Opcio-
nes (Herramientas > Opciones ).
Si está usando un script, puede agregar el comando SET EXACT OFF antes de que aparezca la función
MATCH( ). Si es necesario, puede restaurar el estado previo con el comando SET EXACT ON.

Parámetros Fechahora
Un campo de fecha, fechahora u hora especificado como un valor de entrada de una función puede uti-
lizar cualquier formato de fecha, fechahora u hora, siempre que la definición del campo establezca correc-
tamente el formato.

Combinación de valores de entrada de fecha, fechahora y hora


No existen impedimentos para mezclar los valores de fecha, fechahora y hora en los valores de entrada
de la función MATCH( ), pero la mezcla de estos subtipos de Fechahora puede arrojar resultados que no
son significativos.
ACL utiliza equivalentes de números de serie para procesar los cálculos de fechahora, por lo que, incluso
si usted está interesado solo en la porción fecha de un valor de fechahora, la porción hora sigue formando
parte del cálculo.
Veamos los siguientes ejemplos:
Devuelve T, porque 31 de diciembre de 2014 coincide con el segundo valor de prueba:

MATCH(`20141231`;`20141229`;`20141231`)

Devuelve F, aun cuando el valor_de_comparación y el segundo valor de prueba tienen una fecha idéntica
de 31 de diciembre de 2014:

MATCH(`20141231 120000`;`20141229`;`20141231`)

Si nos fijamos en el número de serie equivalente de estas dos expresiones, podemos ver por qué la
segunda se evalúa como falsa.
Devuelve T, porque el número de serie valor_de_comparación es igual al segundo número de serie
prueba:

MATCH(42003.000000, 42001.000000; 42003.000000)

Devuelve F, porque el número de serie valor_de_comparación no es igual a ninguno de los valores de


prueba:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 612 de 898


Comandos

MATCH(42003.500000; 42001.000000; 42003.000000)

La porción de la fecha de los números de serie 42003.500000 y 42003.000000 coincide, pero la porción de
la hora no lo hace. 0.500000 es el número de serie que equivale a 12:00 PM.

Armonizar subtipos de Fechahora


Para evitar problemas que podrían surgir por la mezcla de subtipos de Fechahora, puede usar las fun-
ciones para armonizar los subtipos.
Por ejemplo, esta expresión, que utiliza los mismos valores iniciales que el segundo ejemplo anterior, se
evalúa como T en lugar de F:

MATCH(CTOD(DATE(`20141231 120000`;"YYYYMMDD");"YYYYMMDD");`20141229`;
`20141231`)

Especificar un valor de fecha, fechahora u hora literal


Al especificar un valor literal de fecha, fechahora u hora para cualquiera de los valores de entrada de una
función, solo puede utilizar los formatos de la siguiente tabla y debe encerrar el valor entre acentos graves;
por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 613 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

thhmmss `t235959`

Thhmm `T2359`

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 614 de 898


Comandos

Función MAXIMUM( )
Devuelve el valor máximo de un conjunto de valores numéricos o el valor más reciente de un conjunto de
valores de fechahora.

Sintaxis
MAXIMUM(valor_1; valor_2 <;...n>)

Parámetros
Nombre Tipo Descripción

valor_1, valor_2 numérico Los valores que se compararán, separados por comas.
<;...n>
fechahora Todos los valores debe deben ser del mismo tipo de datos.
Además, los valores de fechahora deben ser del mismo subtipo. No
es posible mezclar los valores de fecha, fechahora u hora en una
única ejecución de la función.

Salida
Numérico o Fechahora.

Ejemplos
Ejemplos básicos
Valor de entrada numérico literal
Devuelve 7:

MAXIMUM(4; 7)

Devuelve 8:

MAXIMUM(4; 7; 3; 8)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 615 de 898


Comandos

Returns 8,00:

MAXIMUM(4; 7,25; 3; 8)

Valor de entrada de fechahora literal


Devuelve `20161231`:

MAXIMUM(`20161231`; `20161229`; `20161230`)

Devuelve `20161231 23:59:59`:

MAXIMUM(`20161231 235959`; `20161229 235959`)

Devuelve `23:59:59`:

MAXIMUM(`0,235957`; `0,235959`; `0,235958`)

Valor de entrada del campo


Devuelve la fecha más reciente entre los tres campos para cada registro:

MAXIMUM(Fecha_PO; Fecha_factura; Fecha_pago)

Ejemplos avanzados
Creación de un campo calculado con un valor predeterminado mínimo
Si tiene una tabla de cuentas vencidas, cree un campo Vencimiento_de_interés que contenga un valor
predeterminado mínimo de $1,00:

DEFINE FIELD Vencimiento_de_interés COMPUTED MAXIMUM(BALANCE * ANNUAL_RATE; 1)

Si el saldo multiplicado por la tasa de interés es inferior a 1 dólar, MAXIMUM( ) devuelve 1. De lo con-
trario, MAXIMUM( ) devuelve el importe del interés calculado.

Descubrimiento de fechas que pasaron el final del trimestre


Para descubrir si alguna fecha entre campos múltiples pasó el fin del trimestre, cree un campo calculado
con una expresión como la siguiente:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 616 de 898


Comandos

DEFINE FIELD Trim_pasado COMPUTED MAXIMUM(Fecha_PO; Fecha_factura, Fecha_pago;


`20160331`)

l Los registros con todas las fechas hasta el 31 de marzo de 2016 o antes, devuelven 20160331.
l Los registros con una o más fechas después del 31 de marzo de 2016 devuelven la fecha más
reciente entre los tres campos.

Observaciones
Cómo funcionan los lugares decimales en conjuntos de valores numéricos
Si los dos valores numéricos que se están comparando no tienen la misma cantidad de lugares decimales,
el resultado se ajusta a la cantidad más grande de decimales.
Devuelve 20,400:

MAXIMUM(3,682; 10,88; 20,4)

Puede utilizar la función DECIMALS( ) para ajustar la cantidad de decimales para los parámetros valor.
Devuelve 20,40:

MAXIMUM(DECIMALS(3,682; 2);10,88; 20,4)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 617 de 898


Comandos

Función MINIMUM( )
Devuelve el valor mínimo de un conjunto de valores numéricos o el valor más antiguo de un conjunto de
valores de fechahora.

Sintaxis
MINIMUM(valor_1; valor_2 <;...n>)

Parámetros
Nombre Tipo Descripción

valor_1; valor_2<; numérico Los valores que se compararán, separados por comas.
...n>
fechahora Todos los valores debe deben ser del mismo tipo de datos.
Además, los valores de fechahora deben ser del mismo subtipo. No
es posible mezclar los valores de fecha, fechahora u hora en una
única ejecución de la función.

Salida
Numérico o Fechahora.

Ejemplos
Ejemplos básicos
Valor de entrada numérico literal
Devuelve 4:

MINIMUM(4; 7)

Devuelve 3:

MINIMUM(4; 7; 3; 8)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 618 de 898


Comandos

Devuelve 3,00:

MINIMUM(4; 7,25; 3; 8)

Valor de entrada de fechahora literal


Devuelve `20161229`:

MINIMUM(`20161231`; `20161229`; `20161230`)

Devuelve `20161229 23:59:59`:

MINIMUM(`20161231 235959`; `20161229 235959`)

Devuelve `23:59:57`:

MINIMUM(`0,235957`; `0,235959`; `0,235958`)

Valor de entrada del campo


Devuelve la fecha más antihua entre los tres campos para cada registro:

MINIMUM(Fecha_PO; Fecha_factura; Fecha_pago)

Ejemplos avanzados
Identificación del valor más bajo de varios campos
Cree un campo calculado para identificar el valor más bajo entre los campos Costo, Precio_venta y Pre-
cio_descuento, cree un campo calculado con la siguiente expresión:

DEFINE FIELD Valor_bajo COMPUTED MINIMUM(Costo; Precio_venta; Precio_descuento)

Descubrimiento de las fechas anteriores al inicio de unl trimestre


Para descubrir si alguna fecha entre campos múltiples es anterior al inicio de un trimestre, cree un campo
calculado con una expresión como la siguiente:

DEFINE FIELD Trim_anterior COMPUTED MINIMUM(Fecha_PO; Fecha_factura, Fecha_pago;


`20160101`)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 619 de 898


Comandos

l Los registros con todas las fechas posteriores al 01 de enero de 2016, inclusive, devuelven
`20160101`.
l Los registros con una o más fechas después del 01 de enero de 2016 devuelven la fecha más anti-
gua entre los tres campos.

Observaciones
Cómo funcionan los lugares decimales en conjuntos de valores numéricos
Si los dos valores numéricos que se están comparando no tienen la misma cantidad de lugares deci-
males, el resultado se ajusta a la cantidad más grande de decimales.
Devuelve 3,600:

MINIMUM(3,6; 10,88; 20,482)

Puede utilizar la función DECIMALS( ) para ajustar la cantidad de decimales para los parámetros valor.
Devuelve 3,60:

MINIMUM(3,6; 10,88; DECIMALS(20,482; 2))

La abreviatura MIN( )
En ACL Script, se puede utilizar la abreviatura MIN( ) para la función MINIMUM( ) a pesar de que no se
identifica de forma única la función, que es el requisito normal cuando se abrevian nombres de funciones.
MIN( ) también podría ser una abreviatura de MINUTE( ); sin embargo ACL reserva la abreviatura MIN( )
para la función MINIMUM( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 620 de 898


Comandos

Función MINUTE( )
Extrae los minutos de una hora o fechahora especificada y la devuelve como un valor numérico.

Sintaxis
MINUTE(hora/fechahora)

Parámetros
Nombre Tipo Descripción

hora/fechahora fechahora El campo, expresión o el valor literal de donde extraer los minutos.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 59:

MINUTE(`t235930`)

MINUTE(`20141231 235930`)

Devuelve los minutos para cada valor del campo Hora_inicio_llamada:

MINUTE(Hora_inicio_llamada)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 621 de 898


Comandos

Observaciones
Abreviatura de MINUTE( ) en scripts
En ACLScript, si abrevia la función MINUTE( ), debe utilizar por lo menos las cuatro primeras letras
(MINU). ACL reserva la abreviatura MIN para la función MINIMUM( ).

Detalles del parámetro


Un campo especificado para hora/fechahora puede utilizar cualquier formato de hora o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.
Especificar un valor de fechahora u hora literal
Al especificar un valor literal de hora o fechahora para hora/fechahora, solo puede utilizar los formatos de
la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231 235959`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de
fechas u horas.
l Valores de hora: puede utilizar cualquiera de los formatos de la siguiente tabla. Debe utilizar un
separador antes de un valor de la hora independiente para que la función opere correctamente.
Los separadores válidos son la letra 't' o la letra 'T'. Debe especificar las horas con el reloj de 24
horas. Los desplazamientos respecto del Horario Universal Coordinado (UTC, por sus siglas en
inglés) deben ir precedidos de un signo más (+) o un signo menos (-).
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y
hora de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre
las dos. Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.

Formatos de ejemplo Valores literales de ejemplo

thhmmss `t235959`

Thhmm `T2359`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 622 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 623 de 898


Comandos

Función MOD( )
Devuelve el resto de la división de dos números.

Sintaxis
MOD(número; número_divisor)

Parámetros
Nombre Tipo Descripción

número numérico El número para dividir.

número_divisor numérico El número entre el cual se dividirá número.


Si número o número_divisor, o ambos valores, incluyen decimales,
la salida tiene la misma precisión decimal que el valor de entrada
con el mayor número de posiciones decimales. Por ejemplo, la
salida para MOD(45,35; 5,3) es "2,95".

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 3:

MOD(93; 10)

Devuelve 2,0:

MOD(66; 16,00)

Devuelve 3,45:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 624 de 898


Comandos

MOD(53,45; 10)

Ejemplos avanzados
Cálculo de una fecha aniversario
Define un campo que muestra la cantidad de meses desde el último aniversario:

DEFINE FIELD Meses_desde_último_aniversario COMPUTED MOD(Meses_de_servicio; 12)

Observaciones
Cuándo usar MOD( )
Utilice la función MOD( ) esta función para probar si dos números pueden dividirse de manera exacta o ais-
lar el resto de un cálculo de división. Esta función divide un número entre otro y devuelve el resto.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 625 de 898


Comandos

Función MONTH( )
Extrae el mes de una fecha o fechahora especificada y lo devuelve como un valor numérico (1 a 12).

Sintaxis
MONTH(fecha/fechahora)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o el valor literal de donde extraer el mes.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 12:

MONTH(`20141231`)

MONTH(`20141231 235959`)

Devuelve el mes para cada valor del campo Fecha_de_factura:

MONTH(Fecha_de_factura)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 626 de 898


Comandos

Observaciones
Detalles del parámetro
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos de
la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 627 de 898


Comandos

Funciones relacionadas
Si necesita devolver el nombre del mes del año, utilice la función CMOY( ) en lugar de MONTH( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 628 de 898


Comandos

Función NOMINAL( )
Devuelve la tasa de interés anual nominal de un préstamo.

Sintaxis
NOMINAL(tasa_efectiva; períodos)

Parámetros
Nombre Tipo Descripción

tasa_efectiva numérico La tasa de interés efectiva anual.

períodos numérico La cantidad de períodos compuestos por año.


Nota
Especifique un entero. Si especificó una porción deci-
mal, se trunca.

Salida
Numérico. La tasa se calcula a lugares de ocho decimales.

Ejemplos
Ejemplos básicos
Devuelve 0,17998457 (18 %), la tasa de interés nominal anual sobre el saldo impago de una tarjeta de cré-
dito que cobra una tasa anual efectiva del 19,56 %:

NOMINAL(0,1956; 12)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 629 de 898


Comandos

Observaciones
¿Qué es la tasa de interés nominal?
La tasa de interés nominal anual de un préstamo es la tasa de interés estipulada o publicada, sin tener en
cuenta el interés sobre el saldo restante, compuesto mensualmente o diariamente.

Funciones relacionadas
La función EFFECTIVE( ) es la inversa de la función NOMINAL( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 630 de 898


Comandos

Función NORMDIST( )
Devuelve la probabilidad de que una variable aleatoria de un conjunto de datos normalmente distribuidos
sea menor que o igual a un valor especificado o que sea exactamente igual a un valor especificado.

Sintaxis
NORMDIST(x; media; desviación_estándar; acumulado)

Parámetros
Nombre Tipo Descripción

x numérico El valor para el que desea calcular la probabilidad.

media numérico El valor de la media del conjunto de datos.

desviación_estándar numérico La desviación estándar del conjunto de datos. El valor de desviación_


estándar debe ser superior a 0.

acumulado lógico Especifique T para calcular la probabilidad de que una variable alea-
toria sea inferior o igual a x (probabilidad acumulada) o F para cal-
cular la probabilidad de que una variable aleatoria sea exactamente
igual a x (probabilidad simple).

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 0,908788780274132:

NORMDIST(42; 40; 1,5; T)

Devuelve 0,109340049783996:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 631 de 898


Comandos

NORMDIST(42; 40; 1,5; F)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 632 de 898


Comandos

Función NORMSINV( )
Devuelve el puntaje z asociado con una probabilidad especificada en una distribución normal estándar. El
puntaje z es la cantidad de desviaciones estándar entre un valor y la media de una distribución normal
estándar.

Sintaxis
NORMSINV(probabilidad)

Parámetros
Nombre Tipo Descripción

probabilidad numérico La probabilidad para la que desea calcular el puntaje z.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 1,333401745213610:

NORMSINV(0,9088)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 633 de 898


Comandos

Función NOW( )
Devuelve la hora actual del sistema operativo como un tipo de datos de fechahora.

Sintaxis
NOW()

Parámetros
Esta función no tiene ningún parámetro.

Salida
Fechahora.

Ejemplos
Ejemplos básicos
Devuelve la hora actual del sistema operativo se devuelve como un valor fechahora (por ejemplo,
`t235959`) y lo muestra utilizando el formato de visualización de la hora actual de ACL.

NOW()

Observaciones
Funciones relacionadas
Si necesita devolver la hora actual del sistema operativo como una cadena de caracteres, utilice TIME( 
) en lugar de NOW( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 634 de 898


Comandos

Función NPER( )
Devuelve la cantidad de períodos necesarios para cancelar un préstamo.

Sintaxis
NPER(tasa; pago; cantidad <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

pago numérico El pago por período.

cantidad numérico La cantidad de capital del préstamo.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 300,00, el número de meses necesarios para pagar un préstamo de $275.000 con un interés de
6,5 % anual, y pagos de $1.856,82 que vencen a fin de cada mes:

NPER(0,065/12; 1856,82; 275000; 0)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 635 de 898


Comandos

Devuelve 252,81, el número de meses necesarios para pagar el mismo préstamo con pagos de $2.000
que vencen a fin de cada mes:

NPER(0,065/12; 2000; 275000; 0)

Devuelve 249,92, el número de meses necesarios para pagar el mismo préstamo con pagos de $2.000
que vencen a fin de cada mes:

NPER(0,065/12; 2000; 275000; 1)

Ejemplos avanzados
Cálculos de las anualidades
Los cálculos de las anualidades involucran cuatro variables:
l valor presente o valor futuro: en los ejemplos siguientes, $21,243.39 y $ 26,973.46
l importe de pago por período: en los ejemplos siguientes, $1,000.00
l tasa de interés por período: en los ejemplos siguientes, 1% mensual
l cantidad de períodos: en los ejemplos siguientes, 24 meses
Si conoce el valor de tres de las variables, puede utilizar una función de ACL para calcular el cuarto valor.

Si desea determinar: Función de ACL que debe usar:

PVANNUITY( )
Devuelve 21243.39:

PVANNUITY(0.01; 24; 1000)


Valor presente

FVANNUITY( )
Devuelve 26973.46:

FVANNUITY(0.01; 24; 1000)


Valor futuro

PMT( )
Devuelve 1000:

PMT(0.01; 24; 21243.39)


Importe de pago por período

RATE( )
Tasa de interés por período Devuelve 0.00999999 (1%):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 636 de 898


Comandos

Si desea determinar: Función de ACL que debe usar:

RATE(24; 1000; 21243.39)

NPER( )
Devuelve 24.00:

NPER(0.01; 1000; 21243.39)


Número de períodos

Fórmulas para la anualidad


La fórmula para calcular el valor presente de una anualidad ordinaria (pago al final de un período):

La fórmula para calcular el valor futuro de una anualidad ordinaria (pago al final de un período):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 637 de 898


Comandos

Función OCCURS( )
Devuelve un recuento del número de veces que aparece una subcadena en un valor de caracteres espe-
cificado.

Sintaxis
OCCURS(cadena; buscar)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para buscar.


Puede concatenar dos o más campos si desea buscar en más de un
campo de una tabla:

OCCURS(Nombre+Apellido;"John")

buscar carácter El valor que se debe buscar. La búsqueda distingue entre mayús-
culas y minúsculas.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 2:

OCCURS("abc/abc/a";"ab")

Devuelve 3:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 638 de 898


Comandos

OCCURS("abc/abc/a";"a")

Devuelve la cantidad de veces que aparece un guion en cada valor del campo Número_de_factura:

OCCURS(Número_de_factura; "-")

Ejemplos avanzados
Buscar números de factura con más de un guion
Si los números de factura solo deben tener un guion, utilice la función OCCURS( ) para crear un filtro que
aísle los números de factura que tienen dos o más guiones:

SET FILTER TO OCCURS(Número_de_factura; "-") > 1

Buscar instancias del valor de un campo en otro campo


Utilice OCCURS( ) para encontrar instancias del valor de un campo en otro campo. Por ejemplo, podría
crear un filtro que aísle registros en los que aparezcan valores de Apellido en el campo Nombre_completo:

SET FILTER TO OCCURS(Nombre_completo; ALLTRIM(Apellido)) = 1

Al incluir la función ALLTRIM( ) en la expresión, se quitan los espacios iniciales o finales del campo
Apellido, lo cual permite asegurarse de comparar únicamente los valores de texto.

Realizar búsquedas con distinción entre mayúsculas y minúsculas


A diferencia de la función FIND( ), la función OCCURS( ) distingue entre mayúsculas y minúsculas, lo cual
permite realizar búsquedas en las que se diferencien las mayúsculas de las minúsculas.
La siguiente expresión aísla todos los registros que contienen el nombre "UNITED EQUIPMENT", en
mayúsculas, en el campo Nombre_proveedor, mientras que ignora las instancias de "United Equipment".

SET FILTER TO OCCURS(Nombre_proveedor; "UNITED EQUIPMENT") > 0

Si desea encontrar todas las instancias de "United Equipment" sin importar el uso de mayúsculas o minús-
culas, utilice la función UPPER( ) para convertir los valores del campo de búsqueda en mayúsculas:

SET FILTER TO OCCURS(UPPER(Nombre_proveedor); "UNITED EQUIPMENT") > 0

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 639 de 898


Comandos

Función OFFSET( )
Devuelve el valor de un campo con el desplazamiento de la posición inicial por un número especificado de
bytes.

Sintaxis
OFFSET(campo; número_de_bytes)

Parámetros
Nombre Tipo Descripción

campo carácter Un nombre de campo.


numérico
fechahora

número_de_bytes numérico Cualquier expresión numérica positiva.

Salida
El valor devuelto es el mismo tipo de datos que el del parámetro de entrada campo.

Ejemplos
Ejemplos básicos
Si tiene un campo denominado "Número" que contenga el valor "1234567890" y define un campo super-
puesto, llamado "Número_desplazado" que tiene una posición inicial de 1, una longitud de 3 y sin posi-
ciones decimales, puede utilizar la función OFFSET( ) para cambiar los números del campo.
Devuelve 123:

OFFSET(Número_desplazado;0)

Devuelve 234:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 640 de 898


Comandos

OFFSET(Número_desplazado;1)

Devuelve 789:

OFFSET(Número_desplazado;6)

Observaciones
Puede utilizar esta función para desplazar temporalmente la posición inicial de un campo. Resulta útil
cuando procesa datos en donde la posición inicial del campo es variable.
Si utiliza la función OFFSET( ) con campos calculados condicionales, cualquier campo al que se haga refe-
rencia en la prueba Si también se desplazará.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 641 de 898


Comandos

Función OMIT( )
Devuelve una cadena con una o varias subcadenas especificadas eliminadas.

Sintaxis
OMIT(cadena1; cadena2 <;coincidir_mayúsc./minúsc.>)

Parámetros
Nombre Tipo Descripción

cadena1 carácter La cadena de donde se debe eliminar una o más subcadenas.

cadena2 carácter Una o más subcadenas para eliminar.


o Utilice punto y comas para separar varias subcadenas.
o Use un espacio después del punto y coma solo si es parte de la
subcadena que desea eliminar.
o Si el carácter de comilla doble está presente en cualquiera de las
subcadenas, encierre todo el parámetro cadena2 entre comillas
simples (' ') en lugar de utilizar comillas dobles.
o Para omitir un punto y coma, coloque un solo punto y coma al
final de la lista de subcadenas, seguida inmediatamente por las
comillas de cierre (consulte el último ejemplo más abajo).

coincidir_mayús- lógico Especifique T para hacer que las subcadenas distingan entre mayús-
c./minúsc. culas de minúsculas o F para ignorar si es mayúscula o minúscula.
opcional Si se omite coincidir_mayúsc./minúsc., se utiliza el valor pre-
determinado T.

Salida
Carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 642 de 898


Comandos

Ejemplos
Ejemplos básicos
Valor de entrada de caracteres literales
Devuelve "Intercity Couriers":

OMIT("Intercity Couriers Corporation"; " Corporation, Corp.")

Devuelve "Inter-city Couriers":

OMIT("Inter-city Couriers Corp."; " Corporation, Corp.")

Nota
La distancia de Levenshtein entre los valores devueltos en los primeros dos ejemplos es 1.
Si no se eliminan los elementos genéricos, la distancia entre los dos ejemplos es 8, lo cual
podría permitir que los valores escapen a la detección como duplicados inexactos.

Valor de entrada del campo


Devuelve todos los valores del campo Nombre_proveedor con los elementos genéricos como "Cor-
poration" e "Inc." eliminados:

OMIT(Nombre_proveedor;" Corporación, Corp., Corp, Inc., Inc. Ltd., Ltd")

Devuelve todos los valores del campo Nombre_proveedor con los elementos genéricos como "Cor-
poration" e "Inc." eliminados:

OMIT(Nombre_proveedor;" ,.,Corporation,Corp,Inc,Ltd")

Nota
Los dos ejemplos anteriores devuelven los mismos resultados pero la sintaxis del segundo
ejemplo es más eficiente.
Devuelve todos los valores del campo Nombre_proveedor con "Corporation" y "Corp" eliminados, y con
todas las comas eliminadas:

OMIT(Nombre_proveedor;" Corporation, Corp,")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 643 de 898


Comandos

Observaciones
OMIT( ) puede eliminar las subcadenas como unidades
La función OMIT( ) elimina una o más subcadenas de una cadena. Difiere de las funciones como CLEAN
( ), EXCLUDE( ), INCLUDE( ) y REMOVE( ) porque coincide y elimina caracteres por subcadenas en
lugar de carácter por carácter, lo que le permite quitar palabras específicas, abreviaturas o secuencias
repetidas de caracteres de una cadena sin afectar el resto de la cadena.

Una función auxiliar para comparaciones de valores inexactos


OMIT( ) puede mejorar la efectividad de las funciones LEVDIST( ) o ISFUZZYDUP( ), o el comando
FUZZYDUP, al quitar elementos genéricos como "Corporación" o "Inc." de los valores del campo. La eli-
minación de elementos genéricos se centra en las comparaciones de cadena realizadas por LEVDIST( ),
ISFUZZYDUP( ) y FUZZYDUP únicamente en la parte de las cadenas donde se puede producir una dife-
rencia importante.

De qué manera afecta los resultados el orden de las subcadenas


Si especifica varias subcadenas para su eliminación, el orden en que las enumera en el parámetro cade-
na2 puede afectar los resultados de salida.
Cuando se procesa la función OMIT( ), se elimina la primera subcadena de todos los valores que la con-
tienen, luego se elimina la segunda subcadena de todos los valores que la contienen y así sucesivamente.
Si una subcadena forma parte de otra subcadena (por ejemplo, "Corp" y "Corporación") la eliminación de
la subcadena más corta primero también altera los valores que contienen la subcadena más larga ("Cor-
poration" se convierte en "oration") y esto impide que se encuentre la subcadena más larga.
Para evitar esta situación, especifique las subcadenas más largas antes de cualquier subcadena más
corta que contengan. Por ejemplo:

OMIT(Nombre_proveedor;" Corporation, Corp,")

Intente eliminar primero los caracteres especiales


Puede especificar subcadenas de carácter único, como signos de puntuación, caracteres especiales y un
espacio en blanco, lo cual reduce aún más el material genérico en las cadenas. Puede ser más eficaz eli-
minar un carácter solo primero, como un punto o un espacio en blanco, lo cual reduce el número de varia-
ciones en las subcadenas que posteriormente deberá especificar. Compare el tercer y cuarto ejemplo a
continuación. Ambos devuelven los mismos resultados, pero el cuarto ejemplo es más eficiente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 644 de 898


Comandos

Trabajo con los espacios o lugares en blanco


Los espacios en blanco o espacios en las subcadenas son tratados como cualquier otro carácter. Debe
especificar explícitamente cada espacio en blanco que desea eliminar como parte de una subcadena; por
ejemplo, si se especifica un signo & sin espacios ("&"), "Ricoh Sales & Service" se convierte en "Ricoh
Sales  Service". Si incluye espacios en blanco (" & "), "Ricoh Sales & Service" se convierte en "Ricoh Sale-
sService".
Si especifica un espacio en blanco que no forma parte de la subcadena, no se encontrará la subcadena;
por ejemplo, si especifica un signo & con espacios (" & "), “Ricoh Sales&Service” no sufre ningún cambio.
Al utilizar punto y coma para separar varias subcadenas, debe colocar un espacio detrás del punto y coma
únicamente si corresponde a la subcadena real que desea eliminar.
Un enfoque para hacer frente a los espacios en blanco es eliminar todos los espacios en blanco de un
campo en primer lugar, mediante la especificación de un espacio en blanco como una subcadena de un
solo carácter antes de especificar cualquier otra subcadena.

Revisión de los resultados que se obtienen con el uso de OMIT( )


Después de utilizar OMIT( ) para crear un campo calculado, revise el contenido del campo para confirmar
que no ha omitido por error porciones significativas de cadenas. Por ejemplo, al omitirse "Co" se deshace
de una abreviatura común para "Compañía", pero también elimina las letras "Co" de dos ubicaciones en
"Coca-Cola".

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 645 de 898


Comandos

Función PACKED( )
Devuelve datos numéricos convertidos al tipo de dato Compactado.

Sintaxis
PACKED(número; longitud_del_resultado)

Parámetros
Nombre Tipo Descripción

número numérico El valor numérico o campo para convertir.

longitud_del_resul- numérico La cantidad de bytes que se usarán en la cadena de salida.


tado

Salida
Numérico.

Ejemplos
Ejemplos básicos
Valor de entrada entero y decimal
Devuelve 00075C:

PACKED(75; 3)

PACKED(7,5; 3)

Dígitos truncados en la salida


Devuelve 00000012456D:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 646 de 898


Comandos

PACKED(-12,456; 6)

Devuelve 456D:

PACKED(-12,456; 2)

Ejemplos avanzados
Creación de un campo de 8 bytes para actualizar un mainframe
Debe crear un campo de 8 bytes que contenga el salario de cada empleado como un número compactado
(PACKED) para cargarlo a un mainframe:

EXTRACT PACKED(SALARY; 8) AS "Exportar_salario" TO "exportar"

Observaciones
¿Qué son los datos Compactados?
El tipo de dato Compactado es utilizado por los sistemas operativos de mainframe para almacenar valores
numéricos en un formato que utiliza espacio de almacenamiento mínimo. El tipo de dato Compactado alma-
cena dos dígitos en cada byte, y el último byte indica si el valor es positivo o negativo.

Cuándo usar PACKED( )


Utilice la función PACKED( ) para convertir datos numéricos en el formato Compactado para exportar a sis-
temas de mainframe.

Valores de retorno truncados


Si el valor longitud_del_resultado es más corto que la longitud del valor número, los dígitos adicionales se
truncan.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 647 de 898


Comandos

Función PI( )
Devuelve el valor de pi con 15 lugares decimales.

Sintaxis
PI( )

Parámetros
Esta función no tiene ningún parámetro.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 3,141592653589793 (el valor de pi con 15 lugares decimales):

PI( )

Devuelve 1,047197551196598 (el equivalente de 60 grados en radianes):

60 * PI( )/180

Ejemplos avanzados
Uso de grados como información de entrada
Devuelve 0,866025403784439 (el seno de 60 grados):

SIN(60 * PI( )/180)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 648 de 898


Comandos

Observaciones
Cuándo usar PI( )
Utilice PI( ) para convertir los grados en radianes: (grados * PI( )/180) = radianes. Los radianes son la
entrada necesaria para tres de las funciones matemáticas de ACL: SIN( ), COS( ) y TAN( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 649 de 898


Comandos

Función PMT( )
Devuelve el importe del pago periódico (capital + interés) necesario para cancelar un pago.

Sintaxis
PMT(tasa; períodos; cantidad <;tipo)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos de pago.

cantidad numérico La cantidad de capital del préstamo.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa
y 2 para los períodos

Salida
Numérico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 650 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve 1856,82, el pago mensual (capital inicial + interés) necesario para pagar un préstamo de
$275.000 a 25 años e intereses del 6,5 % anual, con pagos que vencen a fin de mes:

PMT(0,065/12; 12*25; 275000; 0)

Devuelve 1846,82, el pago mensual (capital inicial + interés) necesario para pagar el mismo préstamo, con
pagos que vencen a principio de mes:

PMT(0,065/12; 12*25; 275000; 1)

Ejemplos avanzados
Cálculos de las anualidades
Los cálculos de las anualidades involucran cuatro variables:
l valor presente o valor futuro: en los ejemplos siguientes, $21,243.39 y $ 26,973.46
l importe de pago por período: en los ejemplos siguientes, $1,000.00
l tasa de interés por período: en los ejemplos siguientes, 1% mensual
l cantidad de períodos: en los ejemplos siguientes, 24 meses
Si conoce el valor de tres de las variables, puede utilizar una función de ACL para calcular el cuarto valor.

Si desea determinar: Función de ACL que debe usar:

PVANNUITY( )
Devuelve 21243.39:

PVANNUITY(0.01; 24; 1000)


Valor presente

FVANNUITY( )
Devuelve 26973.46:

FVANNUITY(0.01; 24; 1000)


Valor futuro

PMT( )
Importe de pago por período Devuelve 1000:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 651 de 898


Comandos

Si desea determinar: Función de ACL que debe usar:

PMT(0.01; 24; 21243.39)

RATE( )
Devuelve 0.00999999 (1%):

RATE(24; 1000; 21243.39)


Tasa de interés por período

NPER( )
Devuelve 24.00:

NPER(0.01; 1000; 21243.39)


Número de períodos

Fórmulas para la anualidad


La fórmula para calcular el valor presente de una anualidad ordinaria (pago al final de un período):

La fórmula para calcular el valor futuro de una anualidad ordinaria (pago al final de un período):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 652 de 898


Comandos

Función PPMT( )
Devuelve el capital pagado sobre un prestamo durante un único período.

Sintaxis
PPMT(tasa; período_especificado; períodos, cantidad <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

período_espe- numérico El período para el cual desea conocer el pago del capital.
cificado

períodos numérico El número total de períodos de pago.

cantidad numérico La cantidad de capital del préstamo.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa y
2 para los períodos

Salida
Numérico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 653 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve 367,24, el capital pagado durante el primer mes de un préstamo de $275.000 a 25 años e inte-
reses del 6,5 % anual, con pagos que vencen a fin de mes:

PPMT(0,065/12; 1; 12*25; 275000; 0)

Devuelve 1846,82, el capital pagado por el mismo préstamo en el último mes del préstamo:

PPMT(0,065/12; 300; 12*25; 275000; 0)

Observaciones
Funciones relacionadas
La función IPMT( ) es el complemento de la función PPMT( ).
La función CUMPRINC( ) calcula el capital pagado durante un intervalo de períodos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 654 de 898


Comandos

Función PROPER( )
Devuelve una cadena donde el primer carácter de cada palabra está en mayúsculas y el resto de los carac-
teres, en minúsculas.

Sintaxis
PROPER(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para convertir en mayúsculas y minúsculas, según corres-


ponda.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "Pedro Pérez":

PROPER("PEDRO PÉREZ")

Devuelve "Pedro Pérez":

PROPER("pedro pérez")

Devuelve "1550 Alberni St.":

PROPER("1550 ALBERNI st.")

Devuelve "Bill O'Hara":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 655 de 898


Comandos

PROPER("BILL O'HARA")

Devuelve todos los valores del campo Nombre_compañía convertidos a mayúsculas o minúsculas,
según corresponda:

PROPER(Nombre_compañía)

Observaciones
Cómo funciona
La función PROPER( ) convierte el primer carácter de la cadena y cualquier carácter posterior precedido
por un espacio en blanco, en mayúsculas.
Los caracteres posteriores precedidos por un guion, un apóstrofe, el signo & y otros signos de puntuación
y caracteres especiales también se convierten a mayúsculas. Todos los demás caracteres alfabéticos se
convierten a minúsculas.

Cuándo usar PROPER( )


El uso más común de PROPER( )para esta función es convertir los nombres almacenados en el origen de
los datos en el formato adecuado de mayúsculas o minúsculas para que el nombre se muestre correc-
tamente en un modelo de carta o reporte.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 656 de 898


Comandos

Función PROPERTIES( )
Devuelve información de propiedades para el elemento de proyecto de ACL.

Sintaxis
PROPERTIES(nombre; tipo_obj; tipo_info)

Parámetros
Nombre Tipo Descripción

nombre carácter El nombre del elemento de proyecto de ACL acerca del cual desea
obtener información. El nombre no distingue entre mayúsculas y
minúsculas.
Si el elemento del proyecto es una tabla de ACL, especifique el nom-
bre del formato de tabla, no el nombre del archivo de datos. Por ejem-
plo: "Facturas", no "facturas_de_enero.fil".
Si está utilizando la función PROPERTIES( ) para obtener el nombre
de la tabla activa, especifique el nombretabla_activa.

tipo_obj carácter El tipo de elemento del proyecto de ACL al que se hace referencia
con nombre.
Nota
Actualmente, "tabla" es el único tipo de elemento de pro-
yecto que se admite.

tipo_info carácter El tipo de información que desea acerca del elemento de proyecto de
ACL.
Si desea obtener más información, consulte "Tipos de información de
propiedades" en la página 659.

Salida
Carácter. La longitud máxima de la cadena de salida es 260 caracteres. Si no se puede encontrar la infor-
mación de propiedades, se devuelve una cadena vacía.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 657 de 898


Comandos

Ejemplos
Ejemplos básicos
Información acerca del archivo de datos de ACL (.fil)
Devuelve "Trans_Cp.fil":

PROPERTIES("Trans_Cp"; "tabla"; "nombre_de_archivo")

Devuelve "C:\ACL DATA\Archivos de datos de muestra":

PROPERTIES("Trans_Cp"; "tabla"; "ruta_al_archivo")

Información acerca de la tabla de ACL abierta


Devuelve "Trans_CP":

PROPERTIES("tabla_activa"; "tabla"; "abierta")

Información acerca del origen de datos externo


Devuelve "Trans_Mayo.xls":

PROPERTIES("Trans_Mayo"; "tabla"; "nombre_de_origen")

Devuelve "C:\Datos del Proyecto\Facturas mensuales_Excel":

PROPERTIES("Trans_Mayo"; "tabla"; "ruta_de_origen")

Devuelve "EXCEL":

PROPERTIES("Trans_Mayo"; "tabla"; "tipo_de_origen")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 658 de 898


Comandos

Observaciones
Información del archivo.
Los tipos de información que comienzan con "archivo" ofrecen información acerca del archivo de datos de
ACL (.fil) asociado con una tabla de ACL.

Información de origen
Los tipos de información que comienzan con "origen" ofrecen información acerca de los orígenes de datos
externos que se pueden asociar con una tabla de ACL. Solo los orígenes de datos externos que admiten la
actualización de una tabla de ACL se pueden reportar con el uso de la función PROPERTIES( ):
l Microsoft Excel
l Microsoft Access
l Texto delimitado
l Adobe Acrobat (PDF)
l Imagen de impresión (reporte)
l Formato de archivo SAP privado / DART
l XML
l XBRL
l Orígenes de datos ODBC

Tipos de información de propiedades


En la tabla que se incluye a continuación, se indican los tipos de información de propiedades que se pueden
obtener con la función PROPERTIES( ). Las tablas de ACL son los únicos elementos de proyecto de ACL
que se pueden utilizar actualmente con la función PROPERTIES( ):

tipo_
obj tipo_info Devuelve:

"tabla" "nombre_de_ El nombre del archivo de datos asociado con la tabla de ACL.
archivo"

"ruta_al_ La ruta del archivo de datos asociado con la tabla de ACL.


archivo"

"tamaño_del_ El tamaño, en KB, del archivo de datos asociado con la tabla de ACL.
archivo"

"archivo_modi- La fecha y la hora en la que se modificó por última vez el archivo de datos asociado con la
ficado_el" tabla de ACL.

"nombre_del_ El nombre del origen de datos asociado con la tabla de ACL.


origen"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 659 de 898


Comandos

tipo_
obj tipo_info Devuelve:

Los orígenes de datos pueden ser archivos externos, como Excel, Access, PDF, XML, archi-
vos de texto delimitado u orígenes de datos ODBC.

"ruta de ori- La ruta del origen de los datos asociados con la tabla de ACL.
gen"
No se admite para orígenes de datos ODBC.

"tipo_del_ori- El tipo de origen de los datos asociado con la tabla de ACL.


gen"

"tamaño_del_ El tamaño, en KB, del origen de los datos asociados con la tabla de ACL.
origen"
No se admite para orígenes de datos ODBC.

"origen_modi- La fecha y la hora en la que se modificó por última vez el origen de los datos asociados
ficado_el" con la tabla de ACL.
No se admite para orígenes de datos ODBC.

"abierto/a" El nombre de la tabla de ACL activa en este momento.


Nota
Puede haber varias tablas de ACL abiertas al mismo tiempo, pero en la
interfaz de usuario puede haber únicamente una tabla activa por vez.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 660 de 898


Comandos

Función PVANNUITY( )
Devuelve el valor presente de una serie de pagos futuros que se calculan utilizando una tasa de interés
constante. El valor presente es el valor de suma global, actual.

Sintaxis
PVANNUITY(tasa; períodos; pago <;tipo>)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos de pago.

pago numérico El pago por período.


El importe del pago debe ser constante durante el período de validez
de la renta vitalicia.

tipo numérico El momento de los pagos:


opcional o 0: pago al final de un período
o 1: pago al principio de un período
Si se omite, se utiliza el valor predeterminado 0.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa, los períodos y el pago a fin
de asegurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para un pago mensual en una inversión o un préstamo a dos años, con un interés del
5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para un pago anual del mismo préstamo o inversión, especifique 0.05 para la tasa y
2 para los períodos

Salida
Numérico. El resultado se calcula con dos lugares decimales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 661 de 898


Comandos

Ejemplos
Ejemplos básicos
Pagos mensuales
Devuelve 21455,82, el valor presente de $1.000 pagado al inicio de cada mes durante 2 años al 1 % men-
sual, compuesto mensualmente:

PVANNUITY(0,01; 2*12; 1000; 1)

Pagos anuales
Devuelve 20280,61, el valor presente de $12.000 pagado al final de cada año durante dos años al 12 %
anual, compuesto anualmente:

PVANNUITY(0,12; 2; 12000; 0)

Ejemplos avanzados
Cálculos de las anualidades
Los cálculos de las anualidades involucran cuatro variables:
l valor presente o valor futuro: en los ejemplos siguientes, $21,243.39 y $ 26,973.46
l importe de pago por período: en los ejemplos siguientes, $1,000.00
l tasa de interés por período: en los ejemplos siguientes, 1% mensual
l cantidad de períodos: en los ejemplos siguientes, 24 meses
Si conoce el valor de tres de las variables, puede utilizar una función de ACL para calcular el cuarto valor.

Si desea determinar: Función de ACL que debe usar:

PVANNUITY( )
Devuelve 21243.39:

PVANNUITY(0.01; 24; 1000)


Valor presente

FVANNUITY( )
Devuelve 26973.46:

FVANNUITY(0.01; 24; 1000)


Valor futuro

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 662 de 898


Comandos

Si desea determinar: Función de ACL que debe usar:

PMT( )
Devuelve 1000:

PMT(0.01; 24; 21243.39)


Importe de pago por período

RATE( )
Devuelve 0.00999999 (1%):

RATE(24; 1000; 21243.39)


Tasa de interés por período

NPER( )
Devuelve 24.00:

NPER(0.01; 1000; 21243.39)


Número de períodos

Fórmulas para la anualidad


La fórmula para calcular el valor presente de una anualidad ordinaria (pago al final de un período):

La fórmula para calcular el valor futuro de una anualidad ordinaria (pago al final de un período):

Observaciones
Funciones relacionadas
La función FVANNUITY( ) es la inversa de la función PVANNUITY( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 663 de 898


Comandos

Función PVLUMPSUM( )
Devuelve el valor presente necesario para generar la suma global futura específica que se calcula uti-
lizando una tasa de interés constante. El valor presente es el valor de suma global, actual.

Sintaxis
PVLUMPSUM(tasa; períodos; cantidad)

Parámetros
Nombre Tipo Descripción

tasa numérico La tasa de interés por período.

períodos numérico El número total de períodos.

cantidad numérico El valor de la suma global futura al final del último período.

Nota
Debe usar períodos de tiempo uniformes al especificar la tasa y los períodos a fin de ase-
gurarse de estar especificando la tasa de interés por período.
Por ejemplo:
l para pagos mensuales en una inversión o un préstamo a dos años, con un interés
del 5 % anual, especifique 0.05/12 para la tasa y 2 * 12 para los períodos
l para pagos anuales del mismo préstamo o inversión, especifique 0.05 para la tasa
y 2 para los períodos

Salida
Numérico. El resultado se calcula con dos lugares decimales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 664 de 898


Comandos

Ejemplos
Ejemplos básicos
Interés compuesto mensual
Devuelve 1000,00, el capital de inversión inicial necesario para generar una suma global futura de
$1.269,73, cuando se lo invierte a 2 años al 1 % mensual, compuesto mensualmente:

PVLUMPSUM(0,01; 2*12; 1269,73)

Devuelve 787,57, el capital de inversión inicial necesario para generar una suma global futura de $1.000,
cuando se lo invierte a 2 años al 1 % mensual, compuesto mensualmente:

PVLUMPSUM(0,01; 2*12; 1000)

Devuelve 21455,82, el capital de inversión inicial necesario para generar una suma global futura de
$27.243,20, cuando se lo invierte a 2 años al 1 % mensual, compuesto mensualmente:

PVLUMPSUM(0,01; 2*12; 27243,20)

Interés compuesto semestral


Devuelve 792,09, el capital de inversión inicial necesario para generar una suma global futura de $1.000,
cuando se lo invierte a 2 años al 12 % anual, compuesto semestralmente:

PVLUMPSUM(0,12/2; 2*2; 1000)

Interés compuesto anual


Devuelve 797,19, el capital de inversión inicial necesario para generar una suma global futura de $1.000,
cuando se lo invierte a 2 años al 12 % anual, compuesto anualmente:

PVLUMPSUM(0,12/2; 2; 1000)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 665 de 898


Comandos

Observaciones
¿Qué es el valor presente?
El valor presente de una suma invertida es el capital inicial necesario para generar una suma específica
futura, dentro de un plazo de tiempo en particular. El valor futuro es el capital inicial más el interés com-
puesto acumulado.

Funciones relacionadas
La función FVLUMPSUM( ) es la inversa de la función PVLUMPSUM( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 666 de 898


Comandos

Función PYDATE( )
Devuelve un valor de fecha calculado por una función en un script externo de Python. El procesamiento de
datos de Python se hace fuera de ACL.

Sintaxis
PYDATE("ArchivoPy;FunciónPy" <; campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

ArchivoPy;FunciónPy carácter El nombre del script Python que se debe ejecutar, seguido de una
coma y, a continuación, el nombre de la función que devuelve el
valor:

"myScript,myFunction"

Al especificar el script de Python, omita la extensión del archivo. La


función que invoque puede invocar a otras funciones dentro del script
o dentro de otros scripts; sin embargo, todos los scripts que se eje-
cuten se deben colocar dentro de una carpeta de la variable de
entorno del sistema PYTHONPATH antes de la ejecución.
Si desea obtener más información, consulte "Configuración de Python
para uso con ACL" en la página 871.
Nota
Su PyFunction debe devolver un objeto Python date-
time.date.

campo |valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para la función de Python. Los valores se
opcional numérico
pasan a la función que invoca en el orden en que los especifique.
fechahora
Puede incluir tantos argumentos como sea necesario para satisfacer
lógico la definición de la función en el script de Python.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 667 de 898


Comandos

Salida
Fechahora.

Ejemplos
Ejemplos básicos
Devuelve `20160630`:

PYDATE('hello,due_date'; `20160531`; 30)

El script externo de Python acepta una fecha y un período de gracia como una cantidad de días y calcula
la fecha de vencimiento de la factura. Para una fecha de factura de 2016-05-31 y un período de 30
días: "2016-06-30":

#! python
from datetime import timedelta

def due_date(inv_date, period):


return(inv_date + timedelta(period))

Ejemplos avanzados
Definición de un campo calculado
Define un campo calculado en la tabla Trans_Cp utilizando el script de Python que calcula la fecha de ven-
cimiento:

OPEN Trans_Cp
DEFINE FIELD fecha_de_vencimiento COMPUTED
WIDTH 27
PYDATE('hello;due_date'; fecha_de_factura; período_de_pago)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 668 de 898


Comandos

Función PYDATETIME( )
Devuelve un valor de fechahora calculado por una función en un script externo de Python. El pro-
cesamiento de datos de Python se hace fuera de ACL.

Sintaxis
PYDATETIME("ArchivoPy;FunciónPy" <; campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

ArchivoPy;FunciónPy carácter El nombre del script Python que se debe ejecutar, seguido de una
coma y, a continuación, el nombre de la función que devuelve el
valor:

"myScript,myFunction"

Al especificar el script de Python, omita la extensión del archivo. La


función que invoque puede invocar a otras funciones dentro del script
o dentro de otros scripts; sin embargo, todos los scripts que se eje-
cuten se deben colocar dentro de una carpeta de la variable de
entorno del sistema PYTHONPATH antes de la ejecución.
Si desea obtener más información, consulte "Configuración de Python
para uso con ACL" en la página 871.
Nota
Su PyFunction debe devolver un objeto Python date-
time.

campo |valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para la función de Python. Los valores se
opcional numérico
pasan a la función que invoca en el orden en que los especifique.
fechahora
Puede incluir tantos argumentos como sea necesario para satisfacer
lógico la definición de la función en el script de Python.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 669 de 898


Comandos

Salida
Fechahora.

Ejemplos
Ejemplos básicos
Devuelve `20170101t0500`:

PYDATETIME("hello, combine_date_time"; `20170101`; `t0500`)

El script externo de Python acepta un argumento de fecha y un argumento de hora, y devuelve un objeto
fechahora combinado:

# hello.py content
from datetime import datetime

def combine_date_time(d,t):
return datetime.combine(d,t)

Ejemplos avanzados
Agregar la hora a la fechahora
Devuelve `20160101t2230`:

PYDATETIME("hello,add_time"; `20160101 150000`; `t073000`)

Script externo de Python que acepta una fechahora y una hora, y agrega la hora a la fechahora: 2016-01-
01 15:00:00 + 7 horas, 30 minutos, 00 segundos = 2016-01-01 22:30:00.

# hello.py content
from datetime import timedelta
from datetime import datetime
from datetime import time
def add_time(start, time_to_add):
return start + timedelta(hours=time_to_add.hour, minutes=time_to_add.minute, seconds=time_to_
add.second)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 670 de 898


Comandos

Función PYLOGICAL( )
Devuelve un valor lógico calculado por una función en un script externo de Python. El procesamiento de
datos de Python se hace fuera de ACL.

Sintaxis
PYLOGICAL("ArchivoPy;FunciónPy" <; campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

ArchivoPy;FunciónPy carácter El nombre del script Python que se debe ejecutar, seguido de una
coma y, a continuación, el nombre de la función que devuelve el
valor:

"myScript,myFunction"

Al especificar el script de Python, omita la extensión del archivo. La


función que invoque puede invocar a otras funciones dentro del script
o dentro de otros scripts; sin embargo, todos los scripts que se eje-
cuten se deben colocar dentro de una carpeta de la variable de
entorno del sistema PYTHONPATH antes de la ejecución.
Si desea obtener más información, consulte "Configuración de Python
para uso con ACL" en la página 871.
Nota
Su PyFunction debe devolver un valor Python ver-
dadero.

campo |valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para la función de Python. Los valores se
opcional numérico
pasan a la función que invoca en el orden en que los especifique.
fechahora
Puede incluir tantos argumentos como sea necesario para satisfacer
lógico la definición de la función en el script de Python.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 671 de 898


Comandos

Salida
Lógico.

Ejemplos
Ejemplos básicos
Devuelve F:

PYLOGICAL( "hello,str_compare"; "basketball"; "baseball"; "b" )

Script externo de Python que compara str1 y str2 utilizando el recuento del carácter que se pasa como
char:

# hello.py content
def str_compare(str1, str2, char):
return str1.count(char) > str2.count(char)

Ejemplos avanzados
Uso de campos
Devuelve un valor verdadero al comparar Nombre_proveedor y Ciudad_proveedor:

PYLOGICAL( "hello;str_compare"; Nombre_proveedor; Ciudad_proveedor, "b" )

Script externo de Python que compara str1 y str2 utilizando el recuento del carácter que se pasa como
char:

# hello.py content
def str_compare(str1, str2, char):
return str1.count(char) > str2.count(char)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 672 de 898


Comandos

Función PYNUMERIC( )
Devuelve un valor numérico calculado por una función en un script externo de Python. El procesamiento de
datos de Python se hace fuera de ACL.

Sintaxis
PYNUMERIC(ArchivoPy;FunciónPy; decimal <; campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

ArchivoPy;FunciónPy carácter El nombre del script Python que se debe ejecutar, seguido de una
coma y, a continuación, el nombre de la función que devuelve el
valor:

"myScript,myFunction"

Al especificar el script de Python, omita la extensión del archivo. La


función que invoque puede invocar a otras funciones dentro del script
o dentro de otros scripts; sin embargo, todos los scripts que se eje-
cuten se deben colocar dentro de una carpeta de la variable de
entorno del sistema PYTHONPATH antes de la ejecución.
Si desea obtener más información, consulte "Configuración de Python
para uso con ACL" en la página 871.
Nota
Su PyFunction debe devolver un tipo Python numérico.

decimal numérico El número de lugares decimales para incluir en el valor devuelto.


Debe ser un entero positivo.

campo |valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para la función de Python. Los valores se
opcional numérico
pasan a la función que invoca en el orden en que los especifique.
fechahora
Puede incluir tantos argumentos como sea necesario para satisfacer
lógico la definición de la función en el script de Python.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 673 de 898


Comandos

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 35,00:

PYNUMERIC("hello,get_nth_percent"; 2; 80; 120; 30; 45; 30; 100; 35; 45)

Script externo de Python que devuelve el valor según el percentil solicitado a partir de una lista de valores
de tamaño dinámico:

# hello.py content
from math import ceil
def get_nth_percent(percentage, *values):
input_length = len(values)
position = ceil((percentage/100.00) * input_length)
return values[position-1]

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 674 de 898


Comandos

Función PYSTRING( )
Devuelve un valor de carácter calculado por una función en un script externo de Python. El procesamiento
de datos de Python se hace fuera de ACL.

Sintaxis
PYSTRING("ArchivoPy;FunciónPy"; longitud <;campo|valor <;...n>>)

Nombre Tipo Descripción

ArchivoPy;FunciónPy carácter El nombre del script Python que se debe ejecutar, seguido de una
coma y, a continuación, el nombre de la función que devuelve el
valor:

"myScript,myFunction"

Al especificar el script de Python, omita la extensión del archivo. La


función que invoque puede invocar a otras funciones dentro del script
o dentro de otros scripts; sin embargo, todos los scripts que se eje-
cuten se deben colocar dentro de una carpeta de la variable de
entorno del sistema PYTHONPATH antes de la ejecución.
Si desea obtener más información, consulte "Configuración de Python
para uso con ACL" en la página 871.
Nota
Su PyFunction debe devolver un objeto Python cadena.

longitud numérico La longitud que se debe asignar para la cadena de retorno.

campo |valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para la función de Python. Los valores se
opcional numérico
pasan a la función que invoca en el orden en que los especifique.
fechahora
Puede incluir tantos argumentos como sea necesario para satisfacer
lógico la definición de la función en el script de Python.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 675 de 898


Comandos

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "mi prueba":

PYSTRING('hello,main'; 20; "mi")

Script externo de Python que acepta una cadena y concatena " prueba" a la cadena:

#! python
# hello.py content
def main(str):
str2 = str + ' test'
return(str2)

Ejemplos avanzados
Devolución de una subcadena
Este ejemplo quita los dos últimos caracteres del campo Nombre proveedor y devuelve la subcadena:

PYSTRING( "hello;sub_set"; LENGTH(Nombre_proveedor); ALLTRIM(Nombre_proveedor);


LENGTH(ALLTRIM(Nombre_proveedor)); 0; LENGTH(ALLTRIM(Nombre_proveedor)) - 2)

Script externo de Python que acepta una cadena, una longitud de cadena y dos posiciones de caracteres.
La función devuelve una subcadena entre la posición uno y la posición dos:

#hello.py content
def sub_set(str, length, p1, p2):
if p1 >= 0 and p2 < length and p1 < p2:
str2 = str[p1:p2]
else:
str2 = str
return str2

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 676 de 898


Comandos

Función PYTIME( )
Devuelve un valor de hora calculado por una función en un script externo de Python. El procesamiento de
datos de Python se hace fuera de ACL.

Sintaxis
PYTIME("ArchivoPy;FunciónPy" <; campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

ArchivoPy;FunciónPy carácter El nombre del script Python que se debe ejecutar, seguido de una
coma y, a continuación, el nombre de la función que devuelve el
valor:

"myScript,myFunction"

Al especificar el script de Python, omita la extensión del archivo. La


función que invoque puede invocar a otras funciones dentro del script
o dentro de otros scripts; sin embargo, todos los scripts que se eje-
cuten se deben colocar dentro de una carpeta de la variable de
entorno del sistema PYTHONPATH antes de la ejecución.
Si desea obtener más información, consulte "Configuración de Python
para uso con ACL" en la página 871.
Nota
Su PyFunction debe devolver un objeto Python date-
time.time.

campo |valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para la función de Python. Los valores se
opcional numérico
pasan a la función que invoca en el orden en que los especifique.
fechahora
Puede incluir tantos argumentos como sea necesario para satisfacer
lógico la definición de la función en el script de Python.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 677 de 898


Comandos

Salida
Fechahora.

Ejemplos
Ejemplos básicos
Devuelve `t2122`:

ASSIGN v_parte_hora = PYTIME( "hello;get_time"; `20160101 212223`)

Script externo de Python:

# hello.py content
from datetime import time
from datetime import date

def get_time(timestamp):
return timestamp.time();

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 678 de 898


Comandos

Función RAND( )
Devuelve un número aleatorio que está dentro de un límite específico.

Sintaxis
RAND(número)

Parámetros
Nombre Tipo Descripción

número numérico El límite numérico para el número aleatorio.


Si especifica un número con lugares decimales, el número aleatorio
generado tiene la misma cantidad de lugares decimales.
o Si introduce un número positivo:, el número aleatorio que se
devuelve es mayor que cero o igual a cero y menor que el número
que especificó.
Devuelve un número de 0 a 99:

RAND(100)

o Si introduce un número negativo:, el número aleatorio que se


devuelve es inferior a cero y superior que o igual al número que
especificó.
Devuelve un número de -1 a -100:

RAND(-100)

Salida
Numérico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 679 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve 278,61:

RAND(1000,00)

Devuelve 3781:

RAND(10000)

Nota
El valor devuelto será diferente cada vez que se ejecute la función.

Observaciones
RAND( ) no puede repetir los resultados
Si utiliza la función RAND( ) de manera consecutiva con el mismo valor de número, genera resultados dife-
rentes. A diferencia del comando RANDOM, la función RAND( ) no tiene un valor semilla.

Posibilidad de números aleatorios duplicados


Si utiliza RAND( ) para crear un campo calculado que asigna un número aleatorio a cada registro de una
tabla, es posible que se generen números aleatorios duplicados. No existen garantías de que los números
aleatorios sean únicos.
Cuanto mayor sea el valor número en relación con la cantidad de registros de la tabla, mayores serán las
probabilidades de que los números que se generen sean únicos.

Actualización dinámica de los números aleatorios


Un campo calculado con la función RAND( ) genera un nuevo conjunto de números aleatorios cada vez
que usted realiza acciones como ordenar rápidamente, aplicar un filtro, reorganizar las columnas o des-
plazarse a través de la vista.
Si desea fijar un conjunto de números aleatorios, extraiga los datos a una nueva tabla con la opción Vista
o Campos en el cuadro de diálogo Extraer.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 680 de 898


Comandos

Función RATE( )
Devuelve la tasa de interés por período.

Sintaxis
RATE(períodos; pago; cantidad)

Parámetros
Nombre Tipo Descripción

períodos numérico El número total de períodos de pago.

pago numérico El pago por período.

cantidad numérico La cantidad de capital del préstamo.

Nota
La función RATE( ) supone que los pagos se efectúan al final de cada período.

Salida
Numérico. La tasa se calcula a lugares de ocho decimales.

Ejemplos
Ejemplos básicos
Devuelve 0,00541667 (0,54 %), la tasa de interés mensual de un préstamo de $275.000 a veinticinco años,
con pagos mensuales de $1.856,82:

RATE(12*25, 1856,82; 275000)

Devuelve 0,06500004 (6,5 %), la tasa de interés anual del mismo préstamo:

RATE(12*25, 1856,82; 275000)*12

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 681 de 898


Comandos

Ejemplos avanzados
Conversión de la tasa nominal a la tasa efectiva
La función RATE( ) calcula la tasa de interés nominal. Puede usar la función EFFECTIVE( ) para convertir
el resultado de RATE( ) en la tasa de interés efectiva.
Devuelve 0,06715155 (6,7 %), la tasa de interés anual efectiva del préstamo de los ejemplos anteriores:

EFFECTIVE((RATE(12*25; 1856,82; 275000)*12); 12*25)

Cálculos de las anualidades


Los cálculos de las anualidades involucran cuatro variables:
l valor presente o valor futuro: en los ejemplos siguientes, $21,243.39 y $ 26,973.46
l importe de pago por período: en los ejemplos siguientes, $1,000.00
l tasa de interés por período: en los ejemplos siguientes, 1% mensual
l cantidad de períodos: en los ejemplos siguientes, 24 meses
Si conoce el valor de tres de las variables, puede utilizar una función de ACL para calcular el cuarto valor.

Si desea determinar: Función de ACL que debe usar:

PVANNUITY( )
Devuelve 21243.39:

PVANNUITY(0.01; 24; 1000)


Valor presente

FVANNUITY( )
Devuelve 26973.46:

FVANNUITY(0.01; 24; 1000)


Valor futuro

PMT( )
Devuelve 1000:

PMT(0.01; 24; 21243.39)


Importe de pago por período

RATE( )
Devuelve 0.00999999 (1%):

RATE(24; 1000; 21243.39)


Tasa de interés por período

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 682 de 898


Comandos

Si desea determinar: Función de ACL que debe usar:

NPER( )
Devuelve 24.00:

NPER(0.01; 1000; 21243.39)


Número de períodos

Fórmulas para la anualidad


La fórmula para calcular el valor presente de una anualidad ordinaria (pago al final de un período):

La fórmula para calcular el valor futuro de una anualidad ordinaria (pago al final de un período):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 683 de 898


Comandos

Función RDATE( )
Devuelve un valor de fecha calculado por un script o una función Rvachev. El procesamiento de datos en
R se hace fuera de ACL.

Sintaxis
RDATE(rScript|rCódigo <;campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

rScript | rCódigo carácter La ruta completa o relativa al script de R o un fragmento de código R


que se debe ejecutar.
Si introduce directamente código R en lugar de utilizar un archivo
externo, no puede utilizar el carácter de comillas para encerrar texto
en su código, ni siquiera utilizando el carácter de escape:
o válido: 'var <- "\"prueba\"" '
o no válido: 'var <- "\'prueba\'" '

campo | valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben
utilizar como argumentos para el fragmento de código o script R.
opcional numérico
Los valores se pasan la función que invoque en el orden en que lo
fechahora
especifique y usted hace referencia a ellos utilizando valor1, valor2
lógico ... valorN en el código R.
Puede incluir tantos argumentos como sea necesario para satisfacer
la definición de la función en el código R.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Salida
Fechahora.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 684 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve `20160530`:

RDATE("as.Date(value1,'%m-%d-%Y')"; "05-30-16")

Ejemplos avanzados
Uso de un script externo de R
Convierte una cadena en una fecha y la devuelve:

RDATE("a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"; dateText)

Script externo de R (sample.r):

dateForm <- function(dateText) {


return(as.Date(dateText,format='%y%m%d'))
}
dateForm(value1)

Observaciones
Datos devueltos por R
Al invocar scripts de R, utilice la función source y asigne el objeto de retorno a una variable. Puede acceder
al valor que devolvió su función Rvachev desde el objeto devuelto:

# 'a' contiene el objeto de respuesta y a[[1]] accede al valor de los datos


"a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Utilice
este archivo de log para depurar los errores de R.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 685 de 898


Comandos

Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R externos en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 686 de 898


Comandos

Función RDATETIME( )
Devuelve un valor de fechahora calculado por un script o una función Rvachev. El procesamiento de datos
en R se hace fuera de ACL.

Sintaxis
RDATETIME(rScript|rCódigo <;campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

rScript | rCódigo carácter La ruta completa o relativa al script de R o un fragmento de código R


que se debe ejecutar.
Si introduce directamente código R en lugar de utilizar un archivo
externo, no puede utilizar el carácter de comillas para encerrar texto
en su código, ni siquiera utilizando el carácter de escape:
o válido: 'var <- "\"prueba\"" '
o no válido: 'var <- "\'prueba\'" '

campo | valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para el fragmento de código o script R.
opcional numérico
Los valores se pasan la función que invoque en el orden en que lo
fechahora
especifique y usted hace referencia a ellos utilizando valor1, valor2 ...
lógico valorN en el código R.
Puede incluir tantos argumentos como sea necesario para satisfacer
la definición de la función en el código R.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Salida
Fechahora.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 687 de 898


Comandos

Ejemplos
Ejemplos básicos
Agrega 45 minutos a la fecha y hora actual:

RDATETIME("Sys.time() + value1";2700)

Ejemplos avanzados
Uso de un script externo de R
Agrega 45 minutos a un campo fechahora pasando un campo y un valor literal a una función Rvachev
externa:

RDATETIME("a<-'c:\\scripts\\sample.r');a[[1]]"; start_date; 2700)

Script externo de R (sample.r):

add_time <- function(start, sec) {


return(start + sec)
}
add_time(value1, value2)

Observaciones
Datos devueltos por R
Al invocar scripts de R, utilice la función source y asigne el objeto de retorno a una variable. Puede acce-
der al valor que devolvió su función Rvachev desde el objeto devuelto:

# 'a' contiene el objeto de respuesta y a[[1]] accede al valor de los datos


"a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Uti-
lice este archivo de log para depurar los errores de R.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 688 de 898


Comandos

Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R externos en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Zona horaria del sistema


El entorno R de ACL utiliza la zona horaria del Meridiano de Greenwich (GMT) por valor predeterminado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 689 de 898


Comandos

Función RECLEN( )
Devuelve la longitud del registro actual.

Sintaxis
RECLEN( )

Parámetros
Esta función no tiene ningún parámetro.

Salida
Numérico.

Ejemplos
Ejemplos básicos
El siguiente ejemplo extrae todos los registros cuya longitud es exactamente 110:

EXTRACT RECORD IF RECLEN( ) = 110 TO "Extraer.fil"

Observaciones
Puede utilizar la función RECLEN( ) para identificar registros de una longitud determinada, o para probar
si es más corta que los registros esperados. Esta función resulta útil si trabaja con archivos de imagen de
impresión (reporte), ya que proporciona una manera fácil de examinar las longitudes de los registros:
l Para registros de longitud fija, el valor devuelto es un valor constante (la longitud del registro).
l Para registros de longitud variable, el valor devuelto cambia para cada uno de los registros.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 690 de 898


Comandos

Función RECNO( )
Devuelve el número del registro actual.

Sintaxis
RECNO( )

Parámetros
Esta función no tiene ningún parámetro.

Salida
Numérico.

Ejemplos
Ejemplos básicos
En el ejemplo siguiente, se extraen los registros enumerados del 10 al 20 a una nueva tabla de ACL:

EXTRACT RECORD IF BETWEEN(RECNO( );10;20) TO “Subconjunto.fil”

Observaciones
Puede utilizar la función RECNO( ) para enviar los números de registro a una tabla o para determinar la ubi-
cación relativa de un registro determinado en una tabla.

Tablas indexadas y tablas no indexadas


Esta función devuelve el número de registro lógico actual:
l 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 registro lógicos y físicos son idénticos.
l Si la tabla se encuentra indexada, RECNO( ) se maneja de manera similar, pero cuenta los registros
en orden lógico, no físico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 691 de 898


Comandos

Uso del comando SEEK o FIND


Si se utilizan los comandos SEEK o FIND, el número de registro se restablece en 1 después de que se eje-
cutan estos comandos.

Reordenamiento de los registros


Cuando ordena de nuevo los registros en una tabla, no se ordenan de nuevo los números de registro
generados por RECNO( ). Para mantener los números de registro con los registros con los que ori-
ginalmente fueron asociados, extraiga los datos a una tabla nueva mediante la opción Campos antes de
volver a ordenar los registros.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 692 de 898


Comandos

Función RECOFFSET( )
Devuelve un valor de campo de un registro que es una cantidad de registros especificada del registro
actual.

Sintaxis
RECOFFSET(campo; número_de_registros)

Parámetros
Nombre Tipo Descripción

campo carácter El nombre del campo del cual se recupera el valor.


numérico
fechahora

número_de_regis- numérico El número de registros del registro actual. Un número positivo espe-
tros cifica un registro posterior al registro actual; un número negativo espe-
cifica un registro anterior al registro actual.

Salida
Carácter, Numérico o Fechahora. El valor devuelto pertenece a la misma categoría de datos como el pará-
metro de entrada campo.

Ejemplos
Ejemplos básicos
Devuelve un valor Cantidad del siguiente registro:

RECOFFSET(Cantidad;1)

Devuelve un valor Cantidad del registro anterior:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 693 de 898


Comandos

RECOFFSET(Cantidad; -1)

Ejemplos avanzados
Uso de RECOFFSET en un campo calculado
El campo calculado Cantidad_siguiente muestra el valor del campo Cantidad en el registro siguiente sólo
si el registro siguiente tiene el mismo número de cliente.
Para definir este campo calculado en un script, utilice la siguiente sintaxis:

DEFINE FIELD Cantidad_siguiente COMPUTED


RECOFFSET(Cantidad;1) IF RECOFFSET(Cliente;1) = Cliente
0

Cantidad_siguiente es el valor del campo Cantidad del siguiente registro solo si el número de cliente del
siguiente registro es el mismo que el número de cliente del registro actual. En caso contrario, a Cantidad_
siguiente se le asigna un valor de cero.

Observaciones
La función RECOFFSET( ) devuelve un valor de campo de un registro que es un número específico de
registros superior o inferior al registro actual.

Cuándo usar RECOFFSET( )


Esta función se utiliza comúnmente para la prueba de comparación avanzada.
Puede utilizar esta función para comparar valores en un campo del registro actual con un campo en otro
registro. Por ejemplo, puede agregar un campo calculado que calcule la diferencia entre una cantidad en
el registro actual y una cantidad en el registro anterior.

El principio o el final de una tabla


Si llega al final o al principio de la tabla, esta función devuelve cero para los campos numéricos, una
cadena vacía para los campos de caracteres o 01/01/1900 para los campos de fecha. La función devuelve
la salida en blanco en estos casos porque no hay otro registro más para comparar con el registro actual.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 694 de 898


Comandos

Función REGEXFIND( )
Devuelve un valor lógico que indica si el patrón que se especificó con una expresión regular aparece en una
cadena.

Sintaxis
REGEXFIND(cadena; patrón)

Parámetros
Nombre Tipo Descripción

cadena carácter El campo, la expresión o el valor literal que se debe probar en busca
de un patrón de coincidencias.

patrón carácter La cadena de patrón (expresión regular) que se debe buscar.


El patrón puede contener caracteres literales, metacaracteres o una
combinación de ambos. Los caracteres literales incluyen todos los
caracteres alfanuméricos, algunos caracteres de puntuación y los
espacios en blanco.
La búsqueda distingue entre mayúsculas y minúsculas; esto significa
que se deben especificar explícitamente caracteres alfabéticos en
mayúscula y minúscula.

Salida
Lógico. Devuelve T (verdadero) si se encuentra el valor de patrón especificado y F (falso) en caso contrario.

Ejemplos
Ejemplos básicos
Patrones de caracteres alfabéticos
Devuelve T para todos los registros que contienen “Phoenix”, “Austin” o “Los Angeles” en el campo Ciu-
dad_proveedor. De lo contrario, devuelve F:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 695 de 898


Comandos

REGEXFIND(Ciudad_proveedor; "Phoenix|Austin|Los Angeles")

Regresa T para todos los apellidos que comienzan con "John" o "Jon". Por ejemplo: John, Jon, Johnson,
Johnston, Jonson, Jonston, Jones, etc. De lo contrario, devuelve F:

REGEXFIND(Apellido;"^Joh?n")

Regresa T únicamente para los apellidos que son "John" o "Jon". De lo contrario, devuelve F:

REGEXFIND(Apellido;"^Joh?n\b")

Patrones de carácter numérico


Regresa T para todos los registros con números de factura que contienen "98". De lo contrario, devuelve
F:

REGEXFIND(Número_factura; "98")

Regresa T para todos los registros con números de factura que comienzan con "98". De lo contrario,
devuelve F:

REGEXFIND(Número_factura; "\b98")

Regresa T para todos los registros con números de factura que finalizan con "98". De lo contrario,
devuelve F:

REGEXFIND(Número_factura; "98\b")

Regresa T para todos los registros con números de factura que contienen “98” en la 5° y 6° posición. De lo
contrario, devuelve F:

REGEXFIND(Número_factura; "\b\d\d\d\d98")

REGEXFIND(Número_factura; "\b\d{4}98")

Patrones de caracteres combinados


Regresa T para todos los registros con códigos de producto que comienzan con 3 números, seguidos de
un guion y 6 letras. De lo contrario, devuelve F:

REGEXFIND(Código_producto; "\b\d{3}-[a-zA-Z]{6}\b")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 696 de 898


Comandos

Regresa T para todos los registros con códigos de producto que comienzan con 3 o más números, segui-
dos de un guion y 6 o más letras. De lo contrario, devuelve F:

REGEXFIND(Código_producto; "\b\d{3,}-[a-zA-Z]{6}")

Regresa T para todos los registros con identificadores de factura alfanuméricos que contienen “98” en la 5°
y 6° posición. De lo contrario, devuelve F:

REGEXFIND(Número_factura; "\b\w{4}98")

Regresa T para todos los registros con identificadores de factura que contienen las siguientes condiciones;
de lo contrario, devuelve F:
l cualquier carácter en las primeras cuatro posiciones
l "98" en la 5° y 6° posición

REGEXFIND(Número_factura; "\b.{4}98")

Regresa T para todos los registros con identificadores de factura que contienen “98” después de 1 a 4
caracteres iniciales. De lo contrario, devuelve F:

REGEXFIND(Número_factura; "\b.{1,4}98")

Regresa 'T' para todos los registros con identificadores de factura que contienen la totalidad de las siguien-
tes condiciones; de lo contrario, devuelve F:
l cualquier carácter en las tres primeras posiciones
l "5" o "6" en la cuarta posición
l "98" en la 5° y 6° posición

REGEXFIND(Número_factura; "\b.{3}[56]98")

Regresa T para todos los registros con identificadores de factura que contienen la totalidad de las siguien-
tes condiciones; de lo contrario, devuelve F:
l cualquier carácter en las dos primeras posiciones
l "55" o "56" en la tercera y cuarta posición
l "98" en la 5° y 6° posición

REGEXFIND(Número_factura; "\b.{2}(55|56)98")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 697 de 898


Comandos

Observaciones
Cómo funciona
La función REGEXFIND( ) utiliza una expresión regular para buscar datos en ACL.
Las expresiones regulares son cadenas de búsqueda potentes y flexibles que combinan caracteres lite-
rales y metacaracteres, que son caracteres especiales que realizan una variedad de operaciones de bús-
queda.
Por ejemplo:

REGEXFIND(Apellido;"Sm(i|y)the{0,1}")

utiliza los metacaracteres de grupo ( ), alternancia | y cuantificador { } para crear una expresión regular
que encuentra “Smith”, “Smyth”, “Smithe” o “Smythe” en el campo Apellido.

La coincidencia se realiza de manera secuencial


La coincidencia entre valores cadena y patrón se realiza de manera secuencial. En el ejemplo anterior:
l "S" se compara con la primera posición del campo Apellido
l "m" se compara con la segunda posición
l "i" e "y" se comparan con la tercera posición
l "t" se compara con la cuarta posición
l "h" se compara con la quinta posición
l "e" se compara contra la sexta posición, si hay una sexta posición en el valor de origen

Cuándo utilizar REGEXFIND( )


Utilice REGEXFIND( ) para buscar datos utilizando una coincidencia de patrón simple o compleja.
La construcción de expresiones regulares puede ser complicada, en especial si recién se familiariza con
la sintaxis. Tal vez pueda lograr sus objetivos de búsqueda con funciones de búsqueda más sencillas de
ACL, como FIND( ), MATCH( ) o MAP( ).
Si sus necesidades de búsqueda superan las capacidades de estas funciones más sencillas, las expre-
siones regulares le ofrecen una flexibilidad prácticamente ilimitada para construir cadenas de búsqueda.

Cómo maneja los espacios REGEXFIND( )


Los espacios (en blanco) se consideran caracteres tanto en la cadena como en el patrón; por lo tanto,
debe tener cuidado al trabajar con espacios.
En el patrón, puede indicar un espacio literalmente (escribiendo un espacio) o utilizando el metacarácter
\s. El uso del metacarácter facilita la lectura de los espacios en el patrón y, por lo tanto, hace que resulte
menos probable pasarlos por alto, en especial al construir patrones más complejos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 698 de 898


Comandos

Concatenar campos
Puede concatenar dos o más campos en la cadena si desea buscar en varios campos de manera simul-
tánea.
Por ejemplo:

REGEXFIND(Nombre_proveedor+Calle_proveedor;"Hardware.*Main")

busca las palabras "Hardware" y "Main" tanto en el campo Nombre_proveedor como en el campo Calle_
proveedor, ya sea juntas o separadas por caracteres.
Un negocio que incluya la palabra "Hardware" en el nombre, ubicado en la calle "Main" coincidiría con esta
expresión regular. Y lo mismo ocurre con un negocio denominado “Hardware on Main”.
Los campos concatenados se tratan como un único campo que incluye los espacios al principio y al final de
los campos individuales, a menos que utilice la función ALLTRIM( ) para quitar los espacios.

El orden de los campos concatenados es importante


Como REGEXFIND( ) busca los caracteres en el patrón en el orden en el que usted los especifica, el orden
en el que concatena los campos tiene un efecto. Si invierte Nombre_proveedor y Calle_proveedor en la
expresión anterior, tendrá menos probabilidades de obtener resultados.

Metacaracteres de las expresiones regulares


La siguiente tabla incluye los metacaracteres que se pueden usar con REGEXFIND( ) y describe la ope-
ración que realiza cada uno de ellos.
Hay más sintaxis de expresiones regulares y ACL trabaja con ella, pero esta sintaxis es más compleja.
Sería imposible incluir una explicación completa de la sintaxis en esta guía. Puede encontrar varios recur-
sos en los que se explican las expresiones regulares en Internet.
ACL utiliza la implementación ECMAScript de expresiones regulares. La mayoría de las implementaciones
de las expresiones regulares utilizan una sintaxis común.
Nota
La implementación actual de las expresiones regulares en ACL no admite completamente
la búsqueda en otros idiomas que no sean el inglés.

Metacarácter Descripción

. Coincide con cualquier carácter (excepto un carácter de línea nueva)

? Busca una coincidencia de 0 o 1 aparición del elemento, metacarácter o literal inmediatamente ante-
rior

* Busca una coincidencia de 0 o más apariciones del elemento, metacarácter o literal inmediatamente
anterior

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 699 de 898


Comandos

Metacarácter Descripción

+ Busca una coincidencia de 1 o más apariciones del elemento, metacarácter o literal inmediatamente
anterior

{} Busca una coincidencia de la cantidad especificada de apariciones del elemento, metacarácter o lite-
ral inmediatamente anterior Puede especificar un número exacto, un rango o un rango abierto.
Por ejemplo:
o a{3} coincide con "aaa"
o X{0,2}L coincide con "L", "XL" y "XXL"
o AB-\d{2,}-YZ coincide con cualquier identificador alfanumérico con el prefijo "AB-", el sufijo "-YZ" y
dos o más números en el cuerpo del identificador

[] Coincide con cualquier carácter único que se encuentre dentro de los corchetes
Por ejemplo:
o [aeiou] coincide con a, o e, o i, u o, o u
o [^aeiou] coincide con cualquier carácter que no sea a, o e, o i, u o, o u
o [A-G] coincide con cualquier letra de la A a la G, en mayúscula
o [A-Ga-g] coincide con cualquier letra mayúscula de la A a la G o con cualquier letra minúscula de
la a a la g
o [5-9] coincide con cualquier número del 5 al 9

() Crea un grupo que define una secuencia o un bloque de caracteres, que pueden ser tratados como
una misma unidad.
Por ejemplo:
o S(ch)?mid?th? coincide con "Smith" o "Schmidt"
o (56A.*){2} coincide con cualquier identificador alfanumérico en el que aparezca la secuencia "56A",
al menos dos veces
o (56A).*-.*\1 coincide con cualquier identificador alfanumérico en el que la secuencia "56A" apa-
rezca al menos dos veces, con un guion entre dos de las apariciones

\ Un carácter de escape que especifica que el carácter siguiente es un literal. Utilice el carácter de
escape si desea hacer coincidir literalmente cualquiera de los metacaracteres. Por ejemplo, \( encuen-
tra un paréntesis de apertura y \\ encuentra una barra invertida.
Utilice el carácter de escape si desea hacer coincidir literalmente cualquiera de los siguientes carac-
teres:
^ $ . * + ? = ! : | \ ( ) [ ] { }
Otros caracteres de puntuación, como & o @, no requieren el carácter de escape.

\ int Especifica que un grupo, anteriormente definido como paréntesis ( ), se repite. int es un número entero
que identifica la posición secuencial del grupo previamente definido en relación con cualquier otro
grupo. Este metacarácter se puede utilizar en el parámetro patrón tanto en REGEXFIND( ) como en
REGEXREPLACE( ).
Por ejemplo:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 700 de 898


Comandos

Metacarácter Descripción

o (123).*\1 coincide con cualquier identificador en el que el grupo de dígitos "123" aparece dos
veces, como mínimo
o ^(\d{3}).*\1 coincide con cualquier identificador en el que los primeros 3 dígitos se repiten
o ^(\d{3}).*\1.*\1 coincide con cualquier identificador en el cual los primeros 3 dígitos se repiten dos
veces, como mínimo
o ^(\D)(\d)-.*\2\1 coincide con cualquier identificador en el cual el prefijo alfanumérico se repite con
los caracteres alfabéticos y numéricos invertidos

$int Especifica que un grupo que se encuentra en una cadena de destino se utiliza en una cadena de
reemplazo. int es un número entero que identifica la posición secuencial del grupo en la cadena de
destino respecto de otros grupos. Este metacarácter se puede utilizar únicamente en el parámetro
cadena_nueva en REGEXREPLACE( ).
Por ejemplo:
o Si se utiliza el patrón (\d{3})[ -]?(\d{3})[ -]?(\d{4}) para buscar una coincidencia con una variedad
de formatos de número de teléfono diferentes, se puede utilizar cadena_nueva ($1)-$2-$3 para
reemplazar los números por sí mismos y estandarizar el formato. Tanto 999 123-4567 como
9991234567 se convierten en (999)-123-4567.

| Coincide con el carácter, el bloque de caracteres o la expresión que se encuentra antes o después del
separador (|)
Por ejemplo:
o a|b coincide con a o con b
o abc|def coincide con "abc" o "def"
o Sm(i|y)th coincide con Smith o Smyth
o [a-c]|[Q-S]|[x-z] coincide con cualquiera de estas letras: a, b, c, Q, R, S, x, y, z
o \s|- coincide con un espacio o un guion

\w Coincide con cualquier carácter (a a la z, A a la Z, 0 a 9 y el carácter de guion bajo _ )

\W Coincide con cualquier carácter que no sea de palabra (que no sea a a la z, A a la Z, 0 a 9 o el carác-
ter de guion bajo _ )

\d Coincide con cualquier número (cualquier dígito decimal)

\D Coincide con cualquier carácter no numérico (cualquier carácter que no sea un dígito decimal)

\s Coincide con un espacio (un espacio en blanco)

\S Coincide con cualquier carácter que no esté en blanco

\b Coincide con el límite de una palabra (entre caracteres \w y \W)


Los límites de las palabras no ocupan un espacio. Por ejemplo:
o "United Equipment" tiene cuatro límites de palabras (uno a cada lado del espacio y uno al
comienzo y al final de la cadena). "United Equipment" coincide con esta expresión regular \b\w*\-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 701 de 898


Comandos

Metacarácter Descripción

b\W\b\w*\b
Consejo
Además de los espacios, los límites entre las palabras pueden derivar de comas, pun-
tos u otros caracteres que no sean palabras.
Por ejemplo, la siguiente expresión se evalúa como Verdadera:

REGEXFIND("[email protected]"; "\bexample\b")

^ Coincide con el inicio de una cadena


Dentro de los corchetes [ ], ^ niega el contenido

$ Coincide con el final de una cadena

Funciones relacionadas
Si desea buscar y reemplazar patrones coincidente utilice "Función REGEXREPLACE( )" en la página
opuesta.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 702 de 898


Comandos

Función REGEXREPLACE( )
Reemplaza todas las instancias de cadenas que coinciden con una expresión regular por una nueva
cadena.

Sintaxis
REGEXREPLACE( cadena; patrón; cadena_nueva)

Parámetros
Nombre Tipo Descripción

cadena carácter El campo, la expresión o el valor literal que se debe probar en busca
de un patrón de coincidencias.

patrón carácter La cadena de patrón (expresión regular) que se debe buscar.


El patrón puede contener caracteres literales, metacaracteres o una
combinación de ambos. Los caracteres literales incluyen todos los
caracteres alfanuméricos, algunos caracteres de puntuación y los
espacios en blanco.
La búsqueda distingue entre mayúsculas y minúsculas; esto significa
que se deben especificar explícitamente caracteres alfabéticos en
mayúscula y minúscula.

cadena_nueva carácter La cadena que se debe utilizar para reemplazar todos los valores que
coinciden con el patrón.
La cadena de reemplazo puede contener caracteres literales, grupos
de caracteres de la cadena original (con el elemento $int) o una com-
binación de ambos.

Salida
Carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 703 de 898


Comandos

Ejemplos
Ejemplos básicos
Trabajo con espacios
Devuelve "AB CD EF", reemplazando varios espacios entre los caracteres de texto por un solo espacio:

REGEXREPLACE("AB CD   EF"; "\s+"; " ")

Devuelve los datos del campo de caracteres con el espaciado entre las palabras estandarizado con un
solo espacio:

REGEXREPLACE(campo_caracteres; "\s+"; " ")

Devuelve los datos del campo de caracteres con el espaciado entre las palabras estandarizado con un
solo espacio. El uso de la función BLANKS(  ) en cadena_nueva, en lugar de un espacio literal, hace que
los espacios sean más fáciles de leer y que resulte más difícil pasarlos por alto:

REGEXREPLACE(campo_caracteres; "\s+", BLANKS(1))

Estandarizar números de teléfono


Devuelve "(123) 456-7890". El formato del número de teléfono ‘1234567890’ está estandarizado:

REGEXREPLACE(SUBSTR("1234567890";1;14); "(\d{3})[\s-]*(\d{3})[\s-]*(\d{4})";"($1) $2-$3")

Devuelve los números del campo Número_teléfono y estandariza el formato:

REGEXREPLACE(Número_de_teléfono; ".*(\d{3})[\s-\.\)]*(\d{3})[\s-\.]*(\d{4})"; "($1) $2-$3")

Extrae "123-456-7890" del texto circundante:

REGEXREPLACE("Núm tel: 123-456-7890 (oficina)"; "(.*)(\d{3}[\s-\)\.]*\d{3}[\s-\.]*\d{4})(.*)"; "$2")

Extrae los números de teléfono de entre el texto que los rodea en el campo Comentario y estandariza el
formato:

REGEXREPLACE(Comment; "(.*)(\d{3})[\s-\)\.]*(\d{3})[\s-\.]*(\d{4})(.*)"; "($2) $3-$4")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 704 de 898


Comandos

Identificación de formatos genéricos


Devuelve "9XXX-999xx", lo cual representa el formato genérico del valor especificado por cadena ("1ABC-
123aa"):

REGEXREPLACE(REGEXREPLACE(REGEXREPLACE("1ABC-123aa";"\d";"9");"[a-z]";"x");"[A-Z]";
"X")

Devuelve el formato de todos los identificadores del campo Número_factura:

REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(Número_de_factura;"\d";"9");"[a-z]";"x");"
[A-Z]"; "X")

Estandarización del formato del nombre


Devuelve "John David Smith":

REGEXREPLACE("Smith, John David"; "^(\w+),(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")

Devuelve los nombres del campo Nombre_completo en el orden normal: Nombre (Segundo_nombre) (Ter-
cer_nombre) Apellido:

REGEXREPLACE(Nombre_completo; "^(\w+),(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")

Nota
Los datos de nombre pueden presentar varias complicaciones, como la presencia de após-
trofes. Tener en cuenta las variaciones de los datos de nombre suele requerir expresiones
regulares más complejas que las que se ofrecen en el ejemplo anterior.

Observaciones
Cómo funciona
La función REGEXREPLACE( ) utiliza una expresión regular para encontrar patrones coincidentes en los
datos y reemplazar los valores coincidentes por una cadena nueva.
Por ejemplo:

REGEXREPLACE(campo_caracteres; "\s+"; " ")

estandariza el espaciado en los datos de caracteres reemplazando uno o más espacios entre caracteres
por un único espacio.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 705 de 898


Comandos

La porción de búsqueda de la función REGEXREPLACE( ) es idéntica a la función REGEXFIND( ). Si


desea obtener información detallada acerca de la capacidad de búsqueda común a ambas funciones, con-
sulte "Función REGEXFIND( )" en la página 695.

Cuándo usar REGEXREPLACE( )


Utilice REGEXREPLACE( ) cada vez que desee buscar y reemplazar datos en ACL utilizando la coin-
cidencia con un patrón complejo o simple.

Reemplazo de los caracteres por sí mismos


Puede utilizar el elemento $int para reemplazar caracteres por sí mismos, lo cual le permite conservar las
partes significativas de los datos, mientras que se estandarizan o se omiten los caracteres que los rodean
o están entremezclados con esas partes.
Más atrás, se incluyeron varios ejemplos con números de teléfono y nombres.
Para utilizar el elemento $int, primero debe crear grupos utilizando paréntesis ( ) dentro del valor patrón.
Si desea obtener más información, consulte "Función REGEXFIND( )" en la página 695.

Evitar la coincidencia de caracteres en secuencia


Puede evitar las coincidencias de caracteres en secuencia y reemplazar las subcadenas, sin importar la
posición de unas respecto de otras anidando funciones REGEXREPLACE( ).
El problema en los siguientes dos ejemplos consiste en derivar un formato genérico a partir de los datos
de origen alfanuméricos en el cual los números y las letras puedan aparecer en cualquier orden. Si se des-
conoce el orden de los números y las letras, ¿de qué manera se crea la cadena patrón?
La solución consiste en encontrar y reemplazar los números primero usando la función
REGEXREPLACE( ) interna y, a continuación, buscar y reemplazar las letras utilizando la función
REGEXREPLACE( ) externa.
Devuelve "999XXX":

REGEXREPLACE(REGEXREPLACE("123ABC";"\d";"9");"[A-Z]";"X")

Devuelve "9X9X9X":

REGEXREPLACE(REGEXREPLACE("1A2B3C";"\d";"9");"[A-Z]";"X")

Reemplazo de la longitud de la cadena y truncamiento


Al utilizar REGEXREPLACE( ) para crear un campo calculado, la longitud del campo calculado es idén-
tica a la longitud del campo original.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 706 de 898


Comandos

Si la longitud de la cadena de reemplazo supera la longitud de la cadena de destino, se incrementa la lon-


gitud total de la cadena, lo que provoca un truncamiento si la longitud del campo calculado no puede acep-
tar la mayor longitud de la cadena.
Los caracteres que se encuentran al final de la cadena de destino son los primeros que se truncan, segui-
dos por los últimos caracteres de la cadena de reemplazo. Los ejemplos que se incluyen a continuación
muestran el truncamiento:

cadena patrón cadena_nueva Longitud de campo Resultado Caracteres truncados

x123x 123 A 5 "xAx" ninguno

x123x 123 ABC 5 "xABCx" ninguno

x123x 123 ABCD 5 "xABCD" "x"

x123x 123 ABCDE 5 "xABCD" "x"; "E"

x123x 123 ABCDE 6 "xABCDE" "x"

x123x 123 ABCDE 7 "xABCDEx" ninguno

Cómo evitar el truncamiento


Para evitar el truncamiento, utilice la función SUBSTR( ) para incrementar la longitud del campo, tal como
se muestra en el segundo ejemplo a continuación.
Devuelve "xABCD", lo cual trunca el carácter de reemplazo "E" y el carácter "x" existente:

REGEXREPLACE("x123x";"123";"ABCDE")

Devuelve "xABCDEx", lo cual incluye todos los caracteres de reemplazo y los caracteres existentes que no
se reemplazaron:

REGEXREPLACE(SUBSTR("x123x";1;10),"123";"ABCDE")

Metacaracteres de las expresiones regulares


La siguiente tabla incluye los metacaracteres que se pueden usar con REGEXFIND( ) y describe la ope-
ración que realiza cada uno de ellos.
Hay más sintaxis de expresiones regulares y ACL trabaja con ella, pero esta sintaxis es más compleja.
Sería imposible incluir una explicación completa de la sintaxis en esta guía. Puede encontrar varios recur-
sos en los que se explican las expresiones regulares en Internet.
ACL utiliza la implementación ECMAScript de expresiones regulares. La mayoría de las implementaciones
de las expresiones regulares utilizan una sintaxis común.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 707 de 898


Comandos

Nota
La implementación actual de las expresiones regulares en ACL no admite com-
pletamente la búsqueda en otros idiomas que no sean el inglés.

Metacarácter Descripción

. Coincide con cualquier carácter (excepto un carácter de línea nueva)

? Busca una coincidencia de 0 o 1 aparición del elemento, metacarácter o literal inmediatamente ante-
rior

* Busca una coincidencia de 0 o más apariciones del elemento, metacarácter o literal inmediatamente
anterior

+ Busca una coincidencia de 1 o más apariciones del elemento, metacarácter o literal inmediatamente
anterior

{} Busca una coincidencia de la cantidad especificada de apariciones del elemento, metacarácter o lite-
ral inmediatamente anterior Puede especificar un número exacto, un rango o un rango abierto.
Por ejemplo:
o a{3} coincide con "aaa"
o X{0,2}L coincide con "L", "XL" y "XXL"
o AB-\d{2,}-YZ coincide con cualquier identificador alfanumérico con el prefijo "AB-", el sufijo "-YZ"
y dos o más números en el cuerpo del identificador

[] Coincide con cualquier carácter único que se encuentre dentro de los corchetes
Por ejemplo:
o [aeiou] coincide con a, o e, o i, u o, o u
o [^aeiou] coincide con cualquier carácter que no sea a, o e, o i, u o, o u
o [A-G] coincide con cualquier letra de la A a la G, en mayúscula
o [A-Ga-g] coincide con cualquier letra mayúscula de la A a la G o con cualquier letra minúscula de
la a a la g
o [5-9] coincide con cualquier número del 5 al 9

() Crea un grupo que define una secuencia o un bloque de caracteres, que pueden ser tratados como
una misma unidad.
Por ejemplo:
o S(ch)?mid?th? coincide con "Smith" o "Schmidt"
o (56A.*){2} coincide con cualquier identificador alfanumérico en el que aparezca la secuencia
"56A", al menos dos veces
o (56A).*-.*\1 coincide con cualquier identificador alfanumérico en el que la secuencia "56A" apa-
rezca al menos dos veces, con un guion entre dos de las apariciones

\ Un carácter de escape que especifica que el carácter siguiente es un literal. Utilice el carácter de
escape si desea hacer coincidir literalmente cualquiera de los metacaracteres. Por ejemplo, \(
encuentra un paréntesis de apertura y \\ encuentra una barra invertida.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 708 de 898


Comandos

Metacarácter Descripción

Utilice el carácter de escape si desea hacer coincidir literalmente cualquiera de los siguientes carac-
teres:
^ $ . * + ? = ! : | \ ( ) [ ] { }
Otros caracteres de puntuación, como & o @, no requieren el carácter de escape.

\ int Especifica que un grupo, anteriormente definido como paréntesis ( ), se repite. int es un número
entero que identifica la posición secuencial del grupo previamente definido en relación con cual-
quier otro grupo. Este metacarácter se puede utilizar en el parámetro patrón tanto en REGEXFIND( )
como en REGEXREPLACE( ).
Por ejemplo:
o (123).*\1 coincide con cualquier identificador en el que el grupo de dígitos "123" aparece dos
veces, como mínimo
o ^(\d{3}).*\1 coincide con cualquier identificador en el que los primeros 3 dígitos se repiten
o ^(\d{3}).*\1.*\1 coincide con cualquier identificador en el cual los primeros 3 dígitos se repiten
dos veces, como mínimo
o ^(\D)(\d)-.*\2\1 coincide con cualquier identificador en el cual el prefijo alfanumérico se repite con
los caracteres alfabéticos y numéricos invertidos

$int Especifica que un grupo que se encuentra en una cadena de destino se utiliza en una cadena de
reemplazo. int es un número entero que identifica la posición secuencial del grupo en la cadena de
destino respecto de otros grupos. Este metacarácter se puede utilizar únicamente en el parámetro
cadena_nueva en REGEXREPLACE( ).
Por ejemplo:
o Si se utiliza el patrón (\d{3})[ -]?(\d{3})[ -]?(\d{4}) para buscar una coincidencia con una variedad
de formatos de número de teléfono diferentes, se puede utilizar cadena_nueva ($1)-$2-$3 para
reemplazar los números por sí mismos y estandarizar el formato. Tanto 999 123-4567 como
9991234567 se convierten en (999)-123-4567.

| Coincide con el carácter, el bloque de caracteres o la expresión que se encuentra antes o después
del separador (|)
Por ejemplo:
o a|b coincide con a o con b
o abc|def coincide con "abc" o "def"
o Sm(i|y)th coincide con Smith o Smyth
o [a-c]|[Q-S]|[x-z] coincide con cualquiera de estas letras: a, b, c, Q, R, S, x, y, z
o \s|- coincide con un espacio o un guion

\w Coincide con cualquier carácter (a a la z, A a la Z, 0 a 9 y el carácter de guion bajo _ )

\W Coincide con cualquier carácter que no sea de palabra (que no sea a a la z, A a la Z, 0 a 9 o el carác-
ter de guion bajo _ )

\d Coincide con cualquier número (cualquier dígito decimal)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 709 de 898


Comandos

Metacarácter Descripción

\D Coincide con cualquier carácter no numérico (cualquier carácter que no sea un dígito decimal)

\s Coincide con un espacio (un espacio en blanco)

\S Coincide con cualquier carácter que no esté en blanco

\b Coincide con el límite de una palabra (entre caracteres \w y \W)


Los límites de las palabras no ocupan un espacio. Por ejemplo:
o "United Equipment" tiene cuatro límites de palabras (uno a cada lado del espacio y uno al
comienzo y al final de la cadena). "United Equipment" coincide con esta expresión regular \b\w*\-
b\W\b\w*\b
Consejo
Además de los espacios, los límites entre las palabras pueden derivar de comas,
puntos u otros caracteres que no sean palabras.
Por ejemplo, la siguiente expresión se evalúa como Verdadera:

REGEXFIND("[email protected]"; "\bexample\b")

^ Coincide con el inicio de una cadena


Dentro de los corchetes [ ], ^ niega el contenido

$ Coincide con el final de una cadena

Funciones relacionadas
Si desea buscar patrones coincidentes sin reemplazarlos, utilice la "Función REGEXFIND( )" en la
página 695.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 710 de 898


Comandos

Función REMOVE( )
Devuelve una cadena que incluye solo los caracteres especificados.

Sintaxis
REMOVE(cadena; caracteres_válidos)

Parámetros
Nombre Tipo Descripción

cadena carácter La cadena de la que se eliminarán los caracteres.

caracteres_válidos carácter Los caracteres que se deben conservar en la cadena.


Si especifica comillas dobles en caracteres_válidos, debe encerrar la
lista de caracteres entre comillas simples.
Por ejemplo: '"-/'
Nota
Si un carácter que especifica no aparece en cadena, no
se lo incluye en el valor que se devuelve.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "ABC123     ":

REMOVE("ABC 123 XX4";"ABC123")

Devuelve "ABC123XX    ":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 711 de 898


Comandos

REMOVE("zABC 123 XX4";"ABCX123")

Devuelve "1234       ":

REMOVE("ABC 123 XX4"; "1234567890")

Devuelve todos los valores del campo Nombre_producto con todos los caracteres que no son numéricos
eliminados:

REMOVE(Número_producto;"0123456789")

Observaciones
Nota
La función REMOVE ha sido sustituida por las funciones INCLUDE( ) y EXCLUDE( ).
Aún está disponible REMOVE( ) en la versión actual deACL para compatibilizar con las
versiones anteriores.

Cómo funciona
La función REMOVE( ) elimina los caracteres no deseados de los datos de caracteres y devuelve una
cadena de longitud fija.

Cuándo usar REMOVE( )


Utilice REMOVE( ) para normalizar los campos de datos que no tienen un formato coherente, como por
ejemplo, los campos de direcciones. También puede utilizar REMOVE( ) para eliminar la puntuación u
otra información no válida de campos con una mala edición.
También puede utilizar la función para limpiar los datos en los campos antes de usar los comandos SORT
o JOIN, para la coincidencia de duplicados o para la salida del reporte.

Coincidir mayúsc.-minúsc.
La función REMOVE( ) distingue entre mayúsculas y minúsculas. Si especifica "ID" en caracteres_
válidos, estos caracteres no se incluyen en "id#94022". Si existe la posibilidad de que las mayúsculas y
minúsculas estén mezcladas, primero use la función UPPER( ) para pasar todos los caracteres de la
cadena a mayúsculas.
Por ejemplo:

REMOVE(UPPER("id#94022"); "ID0123456789")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 712 de 898


Comandos

Funciones relacionadas
REMOVE( ) es similar a la función INCLUDE( ), con la siguiente diferencia:
l REMOVE( ) agrega espacios en blanco al final de la salida para reemplazar los caracteres que se
han quitado. Se mantiene la longitud original de la cadena.
l INCLUDE( ) no agrega espacios en blanco.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 713 de 898


Comandos

Función REPEAT( )
Devuelve una cadena que repite una subcadena un número especificado de veces.

Sintaxis
REPEAT(cadena; recuento)

Parámetros
Nombre Tipo Descripción

cadena carácter La cadena para repetir.

recuento numérico El número de veces que se debe repetir el valor de cadena.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "ABCABCABC":

REPEAT("ABC";3)

Devuelve "000000000":

REPEAT("0";9)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 714 de 898


Comandos

Observaciones
Cuándo usar REPEAT( )
Utilice la función REPEAT( ) para inicializar una variable con valores o espacios en blanco constantes; o
para configurar un valor predeterminado para un campo calculado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 715 de 898


Comandos

Función REPLACE( )
Reemplaza todas las instancias de una cadena de caracteres especificada por una nueva cadena de
caracteres.

Sintaxis
REPLACE(cadena; texto_anterior; nuevo_texto)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor en donde se reemplazan los caracteres.

texto_anterior carácter La cadena de caracteres para reemplazar. La búsqueda distingue


entre mayúsculas y minúsculas.

texto_nuevo carácter El texto con el que se reemplaza el valor en texto_anterior.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "a12345efg":

REPLACE("abcdefg";"bcd";"12345")

Devuelve "Rd.":

REPLACE("Road";"Road";"Rd.")

Devuelve "ac":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 716 de 898


Comandos

REPLACE("abc";"b";"")

Ejemplos avanzados
Quitar los caracteres especificados
Utilice REPLACE( ) para quitar una cadena de caracteres específica de una cadena de origen, reem-
plazándola por una cadena de caracteres vacíos ( "" ).
Devuelve "1234 Scott":

REPLACE("1234 Scott rd."; "rd."; "")

Ajuste de longitud del campo


Si nuevo_texto ("ABC") es más extenso que texto_anterior ("X"), la longitud del campo de la cadena que se
obtiene se incrementa automáticamente para que quepa el primer reemplazo:
Devuelve "9ABC9", con una longitud de campo que se incrementa de 3 a 5 caracteres:

REPLACE("9X9"; "X"; "ABC")

La longitud del campo no se incrementa automáticamente para los siguientes reemplazos y es posible que
se acorte si el campo no es lo suficientemente extenso como para contener a todos los nuevos caracteres.
Devuelve "9ABC9A":

REPLACE("9X9X"; "X"; "ABC")

Para evitar el truncamiento, puede incrementar la longitud de cadena utilizando la función BLANKS( ) o
espacios en blanco literales.
Devuelve "9ABC9ABC":

REPLACE("9X9X" + BLANKS(2); "X"; "ABC")

REPLACE("9X9X" + "  "; "X"; "ABC")

Si la cadena que se obtiene es más corta que cadena, la cadena que se obtiene se completa con espacios
en blanco para conservar la misma longitud de campo.
Devuelve "9X9 ":

REPLACE("9ABC9"; "ABC"; "X")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 717 de 898


Comandos

Observaciones
Cómo funciona
La función REPLACE( ) reemplaza cada instancia de una cadena existente por una nueva cadena.
Devuelve "1234 Scott Road":

REPLACE("1234 Scott rd."; "rd."; "Road")

Cuándo usar REPLACE( )


Utilice REPLACE( ) para normalizar campos de datos con formatos no uniformes, tales como campos de
dirección, o para reemplazar información no válida en campos incorrectamente editados. Para que ope-
raciones tales como las pruebas de duplicados o la unión o la relación de tablas se realicen en forma ade-
cuada, se requieren datos con un formato normalizado o estandarizado.

Coincidir mayúsc.-minúsc.
La función REPLACE( ) distingue entre mayúsculas y minúsculas. Si especifica "RD." en texto_anterior y
los valores en la cadena están en minúsculas, el valor texto_nuevo no será sustituido porque no se encon-
trarán coincidencias.
Si existe la posibilidad de que las mayúsculas y minúsculas estén mezcladas en la cadena, primero use la
función UPPER( ) para poner todos los caracteres en mayúsculas.
Devuelve "1234 SCOTT ROAD":

REPLACE(UPPER("1234 Scott rd."); "RD."; "ROAD")

Protección contra reemplazos accidentales


Al crear una expresión REPLACE( ) debe tener en cuenta todas las instancias posibles de texto_anterior
en la cadena para que no se presenten reemplazos involuntarios.
Devuelve "645 RichaRoad Road", porque las dos últimas letras de "Richard" son "rd":

REPLACE("645 Richard rd  "; "rd"; "Road")

Al agregar un espacio inicial y un espacio final al valor en texto_anterior (" rd "), se evita que la función
reemplace instancias en donde "rd" aparezca dentro de un nombre, dado que en estas instancias no exis-
ten espacios iniciales.
Devuelve "645 Richard Road":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 718 de 898


Comandos

REPLACE("645 Richard rd  "; " rd "; " Road")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 719 de 898


Comandos

Función REVERSE( )
Devuelve una cadena con los caracteres en orden inverso.

Sintaxis
REVERSE(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor del cual se invierte el orden.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "E DCBA":

REVERSE("ABCD E")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 720 de 898


Comandos

Función RJUSTIFY( )
Devuelve una cadena justificada a la derecha con la misma longitud que la cadena especificada, con cual-
quier espacio en blanco final movido a la izquierda de la cadena.

Sintaxis
RJUSTIFY(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para justificar a la derecha.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "   ABC":

RJUSTIFY("ABC   ")

Observaciones
Cuándo usar RJUSTIFY( )
Utilice RJUSTIFY( ) para justificar un campo de caracteres a la derecha.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 721 de 898


Comandos

Función RLOGICAL( )
Devuelve un valor lógico calculado por un script o una función Rvachev. El procesamiento de datos en R
se hace fuera de ACL.

Sintaxis
RLOGICAL(rScript|rCódigo <;campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

rScript | rCódigo carácter La ruta completa o relativa al script de R o un fragmento de código R


que se debe ejecutar.
Si introduce directamente código R en lugar de utilizar un archivo
externo, no puede utilizar el carácter de comillas para encerrar texto
en su código, ni siquiera utilizando el carácter de escape:
o válido: 'var <- "\"prueba\"" '
o no válido: 'var <- "\'prueba\'" '

campo | valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben
utilizar como argumentos para el fragmento de código o script R.
opcional numérico
Los valores se pasan la función que invoque en el orden en que lo
fechahora
especifique y usted hace referencia a ellos utilizando valor1, valor2
lógico ... valorN en el código R.
Puede incluir tantos argumentos como sea necesario para satisfacer
la definición de la función en el código R.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Salida
Lógico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 722 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve T:

RLOGICAL("(value1>0.6) & (value2>0.7) & (value3>0.5)"; 0,8; 0,9; 0,55)

Ejemplos avanzados
Uso de un script externo de R
Acepta una cantidad y un valor umbral superior e inferior. La función devuelve un valor de verdad sobre la
base de una serie de comparaciones lógicas:

RLOGICAL("a<-'c:\\scripts\\sample.r');a[[1]]"; expense_amt; threshold_low; threshold_hi)

Script externo de R (sample.r):

test_truth <- function(amt, low, hi) {


return(((amt > low) & (amt < hi)) | ((amt==low) | (amt==hi)))
}
test_truth(value1, value2, value3)

Uso de código R almacenado en una variable


Realiza una prueba lógica de tres campos utilizando un AND lógico:

v_rcode = "(value1>0.6) & (value2>0.7) & (value3>0.5)"


RLOGICAL(v_rcode, PACKED, MICRO_LONG, ACCPAC)

Observaciones
Datos devueltos por R
Al invocar scripts de R, utilice la función source y asigne el objeto de retorno a una variable. Puede acceder
al valor que devolvió su función Rvachev desde el objeto devuelto:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 723 de 898


Comandos

# 'a' contiene el objeto de respuesta y a[[1]] accede al valor de los datos


"a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Uti-
lice este archivo de log para depurar los errores de R.
Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R externos en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 724 de 898


Comandos

Función RNUMERIC( )
Devuelve un valor numérico calculado por un script o una función Rvachev. El procesamiento de datos en R
se hace fuera de ACL.

Sintaxis
RNUMERIC(rScript|rCódigo; decimales <;campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

rScript | rCódigo carácter La ruta completa o relativa al script de R o un fragmento de código R


que se debe ejecutar.
Si introduce directamente código R en lugar de utilizar un archivo
externo, no puede utilizar el carácter de comillas para encerrar texto
en su código, ni siquiera utilizando el carácter de escape:
o válido: 'var <- "\"prueba\"" '
o no válido: 'var <- "\'prueba\'" '

decimales numérico El número de lugares decimales para incluir en el valor devuelto.


Debe ser un entero positivo.

campo | valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para el fragmento de código o script R.
opcional numérico
Los valores se pasan la función que invoque en el orden en que lo
fechahora
especifique y usted hace referencia a ellos utilizando valor1, valor2 ...
lógico valorN en el código R.
Puede incluir tantos argumentos como sea necesario para satisfacer
la definición de la función en el código R.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Salida
Numérico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 725 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve 100 con 10 decimales (100,0000000000):

RNUMERIC("print(value1)"; 10; 100)

Ejemplos avanzados
Almacenamiento de código R como una variable
Devuelve 100 con 10 decimales (100,0000000000):

ASSIGN v_rcódigo = "print(value1)"
RNUMERIC(v_código; 10; 100)

Escritura a un archivo externo


Realiza una adición simple y escribe el comentario junto con la función en un archivo utilizando la función
sink en R:

RNUMERIC("foo<-function(x,y){x+y};attr(foo, 'comment') <- 'foo performs simple addition';sink('c:/-


temp/result.txt');attributes(foo);sink(NULL);foo(value1,value2)";0; amt; gross)

Observaciones
Datos devueltos por R
Al invocar scripts de R, utilice la función source y asigne el objeto de retorno a una variable. Puede acce-
der al valor que devolvió su función Rvachev desde el objeto devuelto:

# 'a' contiene el objeto de respuesta y a[[1]] accede al valor de los datos


"a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Uti-
lice este archivo de log para depurar los errores de R.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 726 de 898


Comandos

Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R externos en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 727 de 898


Comandos

Función ROOT( )
Devuelve la raíz cuadrada de una expresión numérica.

Sintaxis
ROOT(número; decimales)

Parámetros
Nombre Tipo Descripción

número numérico La expresión numérica de la cual se busca la raíz cuadrada.


Esta función devuelve cero si número es un número negativo.

decimales numérico La cantidad de decimales que se usarán en la salida.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 10,00:

ROOT(100; 2)

Devuelve 31,6228:

ROOT(1000; 4)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 728 de 898


Comandos

Observaciones
Cómo funciona
La función ROOT( ) devuelve la raíz cuadrada de la expresión numérica o el valor de campo con el número
especificado de posiciones decimales. El resultado se redondea adecuadamente.

Cuándo usar ROOT( )


Utilice LOG( ) para realizar otras funciones de raíz, como la raíz cúbica.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 729 de 898


Comandos

Función ROUND( )
Devuelve un número entero redondeado para un valor numérico.

Sintaxis
ROUND(número)

Parámetros
Nombre Tipo Descripción

número numérico El valor que se redondeará al entero más cercano.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 7:

ROUND(7,2)

Devuelve 8:

ROUND(7,5)

Devuelve -8:

ROUND(-7,5)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 730 de 898


Comandos

Ejemplos avanzados
Redondeo de valores monetarios
Crea un campo que es igual al saldo redondeado al valor más cercano en dólares:

DEFINE FIELD Valor_dólar_más_cercano COMPUTED ROUND(Saldo)

Observaciones
Cómo funciona
ROUND( ) devuelve un número igual al valor número redondeado al entero más cercano:
l Para los valores positivos de número, la función se redondea los valores decimales >= 0,5 hacia el
entero superior y los valores < 0,5 hacia el entero inferior
l Para los valores negativos de número, la función redondea los valores decimales >=0,5 hacia al
entero inferior y < 0,5 hacia el entero inferior

Redondeo a un número particular de lugares decimales


Si desea redondear un número a una determinada posición de decimales, utilice la función DEC( ). La fun-
ción ROUND( ) es igual a la función DEC( ) sin decimales especificados.

ROUND(número)
es equivalente a

DEC(número; 0)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 731 de 898


Comandos

Función RSTRING( )
Devuelve un valor de cadena calculado por un script o una función Rvachev. El procesamiento de datos
en R se hace fuera de ACL.

Sintaxis
RSTRING(rScript|rCódigo; longitud <;campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

rScript | rCódigo carácter La ruta completa o relativa al script de R o un fragmento de código R


que se debe ejecutar.
Si introduce directamente código R en lugar de utilizar un archivo
externo, no puede utilizar el carácter de comillas para encerrar texto
en su código, ni siquiera utilizando el carácter de escape:
o válido: 'var <- "\"prueba\"" '
o no válido: 'var <- "\'prueba\'" '

longitud numérico La longitud que se debe asignar para la cadena de retorno.

campo | valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben
utilizar como argumentos para el fragmento de código o script R.
opcional numérico
Los valores se pasan la función que invoque en el orden en que lo
fechahora
especifique y usted hace referencia a ellos utilizando valor1, valor2
lógico ... valorN en el código R.
Puede incluir tantos argumentos como sea necesario para satisfacer
la definición de la función en el código R.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Salida
Carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 732 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve "abc123":

RSTRING("print(paste(value1,value2,sep=""))",6,"abc","123")

Ejemplos avanzados
Uso de un script externo de R
Concatena x e y en una única cadena delimitada por un carácter de espacio:

RSTRING("a<-source('./sample.r');a[[1]]";50; FirstName; LastName)

Script externo de R (sample.r):

conc<-function(x, y) {
paste(x, y, sep=" ")
}
print(conc(value1, value2))

Uso de código R almacenado en una variable


Concatena x e y en una única cadena delimitada por un carácter de espacio:

ASSIGN v_script = "conc <- function(x, y){paste(x, y, sep=' ')};conc(value1, value2)"


RSTRING(v_script; 50; Nombre; Apellido)

Uso de R para generar un UUID para una tabla


Está preparando una tabla de excepciones para cargar a Resultados y necesita un identificador único
garantizado para cada registro. Para generar este campo, utiliza el paquete uuid de R para crear un valor
clave primario exclusivo para cada registro:

EXTRACT RSTRING("uuid::UUIDgenerate()", 36) AS "id"; primer_nombre; apellido; segundo_nom-


bre; fecha_nacimiento TO tabla_exportada

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 733 de 898


Comandos

Consejo
Para abrir el paquete uuid, abra R.exe y ejecute el siguiente comando:

install.packages("uuid")

Observaciones
Datos devueltos por R
Al invocar scripts de R, utilice la función source y asigne el objeto de retorno a una variable. Puede acce-
der al valor que devolvió su función Rvachev desde el objeto devuelto:

# 'a' contiene el objeto de respuesta y a[[1]] accede al valor de los datos


"a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Uti-
lice este archivo de log para depurar los errores de R.
Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R externos en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 734 de 898


Comandos

Función RTIME( )
Devuelve un valor de hora calculado por un script o una función Rvachev. El procesamiento de datos en R
se hace fuera de ACL.

Sintaxis
RTIME(rScript|rCódigo <;campo|valor <;...n>>)

Parámetros
Nombre Tipo Descripción

rScript | rCódigo carácter La ruta completa o relativa al script de R o un fragmento de código R


que se debe ejecutar.
Si introduce directamente código R en lugar de utilizar un archivo
externo, no puede utilizar el carácter de comillas para encerrar texto
en su código, ni siquiera utilizando el carácter de escape:
o válido: 'var <- "\"prueba\"" '
o no válido: 'var <- "\'prueba\'" '

campo | valor <;...n> carácter Esta lista de campos, expresiones o valores literales que se deben uti-
lizar como argumentos para el fragmento de código o script R.
opcional numérico
Los valores se pasan la función que invoque en el orden en que lo
fechahora
especifique y usted hace referencia a ellos utilizando valor1, valor2 ...
lógico valorN en el código R.
Puede incluir tantos argumentos como sea necesario para satisfacer
la definición de la función en el código R.
Nota
Utilice la función ALLTRIM() para quitar los espacios al
principio o al final en las entradas de caracteres:
ALLTRIM(str). Si desea obtener más información, con-
sulte "Función ALLTRIM( )" en la página 430.

Salida
Fechahora.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 735 de 898


Comandos

Ejemplos
Ejemplos básicos
Devuelve `t0545`:

RTIME("value1+2700";`t0500`)

Ejemplos avanzados
Uso de un script externo de R
Agrega 45 minutos a un campo de hora pasando un campo y un valor literal a una función Rvachev
externa:

RTIME("a<-source('c:\\scripts\\sample.r');a[[1]]"; hora_finalización; 2700)

Script externo de R (sample.r):

add_time <- function(start, sec) {


return(start + sec)
}
add_time(value1, value2)

Observaciones
Datos devueltos por R
Al invocar scripts de R, utilice la función source y asigne el objeto de retorno a una variable. Puede acce-
der al valor que devolvió su función Rvachev desde el objeto devuelto:

# 'a' contiene el objeto de respuesta y a[[1]] accede al valor de los datos


"a<-source('c:\\scripts\\r_scripts\\sample.r');a[[1]]"

Archivo de log de R
ACL registra los mensajes del lenguaje R en un archivo aclrlang.log en la carpeta del proyecto. Uti-
lice este archivo de log para depurar los errores de R.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 736 de 898


Comandos

Consejo
El archivo de log está disponible en la carpeta Resultados de los trabajos de estudio ana-
lítico de ACL GRC Analytics Exchange.

Ejecución de scripts de R externos en el Servidor de AX


Si está escribiendo una aplicación de análisis para ejecutarla en el Servidor de AX y desea trabajar con
scripts de R externos:
1. Cargue el archivo como un archivo relacionado con la aplicación de análisis.
2. Utilice la etiqueta de estudio analítico FILE para identificar el o los archivos.
3. Haga referencia a los archivos utilizando la ruta relativa ./nombre_del_archivo.r.
Nota
El uso de un archivo relacionado garantiza que la cuenta del servidor de la aplicación
TomEE cuente con permisos suficientes para acceder al archivo al ejecutar R con ACL
GRC Analytics Exchange.

Zona horaria del sistema


El entorno R de ACL utiliza la zona horaria del Meridiano de Greenwich (GMT) por valor predeterminado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 737 de 898


Comandos

Función SECOND( )
Extrae los segundos de una hora o fechahora especificada y la devuelve como un valor numérico.

Sintaxis
SECOND(hora/fechahora)

Parámetros
Nombre Tipo Descripción

hora/fechahora fechahora El campo, expresión o el valor literal de donde extraer los segundos.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 30:

SECOND(`t235930`)

SECOND(`20141231 235930`)

Devuelve los segundos para cada valor en el campo Hora_inicio_llamada:

SECOND(Hora_inicio_llamada)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 738 de 898


Comandos

Observaciones
Detalles del parámetro
Un campo especificado para hora/fechahora puede utilizar cualquier formato de hora o fechahora, siempre
que la definición del campo establezca correctamente el formato.
Especificar un valor de fechahora u hora literal
Al especificar un valor literal de hora o fechahora para hora/fechahora, solo puede utilizar los formatos de la
siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231 235959`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de hora: puede utilizar cualquiera de los formatos de la siguiente tabla. Debe utilizar un sepa-
rador antes de un valor de la hora independiente para que la función opere correctamente. Los sepa-
radores válidos son la letra 't' o la letra 'T'. Debe especificar las horas con el reloj de 24 horas. Los
desplazamientos respecto del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir
precedidos de un signo más (+) o un signo menos (-).
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.

Formatos de ejemplo Valores literales de ejemplo

thhmmss `t235959`

Thhmm `T2359`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 739 de 898


Comandos

Formatos de ejemplo Valores literales de ejemplo

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 740 de 898


Comandos

Función SHIFT( )
Devuelve una cadena de caracteres individuales con los bits en el primer carácter del valor de entrada
hacia la izquierda o derecha.

Sintaxis
SHIFT(carácter; número_de_bits_a_la_izquierda)

Parámetros
Nombre Tipo Descripción

carácter carácter El valor para el cual se desplazan los bits.

número_de_bits_a_ numérico Especifica el número de bits para desplazar el valor del carácter.
la_izquierda o Si el valor es positivo: carácter se desplaza hacia la izquierda
o Si el valor es negativo: carácter se desplaza hacia la derecha
Si el valor especificado es mayor que 15 o menor que -15, el resul-
tado es cero binario, CHR(0).

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve la letra "X" o CHR(88) (00010110 se transforma en 01011000):

SHIFT(CHR(22); 2)

Devuelve el carácter de retroceso o CHR(8) (00010000 se transforma en 00001000):

SHIFT(CHR(16); -1)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 741 de 898


Comandos

Devuelve el carácter de acento grave o or CHR(96) (10011011 se transforma en 01100000):

SHIFT(CHR(155); 5)

Observaciones
Cuándo usar SHIFT( )
Utilice SHIFT( ) junto con las funciones BYTE( ), CHR( ) y MASK( ) para aislar y mover bits individuales de
un registro.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 742 de 898


Comandos

Función SIN( )
Devuelve el seno de un ángulo expresado en radianes, con una precisión de 15 lugares decimales.

Sintaxis
SIN(radianes)

Parámetros
Nombre Tipo Descripción

radianes numérico La medida del ángulo en radianes.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 0,500000000000000 (el seno de la cantidad especificada de radianes, equivalente a 30 grados):

SIN(0,523598775598299)

Devuelve 0,5500000000000000 (el valor del seno de 30 grados):

SIN(30 * PI( )/180)

Ejemplos avanzados
Uso de grados como información de entrada
Devuelve 0,500 (el coseno de 30 grados, redondeado a 3 lugares decimales):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 743 de 898


Comandos

DEC(SIN(30 * PI( )/180);3)

Observaciones
Realización de la Prueba de arco de la mantisa
as tres funciones trigonométricas de ACL – SIN( ), COS( ) y TAN( ) – permiten realizar la Prueba de arco
de la mantisa asociada con la Ley de Benford.

Conversión de grados a radianes


Si su entrada es en grados, puede utilizar la función PI( ) para convertir la entrada en radianes: (grados *
PI( )/180) = radianes. Si es necesario, puede redondear o truncar el valor devuelto utilizando la función
DEC( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 744 de 898


Comandos

Función SOUNDEX( )
Devuelve el código soundex para la cadena especificada, que puede ser utilizado para las comparaciones
fonéticas con otras cadenas.

Sintaxis
SOUNDEX(nombre)

Parámetros
Nombre Tipo Descripción

nombre carácter La expresión de caracteres para evaluar.

Salida
Carácter. Devuelve un código soundex de cuatro caracteres.

Ejemplos
Ejemplos básicos
Palabras que suenan igual pero se escriben diferente
Los dos ejemplos a continuación ofrecen el mismo código soundex porque suenan igual, aunque se escri-
ben de manera diferente.
Devuelve F634:

SOUNDEX("Fairdale")

Devuelve F634:

SOUNDEX("Faredale")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 745 de 898


Comandos

Palabras que suenan de modo similar


Los dos ejemplos a continuación devuelven códigos soundex diferentes, pero cercanos, porque ambas
palabras suenan de manera similar.
Devuelve J525:

SOUNDEX("Jonson")

Devuelve J523:

SOUNDEX("Jonston")

Palabras que suenan diferente


Los dos ejemplos a continuación devuelven códigos soundex que son bastante diferentes, pero las dos
palabras no pronuncian para nada de manera similar.
Devuelve S530:

SOUNDEX("Smith")

Devuelve M235:

SOUNDEX("MacDonald")

Valor de entrada del campo


Devuelve el código soundex para cada valor en el campo Apellido:

SOUNDEX(Apellido)

Ejemplos avanzados
Identificación de códigos soundex coincidentes
Cree el campo calculado Código_soundex para mostrar el código soundex de cada valor del campo Ape-
llido:

DEFINE FIELD Código_soundex COMPUTED SOUNDEX(Apellido)

Agregue el campo Código_soundeX a la vista y, a continuación, realice una prueba de duplicados en el


campo calculado para identificar todos los códigos soundex coincidentes:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 746 de 898


Comandos

DUPLICATES ON Código_soundex OTHER Apellido PRESORT OPEN TO "Posibles_Duplicados.fil"

Los códigos soundex coincidentes indican que los valores de caracteres asociados en el campo Apellido
son posibles duplicados.

Observaciones
Cuándo usar SOUNDEX( )
Utilice la función SOUNDEX( ) para buscar valores que suenen de manera similar. La similitud fonética es
una manera de localizar posibles valores duplicados, u ortografía incoherente en los datos que se intro-
ducen de forma manual.

Cómo funciona
SOUNDEX( ) devuelve el código Soundex estadounidense para la cadena evaluada. Todos los códigos
están compuestos por una letra seguida de tres números. Por ejemplo: "F634".

Cómo se deriva el código soundex


l El primer carácter del código representa la primera letra de la cadena que se evaluó.
l Cada número del código representa uno de los seis grupos Soundex estadounidenses. Los grupos
están conformados por consonantes fonéticamente similares.
En función de estos grupos, el proceso soundex codifica las tres primeras consonantes de la cadena
evaluada después de la primera letra.

Qué ignora el proceso soundex


El proceso soundex ignora lo siguiente:
l uso de mayúsculas
l vocales
l las consonantes "H", "W" y "Y"
l todas las consonantes que aparecen después de las tres consonantes codificadas
Uno o más ceros (0) en el código devuelto indican una cadena evaluada con menos de tres consonantes
después de la primera letra.

Limitaciones del proceso soundex


Tanto la función SOUNDEX( ) como la función SOUNDSLIKE( ) tienen ciertas limitaciones:
l El algoritmo soundex está diseñado para trabajar con las palabras pronunciadas en inglés y tiene
diferentes grados de efectividad cuando se usa con otros idiomas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 747 de 898


Comandos

l Aunque el proceso soundex realiza una coincidencia fonética, todas las palabras coincidentes
deben comenzar con la misma letra, lo que significa que algunas palabras que suenan igual no se
dan por coincidentes.
Por ejemplo, una palabra que comienza con una "F" y una palabra que comienza con "Ph" podrían
sonar igual, pero nunca se darán por coincidentes.

Funciones relacionadas
l SOUNDSLIKE( ): proporciona un método alternativo para comparar cadenas fonéticamente.
l ISFUZZYDUP( ) y LEVDIST: comparan cadenas según la comparación ortográfica (escritura) en
lugar de hacerlo por una comparación fonética (sonido).
l DICECOEFFICIENT( ): le quita el énfasis o ignora completamente la posición relativa de los carac-
teres o de los bloques de caracteres al comparar cadenas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 748 de 898


Comandos

Función SOUNDSLIKE( )
Devuelve un valor lógico que indica si una cadena coincide fonéticamente con una cadena de comparación.

Sintaxis
SOUNDSLIKE(nombre; suena_como_nombre)

Parámetros
Nombre Tipo Descripción

nombre carácter La primera cadena de la comparación.

suena_como_nom- carácter La segunda cadena de la comparación.


bre

Salida
Lógico. Devuelve T (verdadero) si los valores que se están comparando coinciden fonéticamente y F (falso)
en caso contrario.

Ejemplos
Ejemplos básicos
Devuelve T, porque tanto “Fairdale” como “Faredale” tienen un código soundex de F634:

SOUNDSLIKE("Fairdale";"Faredale")

Devuelve F, porque "Jonson" tiene un código soundex de J525 y "Jonston" tiene un código soundex de
J523:

SOUNDSLIKE("Jonson";"Jonston")

Devuelve un valor lógico (T o F) que indica si el código soundex para cada valor del campo Apellido coin-
cide con el código soundex para la cadena "Smith":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 749 de 898


Comandos

SOUNDSLIKE(Apellido; Smith")

Ejemplos avanzados
Aislar valores que suenan como "Smith"
Cree un filtro que aísle todos los valores del campo Apellido que suenan como "Smith":

SET FILTER TO SOUNDSLIKE(Apellido;"Smith")

Observaciones
Cuándo usar SOUNDSLIKE( )
Utilice la función SOUNDSLIKE( ) para buscar valores que suenen de manera similar. La similitud fonética
es una manera de localizar posibles valores duplicados, u ortografía incoherente en los datos que se intro-
ducen de forma manual.

Cómo funciona
SOUNDSLIKE( ) convierte las cadenas de comparación en códigos Soundex de cuatro caracteres esta-
dounidenses, a partir de la primera letra y las tres primeras consonantes después de la primera letra, en
cada cadena.
A continuación, la función compara el código de cada cadena y devuelve un valor lógico que indica si coin-
ciden.
Si desea obtener más información acerca de los códigos soundex, consulte "Función SOUNDEX( )" en la
página 745.

Coincidir mayúsc.-minúsc.
Esta función no distingue entre mayúsculas y minúsculas; por lo tanto "SMITH" es equivalente a "smith".

Limitaciones del proceso soundex


Tanto la función SOUNDSLIKE( ) como la función SOUNDEX( ) tienen ciertas limitaciones:
l El algoritmo soundex está diseñado para trabajar con las palabras pronunciadas en inglés y tiene
diferentes grados de efectividad cuando se usa con otros idiomas.
l Aunque el proceso soundex realiza una coincidencia fonética, todas las palabras coincidentes
deben comenzar con la misma letra, lo que significa que algunas palabras que suenan igual no se
dan por coincidentes.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 750 de 898


Comandos

Por ejemplo, una palabra que comienza con una "F" y una palabra que comienza con "Ph" podrían
sonar igual, pero nunca se darán por coincidentes.

Funciones relacionadas
l SOUNDEX( ): proporciona un método alternativo para comparar cadenas fonéticamente.
l ISFUZZYDUP( ) y LEVDIST: comparan cadenas según la comparación ortográfica (escritura) en
lugar de hacerlo por una comparación fonética (sonido).
l DICECOEFFICIENT( ): le quita el énfasis o ignora completamente la posición relativa de los carac-
teres o de los bloques de caracteres al comparar cadenas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 751 de 898


Comandos

Función SPLIT( )
Devuelve un segmento especificado de una cadena.

Sintaxis
SPLIT(cadena; separador; segmento <;calificador_de_texto>)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor del cual extraer el segmento.

separador carácter El o los caracteres que delimitan segmentos.


Si desea obtener más información, consulte "Cómo funciona el carác-
ter separador" en la página 754.

segmento numérico El segmento que se extraerá.


Utilice un número para especificar qué segmento se extraerá. Por
ejemplo, para extraer el tercer segmento, especifique 3.

calificador_de_texto carácter El o los caracteres que indican el inicio y el final de los segmentos de
texto.
opcional
Si el carácter separador está presente dentro de un par de cali-
ficadores de texto, se lo lee como texto y no como separador.
Debe encerrar el calificador de texto entre comillas. Los calificadores
de texto de comillas simples deben estar entre comillas dobles, y los
calificadores de texto de comillas dobles deben estar entre comillas
simples.
Consejo
Este parámetro opcional puede resultar útil al trabajar
con datos de origen importados que conservan los
separadores y los calificadores de texto.

Salida
Carácter.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 752 de 898


Comandos

Ejemplos
Ejemplos básicos
Segmentos delimitados por comas
Devuelve "seg1":

SPLIT("seg1,seg2,seg3"; ","; 1)

Devuelve "seg3":

SPLIT("seg1,seg2,seg3"; ","; 3)

Devuelve "" (el tercer segmento está vacío):

SPLIT("seg1,seg2,,seg4"; ","; 3)

Delimitadores de varios caracteres y espacios


Devuelve "seg3":

SPLIT("seg1/*seg2/*seg3"; "/*"; 3)

Devuelve "Doe":

SPLIT("Jane Doe"; " "; 2)

Delimitadores de escape con un calificador de texto


Devuelve "Doe, Jane", que incluye una coma que se lee como texto y no como separador:

SPLIT('"Doe, Jane";"Smith, John"'; ","; 1; '"')

Ejemplos avanzados
Extracción de dígitos de un número de tarjeta de crédito
Utilice el comando SPLIT( ) para quitar guiones de un número de tarjeta de crédito.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 753 de 898


Comandos

Las variables se utilizan para capturar cada segmento del número de tarjeta de crédito y luego los seg-
mentos se concatenan entre sí en una variable adicional.

ASSIGN seg1 = SPLIT("4150-2222-3333-4444"; "-"; 1)


ASSIGN seg2 = SPLIT("4150-2222-3333-4444"; "-"; 2)
ASSIGN seg3 = SPLIT("4150-2222-3333-4444"; "-"; 3)
ASSIGN seg4 = SPLIT("4150-2222-3333-4444"; "-"; 4)
ASSIGN ccNum = seg1 + seg2 + seg3 + seg4

El valor de ccNum es “4150222233334444”.


El ejemplo anterior ilustra la función SPLIT ( ), pero tenga en cuenta que se pueden quitar los guiones de
forma más eficaz utilizando la función EXCLUDE( ).

Observaciones
Cómo funciona
La función SPLIT( ) divide los datos de caracteres en segmentos en función de los separadores, como
comas o espacios y extrae un segmento especificado.

Cuándo usar SPLIT( )


Utilice la función SPLIT( ) para extraer un segmento de datos en particular de un registro o un campo. El
segmento debe aparecer en la misma posición en cada registro o campo.

Cómo funciona el carácter separador


El carácter separador delimita o indica los segmentos de datos en una cadena de origen.
En una cadena con una cantidad de segmentos, la mayoría de los segmentos aparecen entre dos sepa-
radores. Sin embargo, es posible que el primer segmento no esté antecedido por un carácter separador y
que el último segmento no tenga un carácter separador inmediatamente detrás.
Por ejemplo:

SPLIT("seg1,seg2,seg3"; ","; 1)

Si la cadena de origen comienza con un separador, el segmento siguiente al separador se trata como seg-
mento 2.
Devuelve "seg1":

SPLIT("seg1,seg2,seg3"; ","; 2)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 754 de 898


Comandos

Coincidir mayúsc.-minúsc.
Si separador o calificador_de_texto especifica caracteres que tienen tanto una versión en mayúscula como
en minúscula, la letra que se utilice debe coincidir con la del separador o el calificador de texto de los datos.

Funciones relacionadas
SPLIT( ) y SUBSTR( ) devuelven un segmento de datos de una cadena de origen más extensa.
l SPLIT( ) identifica el segmento sobre la base de un carácter separador.
l SUBSTR( ) identifica el segmento sobre la base de una posición numérica de los caracteres.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 755 de 898


Comandos

Función STOD( )
Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de fecha. Abre-
viatura de la expresión "Fecha de serie a fecha", en inglés.

Sintaxis
STOD(fecha_de_serie <;fecha_de_inicio>)

Parámetros
Nombre Tipo Descripción

fecha_de_serie numérico El campo, expresión o valor literal a convertir.


fecha_de_serie puede aceptar una fecha de serie o una fechahora
de serie. Solo se considera la porción fecha de la fechahora de serie.
La porción hora se ignora.

fecha_de_inicio fechahora La fecha de inicio a partir de la cual se calculan las fechas de serie.
Si se omite, se utiliza el valor de inicio predeterminado que es el 01
opcional
de enero de 1900.

Salida
Fechahora. La salida del valor fecha utiliza el formato de visualización de fecha actual de ACL.

Ejemplos
Ejemplos básicos
Devuelve `20141231` que se visualiza como 31 Dic 2014 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

STOD(42003)

Devuelve `20181231` que se visualiza como 31 Dic 2018 suponiendo que el formato de visualización
actual de la fecha de ACL sea DD MMM AAAA:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 756 de 898


Comandos

STOD(42003; `19040101`)

Devuelve la fecha equivalente para cada valor de fecha de serie en el campo Fecha_de_factura:

STOD(Fecha_de_factura)

Ejemplos avanzados
Ajuste para una fecha de inicio anterior a 1900-01-01
Utilice la aritmética de fecha para ajustar la fecha de inicio a un valor anterior a la fecha mínima de 1 de
enero de 1900 de ACL:
1. Convierte la fecha de serie utilizando la fecha de inicio predeterminada.
2. Reste la cantidad de días antes de 1900-01-01 en los que cae la fecha de inicio real.
Para usar 1899-01-01 como la fecha de inicio (se evalúa como `20131231`):

STOD(42003) - 365

Observaciones
Cómo funciona
La función STOD ( ) le permite convertir fechas de serie a fechas regulares. Las fechas de serie ACL repre-
sentan la cantidad de días que han transcurrido desde el 01 de enero 1900.

Fecha de serie Fecha regular equivalente

1 02 enero 1900

365 31 diciembre 1900

42003 31 diciembre 2014

0 no válido

Si desea obtener más información acerca de las fechas de serie, consulte Fechahoras en serie.

Comparación entre las fechas de serie de ACL y las fechas de serie de Excel
Las fechas de serie ACL son similares a las fechas de serie de Microsoft Excel. Debe tener en cuenta que
hay un punto clave de similitud y una diferencia clave. Los dos temas no están relacionados.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 757 de 898


Comandos

Coincidencias
Tanto ACL como Excel tratan el año 1900 como un año bisiesto, con 366 días. Aunque 1900 no fue, de
hecho, un año bisiesto, Excel lo trató como uno con el fin de mantener la compatibilidad con Lotus 1-2-3.

Diferencias
Las fechas de serie ACL están desplazadas en un día respecto las fechas de serie de Excel. En Excel, el
01 enero 1900 tiene una fecha de serie de '1 '. En ACL, el 01 enero 1900 no se cuenta y el 02 enero 1900
tiene una fecha de serie de '1 '.

La fecha_de_inicio
Algunos archivos de datos de origen tal vez usen una fecha de inicio diferente del 1 de enero de 1900. La
fecha_de_inicio le permite hacer coincidir la fecha de inicio en un archivo de datos de origen. La fecha de
inicio es la fecha a partir de la cual se calculan las fechas de serie.

Fecha de ini-
cio en los
archivos de
datos de ori-
gen Especificar: Detalles

01 enero STOD(campo_fecha) No es necesario que especifique una fecha_inicio, porque la


1900 fecha de inicio predeterminada es el 1 de enero de 1900.

01 enero STOD(campo_fecha; Especifica una fecha_inicio de `19010101` para que coincida


1900 `19010101`) con la fecha de inicio de 01 de enero de 1901 que se utilizó en
el archivo de datos de origen.

01 de enero STOD(campo_fecha) - 365 No se puede especificar una fecha_de_inicio anterior al 01


de 1899 enero 1900. Si un campo de datos de origen utiliza una fecha
de inicio anterior a 01 enero 1900, puede crear una expresión
de fechahora que reste un número apropiado de días de los
resultados de salida de la función STOD( ).

Otras funciones de conversión de fechahora


Conversión de datos de Serie a Fechahora
Función Descripción

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 758 de 898


Comandos

Función Descripción

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Conversión de datos de Carácter o Numéricos a Fechahora


Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer
la fecha del valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abre-
viatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de la


expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Conversión de datos de Fechahora a Carácter


Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una cadena
de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la fechahora
actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 759 de 898


Comandos

Función STODT( )
Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una porción frac-
cionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión "Fecha de serie a
fechahora", en inglés.

Sintaxis
STODT(fechahora_de_serie <;fecha_de_inicio>)

Parámetros
Nombre Tipo Descripción

fechahora_de_serie numérico El campo, expresión o valor literal a convertir.


Se requieren valores de fechahora de serie con las porciones de
fecha y hora separadas por una coma decimal. Por ejemplo,
42003,75000

fecha_de_inicio fechahora La fecha de inicio a partir de la cual se calculan las fechas de serie.
Si se omite, se utiliza el valor de inicio predeterminado que es el 01
opcional
de enero de 1900.

Salida
Fechahora. La salida del valor fechahora utiliza los formatos de visualización de fecha y hora actuales de
ACL.

Ejemplos
Ejemplos básicos
Fechas de inicio sin ajustar
Devuelve `20141231t060000` que se visualiza como 31 Dic 2014 06:00:00 AM suponiendo que los for-
matos de visualización actual de la fecha y la hora de ACL sean DD MMM AAAA y hh:mm:ss PM:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 760 de 898


Comandos

STODT(42003,25000)

Devuelve `20141231t191530` que se visualiza como 31 Dic 2014 07:15:30 PM suponiendo que los for-
matos de visualización actual de la fecha y la hora de ACL sean DD MMM AAAA y hh:mm:ss PM:

STODT(42003,802431)

Fechas de inicio ajustadas


Devuelve `20181231t120000` que se visualiza como 31 Dic 2018 12:00:00 PM suponiendo que los for-
matos de visualización actual de la fecha y la hora de ACL sean DD MMM AAAA y hh:mm:ss PM:

STODT(42003,50000; `19040101`)

Campos como valor de entrada


Devuelve la fechahora equivalente para cada valor de fechahora de serie del campo Fechahora_de_recep-
ción:

STODT(Fechahora_de_recepción)

Ejemplos avanzados
Ajuste para una fecha de inicio anterior a 1900-01-01
Utilice la aritmética de fecha para ajustar la fecha de inicio a un valor anterior a la fecha mínima de 1 de
enero de 1900 de ACL:
1. Convierte la fechahora de serie utilizando la fecha de inicio predeterminada.
2. Reste la cantidad de días antes de 1900-01-01 en los que cae la fecha de inicio real.
Para usar 1899-01-01 como la fecha de inicio (se evalúa como `20131231t180000`):

STODT(42003,75000) - 365

Observaciones
Cómo funciona
La función STODT( ) le permite convertir fechashoras de serie a fechashoras regulares. Las fechashoras
de serie ACL representan el número de días que han transcurrido desde el 01 de enero 1900, y después de
la coma decimal, representan una porción fraccionaria de 24 horas, con 24 horas equivalente a 1.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 761 de 898


Comandos

Fechahora de serie Fechahora regular equivalente

1,25 02 enero 1900 06:00:00 AM

365,75000 31 diciembre 1900 06:00:00 PM

42003,79167 31 diciembre 2014 07:00:00 PM

42003,802431 31 diciembre 2014 07:15:30 PM

42003,00000 31 diciembre 2014 12:00:00 AM

42003,50000 31 diciembre 2014 12:00:00 PM

0,0 no válido

Si desea obtener más información acerca de las fechahoras de serie, consulte Fechahoras en serie.

Comparación entre las fechas de serie de ACL y las fechas de serie de Excel
Las fechas de serie ACL son similares a las fechas de serie de Microsoft Excel. Debe tener en cuenta que
hay un punto clave de similitud y una diferencia clave. Los dos temas no están relacionados.

Coincidencias
Tanto ACL como Excel tratan el año 1900 como un año bisiesto, con 366 días. Aunque 1900 no fue, de
hecho, un año bisiesto, Excel lo trató como uno con el fin de mantener la compatibilidad con Lotus 1-2-3.

Diferencias
Las fechas de serie ACL están desplazadas en un día respecto las fechas de serie de Excel. En Excel, el
01 enero 1900 tiene una fecha de serie de '1 '. En ACL, el 01 enero 1900 no se cuenta y el 02 enero 1900
tiene una fecha de serie de '1 '.

La fecha_de_inicio
Algunos archivos de datos de origen tal vez usen una fecha de inicio diferente del 1 de enero de 1900. La
fecha_de_inicio le permite hacer coincidir la fecha de inicio en un archivo de datos de origen. La fecha de
inicio es la fecha a partir de la cual se calculan las fechahoras de serie.

Fecha de ini-
cio en los
archivos de
datos de ori-
gen Especificar: Detalles

01 enero STODT(campo_fechahora) No es necesario que especifique una fecha_inicio, porque la


1900 fecha de inicio predeterminada es el 1 de enero de 1900.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 762 de 898


Comandos

Fecha de ini-
cio en los
archivos de
datos de ori-
gen Especificar: Detalles

01 enero STOD(campo_fechahora; Especifica una fecha_inicio de `19010101` para que coincida


1900 `19010101`) con la fecha de inicio de 01 de enero de 1901 que se utilizó en
el archivo de datos de origen.

01 de enero STODT(campo_fechahora) - 365 No se puede especificar una fecha_de_inicio anterior al 01


de 1899 enero 1900. Si un campo de datos de origen utiliza una fecha
de inicio anterior a 01 enero 1900, puede crear una expresión
de fechahora que reste un número apropiado de días de los
resultados de salida de la función STODT( ).

Otras funciones de conversión de fechahora


Conversión de datos de Serie a Fechahora
Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Conversión de datos de Carácter o Numéricos a Fechahora


Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer
la fecha del valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abre-
viatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de la


expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 763 de 898


Comandos

Conversión de datos de Fechahora a Carácter


Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la
fechahora actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 764 de 898


Comandos

Función STOT( )
Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de 24 horas, con
24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión "Hora de serie a hora", en
inglés.

Sintaxis
STOT(hora_de_serie)

Parámetros
Nombre Tipo Descripción

hora_de_serie numérico El campo, expresión o valor literal a convertir.


hora_de_serie puede aceptar una hora de serie o una fechahora de
serie. Solo se considera la porción hora de la fechahora de serie. La
porción fecha se ignora.

Salida
Fechahora. La salida del valor hora utiliza el formato de visualización de la hora actual de ACL.

Ejemplos
Ejemplos básicos
Devuelve `t060000` que se visualiza como 06:00:00 AM suponiendo que el formato de visualización actual
de la hora de ACL sea hh:mm:ss PM:

STOT(0,25000)

Devuelve `t191530` que se visualiza como 07:15:30 PM suponiendo que el formato de visualización actual
de la hora de ACL sea hh:mm:ss PM:

STOT(0,802431)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 765 de 898


Comandos

Devuelve la hora regular equivalente para cada valor de hora de serie en el campo Hora_de_acceso:

STOT(Hora_de_acceso)

Observaciones
Cuándo usar STOT( )
Utilice la función STOT( ) para convertir horas de serie en horas regulares.

¿Qué son las horas de serie?


Las horas de serie de ACL representan una parte fraccionaria de 24 horas, con 24 horas equivalentes a
1.
Por ejemplo:
l la hora de serie equivalente a 1 hora es de 1/24 o 0,04167
l la hora de serie equivalente a 1 minuto es 1/1440 o 0,0006945
Las horas de serie pueden ser precedidas por un '0 '(cero) y una coma decimal o simplemente una coma
decimal.

1,000000 no es una hora de serie válida


Aunque 24 horas es igual a 1 para el cálculo de los momentos de la serie, 1,000000 no es una hora de
serie válida. Las horas de serie válidas son todas las fracciones decimales inferiores a 1. Por ejemplo:
0,75000 (06:00:00 PM).
ACL trata el número de serie 1,000000 como la fechahora de serie equivalente al 02 de enero 1900
12:00:00 AM. Debido a que STOT ( ) ignora la porción fecha de las fechashoras, STOT (1,000000) es
equivalente a STOT (0,000000) y ambos son equivalentes a la hora habitual 12:00:00 AM.

Horas de serie y equivalentes de hora regular


Hora de serie Hora regular equivalente

0,00 12:00:00 AM

0,0006945 12:01:00 AM

0,04167 01:00:00 AM

0.0423645 01:01:00 AM

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 766 de 898


Comandos

Hora de serie Hora regular equivalente

0,042998 01:01:55 AM

0,25 06:00:00 AM

0,50 12:00:00 PM

0,75 06:00:00 PM

0,79167 07:00:00 PM

0,802431 07:15:30 PM

1,00 12:00:00 AM

Otras funciones de conversión de fechahora


Conversión de datos de Serie a Fechahora
Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

Conversión de datos de Carácter o Numéricos a Fechahora


Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer
la fecha del valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abre-
viatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de la


expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 767 de 898


Comandos

Conversión de datos de Fechahora a Carácter


Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la
fechahora actual del sistema operativo.

TIME( ) Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una
cadena de caracteres. También puede devolver la hora actual del sistema operativo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 768 de 898


Comandos

Función STRING( )
Convierte un valor numérico en una cadena de caracteres.

Sintaxis
STRING(número; longitud <;formato>)

Parámetros
Nombre Tipo Descripción

número numérico El valor numérico para convertir en una cadena.

longitud numérico El número de caracteres en la cadena de salida.

formato carácter El formato que se debe aplicar a la cadena de salida. Por ejemplo, "
(9.999,99)"
opcional

Salida
Carácter.

Ejemplos
Ejemplos básicos
Cadenas sin formato
Devuelve " 125,2":

STRING(125,2; 6)

Devuelve "25,2" (-1 se trunca porque la longitud es menor que la cantidad de dígitos y caracteres de for-
mato indicada en número):

STRING(-125,2; 4)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 769 de 898


Comandos

Devuelve " -125,2":

STRING(-125,2; 7)

Cadenas sin formato


Devuelve " (-125,20)":

STRING(-125,2; 10; "(9.999,99)")

Devuelve "25,20" (1 se trunca porque la longitud es menor que la cantidad de dígitos y caracteres de for-
mato indicada en número):

STRING(125,2; 6; "(9,999.99)")

Valor de entrada del campo


Devuelve valores numéricos del campo Número_empleado como cadenas de caracteres con una lon-
gitud de 10 caracteres. Si es necesario, el valor devuelto se rellena o se trunca:

STRING(Número_empleado; 10)

Observaciones
Valores de retorno rellenados y truncados
STRING( ) convierte número en una cadena de caracteres de la longitud especificada en longitud:
l Si número es más corto que longitud, se agregan espacios iniciales al valor que se devuelve
l Si número es mayor que la longitud, se trunca el valor de retorno desde el lado izquierdo

Dar formato al valor que se devuelve


El parámetro formato opcional agrega formato al valor devuelto, como signos de dólar, símbolos de por-
centaje, decimales, comas, indicadores negativos o paréntesis. El formato debe estar encerrado entre
comillas dobles.
El dígito 9 actúa como un marcador de posición de dígitos para formatear. Asegúrese de que tiene el
número correcto de nueves para correcta visualización. También necesita contabilizar los decimales y los
caracteres de formato, como los signos de dólar y los corchetes para los números negativos, cuando espe-
cifica el valor de longitud.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 770 de 898


Comandos

Funciones relacionadas
La función STRING( ) es la opuesta de VALUE( ), que convierte los datos de caracteres en datos numé-
ricos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 771 de 898


Comandos

Función SUBSTR( )
Devuelve una subcadena especificada de una cadena.

Sintaxis
SUBSTR(cadena; inicio; longitud)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor de donde se extrae la subcadena.

inicio numérico La posición de carácter inicial de la subcadena.

longitud numérico El número de caracteres en la subcadena.


Si la longitud es 0, la salida aparece en blanco.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Valor de entrada de caracteres literales
Devuelve "BCD":

SUBSTR("ABCDEF"; 2; 3)

Devuelve "EF":

SUBSTR("ABCDEF"; 5; 10)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 772 de 898


Comandos

Análisis de los datos de caracteres estructurados


Devuelve "189543":

SUBSTR("***189543***"; 4; 6)

Devuelve el año de cuatro dígitos a partir de un campo de caracteres que contiene fechas con el formato
"MM/DD/AAAA":

SUBSTR(DATE; 7; 4)

Ejemplos avanzados
Incremento de la longitud del campo
Utilice SUBSTR( ) para incrementar la longitud de un campo de caracteres. El incremento de la longitud de
un campo es una tarea común de armonización que puede necesitar realizar antes de unir o anexar dos
campos.
El siguiente ejemplo completa el campo Descripción_del_producto con espacios en blanco para crear el
campo calculado Descripción_del_producto_extensa con una longitud de 50 caracteres.

DEFINE FIELD Descripción_del_producto_extensa COMPUTED SUBSTR(Descripción_del_pro-


ducto; 1; 50)

Observaciones
Cómo funciona
La función SUBSTR( ) devuelve caracteres del valor cadena que comienzan desde la posición de carac-
teres especificada por inicio. El número de caracteres devuelto se especifica en longitud.

Cómo maneja los espacios SUBSTR( )


Los espacios al principio, al final o en el medio de la cadena se tratan como caracteres. Los espacios cap-
tados por inicio y longitud se incluyen en la cadena de salida.

Cómo funciona el relleno


Si el valor longitud excede el número de caracteres, incluidos los espacios al final, desde la posición de ini-
cio hasta el final de la cadena, la cadena de salida puede rellenarse o no por la derecha con espacios:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 773 de 898


Comandos

Relleno con espacios


Si utiliza SUBSTR( ) dentro de un comando que crea un campo, la salida se rellena con espacios.

Relleno al crear un campo calculado


Crea el campo calculado Descripción_del_producto_extensa, con una longitud de 50 caracteres, sobre
la base del campo físico Descripción_del_producto, con una longitud de 24 caracteres:

DEFINE FIELD Descripción_del_producto_extensa COMPUTED SUBSTR(Descripción_del_pro-


ducto; 1; 50)

Relleno al extraer un campo físico


Extrae el campo calculado Descripción_del_producto_extensa, con una longitud de 50 caracteres, a
una nueva tabla, sobre la base del campo físico Descripción_del_producto, con una longitud de 24 carac-
teres:

EXTRACT FIELDS SUBSTR(Descripción_del_producto; 1; 50) AS "Descripción_del_producto_


extensa" TO Nueva_tabla

Sin relleno con espacios


Si utiliza SUBSTR( ) en una definición de variable o una expresión, la salida no se rellena con espacios.

Sin relleno al definir una variable


Crea la variable v_desc_prod, con una longitud de 24 caracteres, sobre la base de una longitud de campo
de Descripción_del_producto:

ASSIGN v_desc_prod = SUBSTR(Descripción_del_producto; 1; 50)

Nota
Aun cuando SUBSTR( ) especifique una longitud de 50 caracteres, la salida se limita a la
longitud del campo Descripción_del_producto.

Funciones relacionadas
SUBSTR( ) y SPLIT( ) devuelven un segmento de datos de una cadena de origen más extensa.
l SUBSTR( ) identifica el segmento sobre la base de una posición numérica de los caracteres.
l SPLIT( ) identifica el segmento sobre la base de un carácter separador.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 774 de 898


Comandos

Función TAN( )
Devuelve la tangente de un ángulo expresada en radianes, con una precisión de 15 lugares decimales.

Sintaxis
TAN(radianes)

Parámetros
Nombre Tipo Descripción

radianes numérico La medida del ángulo en radianes.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 0,999999999999999 (la tangente del número especificado de radianes, equivalente a 45 gra-
dos):

TAN(0,785398163397448)

Devuelve 0,999999999999999 (la tangente de 45 grados):

TAN(45 * PI( )/180)

Ejemplos avanzados
Uso de grados como información de entrada

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 775 de 898


Comandos

Devuelve 1,000 (la tangente de 45 grados, redondeada a 3 lugares decimales):

DEC(TAN(45 * PI( )/180);3)

Observaciones
Realización de la Prueba de arco de la mantisa
as tres funciones trigonométricas de ACL – SIN( ), COS( ) y TAN( ) – permiten realizar la Prueba de arco
de la mantisa asociada con la Ley de Benford.

Conversión de grados a radianes


Si su entrada es en grados, puede utilizar la función PI( ) para convertir la entrada en radianes: (grados *
PI( )/180) = radianes. Si es necesario, puede redondear o truncar el valor devuelto utilizando la función
DEC( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 776 de 898


Comandos

Función TEST( )
Devuelve un valor lógico que indica si una cadena especificada aparece en una posición específica de byte
en un registro.

Sintaxis
TEST(ubicación_de_byte; cadena)

Parámetros
Nombre Tipo Descripción

ubicación_de_byte numérico El número secuencial desde la izquierda del diseño de la tabla que
identifica la ubicación del primer carácter de la cadena.
La función se evalúa como F si no se identifica el inicio de la cadena
en esta posición, incluso si cadena aparece en otra posición en el
registro.

cadena carácter La cadena de caracteres que se buscará.


La búsqueda distingue entre mayúsculas y minúsculas. Si existe la
posibilidad de que las mayúsculas y minúsculas estén mezcladas, pri-
mero use la función UPPER( ) para pasar todos los caracteres a
mayúsculas.

Salida
Lógico. Devuelve T (verdadero) si la cadena de texto especificada comienza en la ubicación de byte espe-
cificada dentro de un registro y F (falso) en caso contrario.

Ejemplos
Ejemplos básicos
Dado un registro que contenga:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 777 de 898


Comandos

Departamento: Marketing
....|....|....|....|....|

Devuelve T:

TEST(5; "Departamento")

Devuelve F, porque en el registro, "Departamento" comienza en la quinta posición de byte, no en la sexta:

TEST(6; "Departamento")

Devuelve F porque la función distingue mayúsculas y minúsculas:

TEST(5; "DEPARTAMENTO")

Ejemplos avanzados
Aislamiento de registros que son encabezados de página
Utilice TEST( ) para crear un filtro que aísle todos los registros que comienzan con "Página:":

SET FILTER TO TEST(1; "Página:")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 778 de 898


Comandos

Función TIME( )
Extrae la porción hora a partir de una hora o fechahora especificada y la devuelve como una cadena de
caracteres. También puede devolver la hora actual del sistema operativo.

Sintaxis
TIME(< hora/fechahora> <;formato>)

Parámetros
Nombre Tipo Descripción

hora/fechahora fechahora El campo, expresión o el valor literal de donde extraer la hora. Si se


omite, se devuelve la hora actual del sistema operativo en el formato
opcional
hh:mm:ss.

formato carácter El formato que se debe aplicar a la cadena de salida, por ejemplo "hh/-
mm/ss". Si se omite, se utiliza el formato de visualización de la hora
opcional
actual de ACL. No puede especificar un formato si ha omitido fecha/-
fechahora.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Valores de entrada literales
Devuelve "23:59:59" suponiendo que el formato de visualización de la hora de ACL sea hh:mm:ss:

TIME(`20141231 235959`)

Devuelve "11:59 P":

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 779 de 898


Comandos

TIME(`20141231 235959`; "hh:mm A")

Devuelve la hora actual del sistema operativo como una cadena de caracteres en formato hh:mm:ss (reloj
de 24 horas):

TIME()

Campo como valores de entrada


Devuelve una cadena de caracteres para cada valor del campoMarca_de_hora_recepción, utilizando el
formato de visualización actual de la hora de ACL:

TIME(Marca_de_hora_recepción)

Devuelve una cadena de caracteres para cada valor del campo Marca_de_hora_recepción, utilizando el
formato de visualización de hora especificado:

TIME(Marca_de_hora_recepción; "hh:mm:ss")

Ejemplos avanzados
Calcular el tiempo transcurrido para ejecutar un comando o un script
Utilice la función TIME( ) para ayudar a calcular la cantidad de tiempo que lleva ejecutar un comando de
ACL específico o un script completo.
Inmediatamente antes del comando que desea medir, o al comenzar el script, especifique esta línea para
crear una variable que almacene la hora actual del sistema operativo:

ASSIGN Hora_inicio = TIME()

Inmediatamente después del comando, o al final del script, especifique las dos líneas que figuran a con-
tinuación.
La primera línea crea una variable que almacena la hora del sistema operativo una vez que se completa el
comando o el script. La segunda línea calcula la diferencia entre las horas de inicio y finalización, y con-
vierte el resultado en un formato de fácil lectura.
Consejo

Puede hacer doble clic en la entrada del registro CALCULATE para ver el tiempo trans-
currido para el comando o el script.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 780 de 898


Comandos

ASSIGN Hora_finalización = TIME()


CALCULATE STOT(CTOT(Hora_finalización) - CTOT(Hora_inicio))

Si la ejecución del comando se extenderá hasta después de la medianoche, utilice esta segunda línea:

CALCULATE `T000000` - (CTOT(Hora_inicio) - CTOT(Hora_finalización))

Observaciones
Longitud de la cadena de salida
La longitud de la cadena de salida es siempre de 14 caracteres. Si el formato de salida especificado, o el for-
mato de visualización de la hora de ACL, tiene menos de 14 caracteres, la cadena de salida se rellena con
espacios finales en blanco.

Detalles del parámetro


Un campo especificado para hora/fechahora puede utilizar cualquier formato de hora o fechahora, siempre
que la definición del campo establezca correctamente el formato.
Si utiliza el formato para controlar cómo se muestra la cadena de salida, solo puede utilizar los formatos de
la siguiente tabla. Se puede utilizar cualquier combinación de formatos de hora y AM/PM. El formato
AM/PM es opcional y se coloca al final.
Especifique el formato usando comillas simples o dobles. Por ejemplo: "hh:mm:ss".

Formatos de hora Formatos AM/PM Ejemplos

hh:mm:ss ninguno "hh:mm:ss"


reloj de 24 horas

hhmmss AM o PM "hhmmss PM"


reloj de 12 horas

hh:mm AoP "hh:mm A"


reloj de 12 horas

hhmm

hh

Especificar un valor de fechahora u hora literal


Al especificar un valor literal de hora o fechahora para hora/fechahora, solo puede utilizar los formatos de la
siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231 235959`.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 781 de 898


Comandos

No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de
fechas u horas.
l Valores de hora: puede utilizar cualquiera de los formatos de la siguiente tabla. Debe utilizar un
separador antes de un valor de la hora independiente para que la función opere correctamente.
Los separadores válidos son la letra 't' o la letra 'T'. Debe especificar las horas con el reloj de 24
horas. Los desplazamientos respecto del Horario Universal Coordinado (UTC, por sus siglas en
inglés) deben ir precedidos de un signo más (+) o un signo menos (-).
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y
hora de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre
las dos. Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.

Formatos de ejemplo Valores literales de ejemplo

thhmmss `t235959`

Thhmm `T2359`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Funciones relacionadas
Si necesita devolver la hora actual del sistema operativo como un valor de fechahora, utilice NOW( ) en
lugar de TIME( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 782 de 898


Comandos

Otras funciones de conversión de fechahora


Conversión de datos de Fechahora a Carácter
Función Descripción

DATE( ) Extrae la fecha a partir de una fecha o fechahora especificada y la devuelve como una cadena
de caracteres. También puede devolver la fecha actual del sistema operativo.

DATETIME( ) Convierte una fechahora en una cadena de caracteres. También puede devolver la fechahora
actual del sistema operativo.

Conversión de datos de Carácter o Numéricos a Fechahora


Función Descripción

CTOD( ) Convierte un valor de fecha numérico o de caracteres en una fecha. También se puede extraer
la fecha del valor en caracteres o numérico de fechahora y devolverlo como una fecha. Abre-
viatura de la expresión "Carácter a fecha", en inglés.

CTODT( ) Convierte un valor de caracteres o numérico de fechahora en una fechahora. Abreviatura de la


expresión "Carácter a fechahora", en inglés.

CTOT( ) Convierte un valor de caracteres o numérico de hora en una hora. También se puede extraer
la hora de un valor de caracteres o numérico de fechahora y devolverlo como una hora. Abre-
viatura de la expresión "Carácter a hora", en inglés.

Conversión de datos de Serie a Fechahora


Función Descripción

STOD( ) Convierte una fecha de serie - es decir, una fecha expresada como un entero - a un valor de
fecha. Abreviatura de la expresión "Fecha de serie a fecha", en inglés.

STODT( ) Convierte una fechahora de serie - es decir, una fechahora expresada como un entero, y una
porción fraccionaria de 24 horas - en un valor de fechahora. Abreviatura de la expresión
"Fecha de serie a fechahora", en inglés.

STOT( ) Convierte una hora de serie - es decir, una hora expresada como una porción fraccionaria de
24 horas, con 24 horas equivalentes a 1 - en un valor de hora. Abreviatura de la expresión
"Hora de serie a hora", en inglés.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 783 de 898


Comandos

Función TODAY( )
Devuelve la fecha actual del sistema operativo como un tipo de datos de fechahora.

Sintaxis
TODAY()

Parámetros
Esta función no tiene ningún parámetro.

Salida
Fechahora.

Ejemplos
Ejemplos básicos
Devuelve la hora actual del sistema operativo como un valor fechahora, por ejemplo `20141231`, que se
muestra utilizando el formato de visualización actual de la hora de ACL.

TODAY()

Observaciones
Funciones relacionadas
Si necesita devolver la hora actual del sistema operativo como una cadena de caracteres, utilice DATE( )
en lugar de TODAY ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 784 de 898


Comandos

Función TRANSFORM( )
Invierte el orden de visualización del texto bidireccional dentro de una cadena especificada.

Sintaxis
TRANSFORM(cadena_original)

Parámetros
Nombre Tipo Descripción

cadena_original carácter La cadena que contiene texto bidireccional.

Salida
Carácter.

Ejemplos
Ejemplos básicos
En la cadena de entrada, los caracteres "XZQB" representan caracteres hebreos/bidireccionales de una
cadena de entrada que, por los demás, contiene caracteres regulares.
En la cadena de salida, la dirección de "XZQB" se invierte y se devuelve "BQZX". Los demás caracteres no
se modifican.
Devuelve "ABC BQZX 123":

TRANSFORM("ABC XZQB 123")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 785 de 898


Comandos

Observaciones
Cómo funciona
La función TRANSFORMS( ) identifica los datos bidireccionales y los muestra correctamente en la vista,
de derecha a izquierda.
El resto de los caracteres procesados por la función no sufren modificaciones y se continúan mostrando
de izquierda a derecha.

Cuándo usar TRANSFORMS( )


Utilice TRANSFORMS( ) para ajustar el orden de visualización de los caracteres árabes o hebreos, para
que se muestren correctamente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 786 de 898


Comandos

Función TRIM( )
Devuelve una cadena con los espacios finales eliminados de la cadena de entrada.

Sintaxis
TRIM(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor del que se remueven los espacios al final.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Tenga en cuenta que en ambos ejemplos los espacios iniciales y los espacios entre las palabras no son eli-
minados por la función TRIM( ).
Devuelve "   Vancouver":

TRIM("   Vancouver   ")

Devuelve "   Nueva York":

TRIM("   Nueva York")

Ejemplos avanzados
Eliminación de espacios sin separación.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 787 de 898


Comandos

La función TRIM( ) no elimina los espacios sin separación.


Si necesita eliminar espacios finales sin separación, cree un campo calculado con la siguiente expresión:

DEFINE FIELD Descripción_limpia COMPUTED TRIM(REPLACE(Descripción; CHR(160); CHR


(32)))

La función REPLACE( ) reemplaza los espacios sin separación por espacios comunes y, a continuación,
TRIM( ) elimina los espacios comunes finales.

Observaciones
Cómo funciona
La función TRIM( ) elimina únicamente los espacios finales. Los espacios dentro de la cadena y los ini-
ciales no se eliminan.

Funciones relacionadas
TRIM( ) es similar a la función LTRIM( ), que elimina los espacios en blanco iniciales de una cadena y a
ALLTRIM( ), que elimina los espacios en blanco iniciales y finales.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 788 de 898


Comandos

Función UNSIGNED( )
Devuelve datos numéricos convertidos al tipo de datos sin signo.

Sintaxis
UNSIGNED(número; longitud_del_resultado)

Parámetros
Nombre Tipo Descripción

número numérico El valor para convertir.

longitud_del_resul- numérico La cantidad de bytes que se usarán en la cadena de salida.


tado

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 000075:

UNSIGNED(75; 3)

UNSIGNED(-75; 3)

UNSIGNED(7,5; 3)

Devuelve 2456 (1 se trunca porque solo se pueden almacenar 4 dígitos cuando longitud_del_resultado es
2):

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 789 de 898


Comandos

UNSIGNED(12456; 2)

Devuelve 000000012456:

UNSIGNED(-12,456; 6)

Observaciones
¿Que son los datos sin signo?
El tipo de datos Sin signo se utiliza en los sistemas operativos de mainframe para almacenar valores
numéricos en un formato que utiliza espacio mínimo, almacenando dos dígitos en cada byte. El tipo de
datos Sin signo es el mismo que el tipo de datos compactados, pero no utiliza el último byte para espe-
cificar si el valor es positivo o negativo.

Cuándo usar UNSIGNED( )


Utilice la función UNSIGNED( ) para convertir datos numéricos al formato sin signo para exportar a sis-
temas de mainframe.

Valores de retorno truncados


Si el valor longitud_del_resultado es más corto que la longitud del valor número, los dígitos adicionales se
truncan.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 790 de 898


Comandos

Función UPPER( )
Devuelve una cadena con los caracteres alfabéticos convertidos en mayúsculas.

Sintaxis
UPPER(cadena)

Parámetros
Nombre Tipo Descripción

cadena carácter El valor para convertir en mayúsculas.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Devuelve "ABC":

UPPER("abc")

Devuelve "ABC 123 DEF":

UPPER("abc 123 DEF")

Devuelve "ABCD 12":

UPPER("AbCd 12")

Devuelve todos los valores del campo Apellido convertidos a mayúsculas:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 791 de 898


Comandos

UPPER(Apellido)

Observaciones
Cómo funciona
La función UPPER( ) convierte todos los caracteres alfabéticos de la cadena en mayúscula. Todos los
caracteres no alfabéticos no sufren cambios.

Cuándo usar UPPER( )


Utilice UPPER( ) cuando necesite asegurarse de que todos los caracteres en un campo, una variable o
una expresión tengan solo mayúsculas o solo minúsculas. Esto es especialmente importante cuando com-
para valores.
UPPER( ) también puede utilizarse para formatear valores en reportes como texto en mayúsculas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 792 de 898


Comandos

Función UTOD( )
Convierte una cadena Unicode que contiene una fecha con formato en un valor de fecha de ACL. Abre-
viatura de la expresión "Unicode a Fecha", en inglés.
Nota
Esta función es específica de la edición Unicode de ACL. No es una función admitida en la
edición no Unicode.
Utilice esta función cuando trabaje con fechas en idiomas y formatos diferentes de los de la
instalación predeterminada. Si la cadena que desea convertir se encuentra en su idioma
predeterminado, utilice CTOD( ).

Sintaxis
UTOD(cadena <;localidad> <;estilo>)

Parámetros
Nombre Tipo Descripción

cadena carácter La cadena Unicode para convertir en una fecha.


La cadena Unicode puede contener un valor de fechahora, pero la
porción hora del valor se ignora. Los valores de hora independientes
no son compatibles.
cadena debe coincidir con el formato de entrada requerido por el
valor estilo para la configuración regional de la fecha.

localidad carácter El código que especifica el idioma y la configuración regional de la


cadena de salida y, como opción, la versión del idioma asociado con
opcional
un país o una región en particular.
Por ejemplo, "zh" especifica chino y "pt_BR" especifica portugués de
Brasil.
Si se omite, se utiliza la configuración regional predeterminada para
su computadora. Si se especifica un idioma, pero no es especifica un
país, se usa el país predeterminado para el idioma.
No se puede especificar una configuración regional si no ha espe-
cificado una fecha.
Para obtener más información sobre los códigos de configuración
regional, consulte www.unicode.org.

estilo numérico El estilo de formato de fecha que se debe usar para la cadena Uni-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 793 de 898


Comandos

Nombre Tipo Descripción

opcional code. El estilo de formato coincide con el estándar de la configuración


regional que usted especifique:
o 0: formato de especificación completa, como "Domingo, 18 de sep-
tiembre de 2016"
o 1: formato extenso, como "18 de septiembre de 2016"
o 2: formato medio, como "Sep 18, 2016"
o 3: formato numérico breve, como "9/18/16"
Si se omite, se utiliza el valor predeterminado 2. No puede especificar
un estilo si no ha especificado una configuración regional.
Consejo
Si necesita ayuda para determinar el formato esperado
para su cadena de entrada, complete una de las siguien-
tes acciones:
l Utilice la función DTOU( ) para generar un valor
de ejemplo utilizando el estilo y la configuración
regional.
En la línea de comandos, use el comando
DISPLAY para imprimir el valor:

DISPLAY DTOU(`20160909`; "es_MX"; 3)

l Consulte una fuente autorizada para conocer el


formato de fecha estándar para el estilo de la con-
figuración regional específica.

Salida
Fechahora. La salida del valor fecha utiliza el formato de visualización de fecha actual de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 794 de 898


Comandos

Ejemplos
Ejemplos básicos
Nota
En todos los ejemplos se supone que el formato de visualización de la fecha de ACL actual
es DD MMM AAAA.
En los ejemplos siguientes, los códigos de configuración regional de chino ("zh") y chino
simplificado ("zh_CN") coinciden con diferentes cadenas de entrada y no son inter-
cambiables.
También debe especificar el estilo correcto. Una cadena de fecha Unicode larga (es decir,
estilo es 1) no devuelve una fecha de ACL si se especifica un estilo de 2.

Valores de entrada literales


Devuelve `20141231` que se muestra como 31 Dic 2014:

UTOD("31 de dezembro de 2014"; "pt_BR"; 1)

Devuelve `20141231` que se muestra como 31 Dic 2014:

UTOD("31 grudnia 2014"; "pl"; 1)

Valores de entrada de campo


Devuelve el equivalente de la fecha para cada cadena Unicode del campo Fecha_de_factura:

UTOD(Fecha_de_factura; "zh"; 1)

La entrada utiliza el estilo de fecha completo


Devuelve `20141231` que se muestra como 31 Dec 2014 (no se especifica ningún identificador de región):

UTOD("星期三; 2014 十二月 31"; "zh"; 0)

Devuelve `20141231` que se muestra como 31 Dic 2014 (se especifica el identificador de región):

UTOD("2014年12月31日星期三"; "zh_CN"; 0)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 795 de 898


Comandos

La entrada utiliza el estilo de fecha extenso


Devuelve `20141231` que se muestra como 31 Dec 2014 (no se especifica ningún identificador de
región):

UTOD("2014 十二月 31"; "zh"; 1)

Devuelve `20141231` que se muestra como 31 Dic 2014 (se especifica el identificador de región):

UTOD("2014年12月31日"; "zh_CN"; 1)

Observaciones
Conversión de cadenas Unicode con éxito
Para convertir correctamente las cadenas Unicode que contienen fechas a fechas de ACL, debe espe-
cificar los parámetros configuración regional y estilo que coincidan con el idioma, el país/región (si corres-
ponde) y el estilo de la fecha en la cadena Unicode.

Funciones relacionadas
UTOD( ) es la inversa de la función DTOU( ), que convierte una fecha en una cadena Unicode. Si no está
seguro de qué país/región y estilo especificar para UTOD( ), puede utilizar DTOU ( ) y experimentar con
diferentes parámetros para generar una cadena Unicode de salida que coincida con la forma de las cade-
nas Unicode de entrada que desea convertir con UTOD( ).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 796 de 898


Comandos

Función VALUE( )
Convierte una cadena de caracteres en un valor numérico.

Sintaxis
VALUE(cadena; decimales)

Parámetros
Nombre Tipo Descripción

cadena carácter El campo, el literal o la expresión que se debe convertir.

decimales numérico La cantidad de posiciones decimales para incluir en el resultado.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve -123.400:

VALUE("123,4-"; 3)

Devuelve 123456,00:

VALUE("$123.456"; 2)

Devuelve-77,45:

VALUE("77,45CR"; 2)

Devuelve -123457:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 797 de 898


Comandos

VALUE(" (123.456,78)"; 0)

Valor de entrada del campo


Devuelve valores de caracteres del campo Salario como números sin espacios decimales:

VALUE(Salario; 0)

Observaciones
Cómo funciona
Convierte los datos de caracteres en datos numéricos. Puede usar la función VALUE( ) si necesita con-
vertir expresiones de caracteres o valores de campo en valores numéricos para usar en comandos de
ACL.

Formato de valores de entrada numéricos


VALUE( ) acepta números en cualquier formato. Puede utilizar como entrada cualquier formato numérico
aceptado por el tipo de datos de impresión o Print, tales como signos de puntuación, signos iniciales o fina-
les y paréntesis.

Valores negativos
La función VALUE( ) puede interpretar indicadores diferentes de valores negativos tales como paréntesis
o el signo menos. También puede interpretar CR (crédito) y DR (débito). Por ejemplo:
Devuelve -1000,00:

VALUE("(1000)"; 2)

VALUE("1000CR"; 2)

Comparación entre decimales y valores enteros


Si el valor de cadena no incluye decimales, ACL considera el número como un entero. Por ejemplo:
Devuelve 123.00:

VALUE("123"; 2)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 798 de 898


Comandos

Si el número de decimales especificado en decimales es menor que el número en el campo o la expresión,


el resultado se redondea. Por ejemplo:
Devuelve "10,6":

VALUE("10,56"; 1)

Funciones relacionadas
La función VALUE( ) es la opuesta de STRING( ), que convierte los datos numéricos en datos de carac-
teres.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 799 de 898


Comandos

Función VERIFY( )
Devuelve un valor lógico que indica si los datos en un campo de datos físicos son válidos.

Sintaxis
VERIFY(campo)

Parámetros
Nombre Tipo Descripción

campo carácter Debe ser un campo de datos físicos.


numérico
fechahora

Salida
Lógico. Devuelve T (verdadero) si los datos en el campo son válidos, y F (falso) en caso contrario.

Ejemplos
Ejemplos básicos
Extrae todos los registros donde la función VERIFY( ) se evalúa como falso en una nueva tabla ACL.

EXTRACT RECORD IF NOT VERIFY(Dirección) TO "InvalidEntries.fil"

Observaciones
La función VERIFY( ) determina si los datos de un campo son coherentes con el tipo de datos espe-
cificados para el campo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 800 de 898


Comandos

Cuándo usar VERIFY( )


La función proporciona un control más preciso sobre los campos que desea verificar que el comando
VERIFY o la opción Verificar datos de la ficha Numérico en el cuadro de diálogo Opciones (Herramientas
> Opciones ). Puede utilizar la función para detectar errores en campos individuales y proceder de una
manera específica según la situación.

Cuándo la función se evalúa como verdadera


Para la función a evaluar como verdadera:
l los campos de caracteres solamente deben contener caracteres válidos, imprimibles, tales como
letras, números y símbolos
l los campos numéricos solamente deben contener caracteres numéricos válidos, tales como núme-
ros, decimales y símbolos de moneda
l los campos de fechahora solamente deben contener fechas, fechashoras u horas válidas.

Expresiones y campos calculados


Las expresiones y los campos calculados siempre evalúan si es T (verdadero), por lo que esta función no
puede utilizarse con campos calculados o en expresiones a menos que se conviertan en campos físicos. El
uso de la opción Campos en el cuadro de diálogo Extraer para extraer campos calculados o expresiones
los convierte en campos físicos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 801 de 898


Comandos

Función WORKDAY( )
Devuelve la cantidad de días laborables entre dos fechas.

Sintaxis
WORKDAY( fecha_de_inicio ; fecha_de_finalización <;díasnolaborables>)

Parámetros
Nombre Tipo Descripción

fecha_de_inicio fechahora La fecha de inicio del período para el cual se calculan los días labo-
rables. La fecha de inicio está incluida en el período.

fecha_de_fina- fechahora La fecha de finalización del período para el cual se calculan los días
lización laborables. La fecha de finalización está incluida en el período.

díasnolaborables carácter Los días de la semana que son fin de semana, o días no laborables,
se excluyen del cálculo. Si se omite díasnolaborables, el sábado y el
opcional
domingo se usan como los días no laborables predeterminados.
Introduzca díasnolaborables usando las siguientes abreviaturas,
separadas por un espacio o una coma:
o Mon
o Tue
o Wed
o Thu
o Fri
o Sat
o Sun
díasnolaborables no distingue entre mayúsculas y minúsculas. Las
abreviaturas se deben introducir en inglés, aun cuando esté usando
una versión localizada de .

"Fri, Sat, Sun"

Nota
Puede especificar un valor de fechahora para fecha_de_inicio o fecha_de_finalización
pero se ignora la parte de la hora del valor.
Si la fecha_de_inicio es más reciente que la fecha_de_finalización, se devuelve un valor
negativo.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 802 de 898


Comandos

Salida
Numérico. La cantidad de días no laborables del período para el cual se calculan los días laborables.

Ejemplos
Ejemplos básicos
Valores de entrada literales
Devuelve 5 (la cantidad de días laborables entre el lunes 02 de marzo de 2015 y el domingo 08 de marzo de
2015 (inclusive):

WORKDAY(`20150302`; `20150308`)

Devuelve 6 (la cantidad de días laborables entre el lunes 02 de marzo de 2015 y el domingo 08 de marzo de
2015 (inclusive), cuando el domingo es el único día no laborable):

WORKDAY(`20150302`; `20150308`; "Sun")

Devuelve 5 (la cantidad de días laborables entre el domingo 01 de marzo de 2015 y el sábado 07 de marzo
de 2015 (inclusive), cuando el viernes y el sábado son los días no laborables):

WORKDAY(`20150301`; `20150307`; "Fri, Sat")

Valores de entrada de campo


Devuelve la cantidad de días laborables entre cada fecha del campo Fecha_de_inicio y el 31 de diciembre
de 2015 inclusive:

WORKDAY(Fecha_de_inicio ; `20151231`)

Devuelve la cantidad de días laborables entre cada fecha del campo Fecha_de_inicio y una fecha corres-
pondiente en el campo Fecha_de_finalización (inclusive):
l Los días festivos obligatorios se incluyen en el total de días laborables y se pueden excluir con un cál-
culo independiente.
l La devolución de un valor negativo indica que la fecha de inicio es más reciente que una fecha de fina-
lización.

WORKDAY(Fecha_de_inicio ; Fecha_de_finalización)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 803 de 898


Comandos

Observaciones
Formatos de fecha
Un campo especificado para fecha_de_inicio o fecha_de_finalización puede utilizar cualquier formato de
fecha, siempre que la definición del campo establezca correctamente el formato.
Al especificar un valor literal de fecha para fecha_de_inicio o fecha_de_finalización, solo puede utilizar los
formatos AAAAMMDD y AAMMDD y debe encerrar el valor entre acentos graves; por ejemplo,
`20141231`.

Días no laborables que no son ni sábado ni domingo


La capacidad de especificar días no laborables, además de los sábados y los domingos, le permite utilizar
la función WORKDAY( ) con datos que no se basan en una semana de trabajo de lunes a viernes o en
una semana de trabajo que no tiene cinco días.
Por ejemplo, si especifica "Sun" por sí mismo como un día no laborable, puede crear una semana de tra-
bajo de seis días, de lunes a sábado.

Detección de los días festivos obligatorios


La función WORKDAY( ) no tiene en cuenta los días festivos obligatorios y esto significa que el valor que
devuelve tal vez no refleje la cantidad real de días laborables de un periodo, si este período incluye uno o
más días festivos obligatorios.

Script "Calcular los días laborables" en ScriptHub


Si necesita detectar los días festivos obligatorios, una opción es utilizar el script Calcular los días labo-
rables de ScriptHub, que acepta una lista de días festivos definida por el usuario.
Para datos que cubren períodos de tiempo más extensos e incluyen varios días festivos, el uso del script
probablemente sea el enfoque más sencillo. Si desea obtener más información, consulte “Importar scripts
desde ScriptHub” en la Guia del usuario de ACL Analytics.
En el caso de períodos de tiempo más cortos, con solo tres o cuatro días festivos, como un trimestre, tal
vez pueda crear un campo calculado condicional, como se describe a continuación.

Campo calculado condicional para detectar los días festivos obligatorios


Si es necesario, puede crear un campo calculado condicional para detectar los días festivos obligatorios
en el valor que devuelve la función WORKDAY( ).
Por ejemplo, para los datos del primer trimestre de 2015, podría restar 1 al valor que obtuvo con
WORKDAY( ) por cada día festivo que caiga en un período especificado:
l 01 enero 2015
l 19 enero 2015

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 804 de 898


Comandos

l 16 febrero 2015
El ejemplo que se incluye a continuación sirve para períodos con cualquier fecha de inicio y fecha de fina-
lización dentro del trimestre.
Primero crea un campo calculado, por ejemplo Días_laborables , que calcule los días laborables para todos
los períodos del trimestre:

DEFINE FIELD Días_laborables COMPUTED WORKDAY(Fecha_de_inicio ; Fecha_de_finalización)

A continuación, crea un campo calculado condicional, por ejemplo Días_laborables_no_festivos , que


ajusta el valor que devuelve el primer campo calculado (Días_laborables ):

DEFINE FIELD Días_laborables_no_festivos COMPUTED

Días_laborables-1 IF Fecha_de_inicio = `20150101` AND Fecha_de_finalización < `20150119`


Días_laborables-2 IF Fecha_de_inicio = `20150101` AND Fecha_de_finalización < `20150216`
Días_laborables-3 IF Fecha_de_inicio = `20150101` AND Fecha_de_finalización < `20150331`
Días_laborables   IF Fecha_de_inicio < `20150119` AND Fecha_de_finalización < `20150119`
Días_laborables-1 IF Fecha_de_inicio < `20150119` AND Fecha_de_finalización < `20150216`
Días_laborables-2 IF Fecha_de_inicio < `20150119` AND Fecha_de_finalización <= `20150331`
Días_laborables-1 IF Fecha_de_inicio = `20150119` AND Fecha_de_finalización < `20150216`
Días_laborables-2 IF Fecha_de_inicio = `20150119` AND Fecha_de_finalización <= `20150331`
Días_laborables   IF Fecha_de_inicio < `20150216` AND Fecha_de_finalización < `20150216`
Días_laborables-1 IF Fecha_de_inicio < `20150216` AND Fecha_de_finalización <= `20150331`
Días_laborables-1 IF Fecha_de_inicio = `20150216` AND Fecha_de_finalización <= `20150331`
Días_laborables   IF Fecha_de_inicio < `20150331` AND Fecha_de_finalización <= `20150331`
Días laborables

Nota
El orden de las condiciones del campo calculado condicional es importante.
ACL evalúa varias condiciones comenzando por el principio. La primera condición que eva-
lúa como verdadera para un registro asigna el valor del campo calculado condicional para
ese registro. La siguiente condición que evalúa como verdadera no modifica el valor asig-
nado.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 805 de 898


Comandos

Función YEAR( )
Extrae el año de una fecha o fechahora especificada y lo devuelve como un valor numérico con el formato
YYYY.

Sintaxis
YEAR(fecha/fechahora)

Parámetros
Nombre Tipo Descripción

fecha/fechahora fechahora El campo, expresión o el valor literal de donde extraer el año.

Salida
Numérico.

Ejemplos
Ejemplos básicos
Devuelve 2014:

YEAR(`20141231`)

YEAR(`141231 235959`)

Devuelve el año para cada valor del campo Fecha_de_factura:

YEAR(Fecha_de_factura)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 806 de 898


Comandos

Observaciones
Detalles del parámetro
Un campo especificado para fecha/fechahora puede utilizar cualquier formato de fecha o fechahora, siem-
pre que la definición del campo establezca correctamente el formato.

Especificar un valor de fechahora o fecha literal


Al especificar un valor literal de fecha o fechahora para fecha/fechahora, solo puede utilizar los formatos de
la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.
No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas
u horas.
l Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora
de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos.
Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.
l Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto
del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo
más (+) o un signo menos (-).

Formatos de ejemplo Valores literales de ejemplo

AAAAMMDD `20141231`

AAMMDD `141231`

AAAAMMDD hhmmss `20141231 235959`

AAMMDDthhmm `141231t2359`

AAAAMMDDThh `20141231T23`

AAAAMMDD hhmmss+/-hhmm `20141231 235959-0500`
(desplazamiento de UTC)

AAMMDD hhmm+/-hh `141231 2359+01`
(desplazamiento de UTC)

Nota
No use solo hh en el formato de la hora
principal con datos que tienen un des-
plazamiento del UTC. Por ejemplo, evite:
hh+hhmm. Los resultados pueden no ser
confiables.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 807 de 898


Comandos

Función ZONED( )
Convierte datos numéricos en datos de caracteres y agrega ceros a la izquierda de los datos de salida.

Sintaxis
ZONED(número; longitud)

Parámetros
Nombre Tipo Descripción

número numérico El valor numérico para convertir en una cadena.

longitud numérico La longitud de la cadena de salida.

Salida
Carácter.

Ejemplos
Ejemplos básicos
Información de entrada de íntegro
Devuelve "235":

ZONED(235; 3)

Devuelve "00235" porque longitud es mayor que el número de dígitos de número; por lo tanto, se agregan
dos ceros al principio del resultado:

ZONED(235; 5)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 808 de 898


Comandos

Devuelve "35" porque longitud es menor que el número de dígitos de número; por lo tanto, el dígito ubicado
más a la izquierda se quita del resultado:

ZONED(235; 2)

Información de entrada decimal


Devuelve "23585", porque el formato de datos zonados no admite un separador decimal:

ZONED(235,85; 5)

Valor de entrada negativo


Devuelve "64489M", porque el número es negativo y "M" representa el dígito final 4:

ZONED(-6448,94; 6)

Devuelve "489J", porque la longitud es inferior a la cantidad de dígitos del número; por lo tanto, los dos dígi-
tos ubicados más a la izquierda se truncan del resultado y el número es negativo y "J" representa el dígito
final 1:

ZONED(-6448,91; 4)

Ejemplos avanzados
Armonización de un campo clave al unir tablas
Usted tiene dos tablas, Ar y Cliente, y necesita unirlas por el campo NúmClien para realizar más análisis.
Cada una de las dos tablas tiene un campo NúmClien, pero el formato de datos es diferente:
l Campo numérico Ar: (por ejemplo, 235)
l Cliente: campo de 5 caracteres que completa los números con ceros al principio (por ejemplo,
"00235")
Para unificar los campos al unir, de manera que las longitudes y los tipos de datos sean iguales, utiliza la fun-
ción ZONED( ) para convertir el campo clave Ar NúmClien a un campo de caracteres con una longitud de 5
para que coincida con el formato del campo clave en Cliente:

OPEN Ar PRIMARY
OPEN Cliente SECONDARY
JOIN PKEY ZONED (NúmClien;5) FIELDS NúmClien Vencimiento Monto SKEY NúmClien
UNMATCHED TO Ar_Clien OPEN PRESORT SECSORT

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 809 de 898


Comandos

Observaciones
Cómo funciona
Esta función convierte los datos numéricos en datos de caracteres y agrega ceros al inicio a la salida. La
función se suele utilizar para unificar los campos que requieren ceros al inicio, por ejemplo, los campos de
número de cheque, número de orden de compra y número de factura.

Cuándo usar ZONED( )


Utilice la función para convertir un valor numérico positivo en un valor de caracteres que contenga ceros al
inicio. Esto es útil para la normalizar los datos en campos que se utilizarán como campos clave.
Por ejemplo, si una tabla contiene número de facturas con la forma 100 en un campo numérico y otra
tabla contiene números de facturas con la forma "00100" en un campo de caracteres, puede utilizar
ZONED( ) para convertir el valor numérico 100 en el valor de caracteres "00100". Esto permite comparar
números de facturas semejantes.

Longitud de la cadena y valores de retorno


Los ceros al inicio se agregan al valor de salida cuando el valor longitud es mayor que el número de dígitos
en número. Cuando longitud es menor que la cantidad de dígitos en número, la salida se trunca desde el
lado izquierdo. Si el valor de número tiene la misma longitud que longitud, entonces no se agregan ceros.

Números decimales
El tipo de datos de zona no incluye una coma decimal explícita.

Números negativos
Si el número de valor de entrada es negativo, el dígito ubicado más a la derecha se muestra como un
carácter en el resultado:
l "}" para 0
l una letra entre "J" y "R" para los dígitos 1 al 9

ZONED( ) y la edición Unicode de ACL


Si trabaja con la edición Unicode de ACL, es necesario utilizar la función BINTOSTR( ) para visualizar
correctamente el valor devuelto de la función ZONED( ). También necesita utilizar la función BINTOSTR( 
) si desea utilizar el valor devuelto de la función ZONED( ) como un parámetro en otra función.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 810 de 898


Comandos

Función ZSTAT( )
Devuelve la estadística Z estándar.

Sintaxis
ZSTAT(proporción_real; proporción_esperada; población)

Parámetros
Nombre Tipo Descripción

proporción actual numérico o Al especificar los parámetros como números:, representa el


recuento real, como un dígito inicial o una combinación de dígitos
iniciales.
o Al especificar parámetros como proporciones:, representa la pro-
porción esperada del valor de prueba y debe estar entre 0 y 1 inclu-
sive (es decir, mayor o igual que 0 y menor o igual que 1).

proporción esperada numérico o Al especificar parámetros como números:, representa el recuento


esperado, como un dígito inicial o una combinación de dígitos ini-
ciales.
o Al especificar parámetros como proporciones:, representa la pro-
porción esperada del valor de prueba y debe estar entre 0 y 1
exclusivo (es decir, mayor que 0 y menor que 1).

población numérico El número total de elementos de prueba. Este parámetro debe ser un
número entero positivo mayor que 0.

Salida
Numérico.

Ejemplos
Ejemplos avanzados
Parámetros expresados como números

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 811 de 898


Comandos

Basándose en 10 años de datos anteriores, se sabe que la distribución mensual de reclamos por dis-
capacidad de trabajador por lo general es muy uniforme. En abril, mayo y junio de este año, los reclamos
fueron superiores en un 10 %, lo cual equivale a un promedio de 220 por mes en lugar de 200. Los recla-
mos en julio y agosto fueron levemente inferiores, de 193 y 197. Los reclamos totales para el año ascen-
dieron a 2.450. Para probar si estos valores alto y bajo fueron significativos, utilice Z-statistic.
El número real de reclamos de abril a junio es mayor de lo esperado. El número esperado de reclamos
para este período debe ser 25 % de los 2.450 reclamos anuales, lo que equivale a 612,5 La estadística Z
para estos recuentos se calcula como 2,193:

ZSTAT(660; 612,5; 2450)

Una estadística Z de 1,96 tiene una significación de 0,05 y 2,57 una significación de 0,01. Por lo tanto, la
probabilidad de que las tasas superiores de reclamos se deban a eventualidades es entre 1:20 y 1:100.
El número real de reclamos de julio y agosto es inferior al esperado (390). El número esperado de recla-
mos para este período es un sexto de los 2.450 reclamos anuales, lo que equivale a 408,33. La estadística
Z para estas proporciones se calcula como 0,967:

ZSTAT(390; 408,33; 2450)

Este no es un resultado muy significativo. Las estadísticas Z de 1,000 y menores son muy comunes y por
lo general pueden ser ignoradas.

Parámetros expresados como proporciones


Basándose en 10 años de datos anteriores, se sabe que la distribución mensual de reclamos por dis-
capacidad de trabajador por lo general es muy uniforme. En abril, mayo y junio de este año, los reclamos
fueron superiores en un 10 %, lo cual equivale a un promedio de 220 por mes en lugar de 200. Los recla-
mos en julio y agosto fueron levemente inferiores, de 193 y 197. Los reclamos totales para el año ascen-
dieron a 2.450. Para probar si estos valores alto y bajo fueron significativos, utilice Z-statistic.
El número real de reclamos de abril a junio está representado por la proporción 660/2450, que es mayor
de lo esperado. El número esperado de reclamos para este período debe ser 25 por ciento de los 2.450
reclamos anuales. La estadística Z para estas proporciones es 2,193:

ZSTAT((1,00000000 * 660 / 2450); 0,25; 2450)

Una estadística Z de 1,96 tiene una significación de 0,05 y 2,57 una significación de 0,01. Por lo tanto, la
probabilidad de que las tasas superiores de reclamos se deban a eventualidades es entre 1:20 y 1:100.
El número real de reclamos de julio y agosto es inferior al esperado (390). El número esperado de recla-
mos para este período debería ser un sexto o 16,6667 % de los 2.450 reclamos anuales. La estadística Z
para estas proporciones es 0,967:

ZSTAT((1,00000000 * 390 / 2450); 0,16667; 2450)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 812 de 898


Comandos

Este no es un resultado muy significativo. Las estadísticas Z de 1,000 y menores son muy comunes y por lo
general pueden ser ignoradas.

Observaciones
Cómo funciona
La función ZSTAT( ) calcula la estadística Z estándar para utilizar en muchas tareas de resolución de pro-
blemas, incluso análisis digital. Devuelve el resultado con una precisión de tres decimales.

Uso de ZSTAT( )
Utilice ZSTAT( ) para evaluar la probabilidad de frecuencia de ocurrencia de un determinado resultado en
un período o categoría específicos. Cuanto más sea la estadística Z resultante, menor será la probabilidad
de ocurrencia.
Por ejemplo, una estadística Z de 1,96 tiene una significación de 0,05, representando la posibilidad de una
en 20 ocurrencias, mientras una estadística Z de 2,57 tiene una significación de 0,01, representando la posi-
bilidad de una en 100 ocurrencias. Para obtener información sobre estadísticas Z, consulte un libro de esta-
dística.

Especificación de valores de entrada para ZSTAT( )


Puede especificar los parámetros para ZSTAT( ) como números o proporciones:
l Cuando especifica ambos valores de entrada como números, la función calcula la estadística Z uti-
lizando una aritmética de punto flotante.
l Cuando especifica ambos valores de entrada como proporciones, la función calcula la estadística Z
utilizando aritmética de punto fijo y es necesario utilizar un multiplicador decimal para controlar el
redondeo.
l Al utilizar una expresión dentro de una expresión para calcular el valor real o esperado, usted debe
especificar el nivel de precisión deseado en el resultado utilizando un multiplicador decimal. ACL
tiene una precisión de 8 dígitos; por lo tanto, un multiplicador de 1,00000000 devolverá la mayor pre-
cisión alcanzable.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 813 de 898


Comandos

Estudios analíticos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 814 de 898


Comandos

Scripts de estudios analíticos


Los scripts de ACL no se limitan a la ejecución en ACL Analytics únicamente. Al convertirlos en estudios
analíticos y empaquetarlos en aplicaciones de análisis, puede programar los scripts de ACL en ACL GRC
Analytics Exchange o ejecutarlos en la ventana Aplicación de análisis.

¿Qué son los estudios analíticos?


Un estudio analítico es un un script de ACL con un encabezado de estudio analítico. El encabezado del
estudio analítico es una serie de etiquetas declarativas que permiten que el script se ejecute en Servidor de
AX o en la ventana de la aplicación de análisis sin entrada del usuario.
Consejo
Los estudios analíticos se desarrollan y se prueban casi exclusivamente en ACL Analytics
ya que este entorno permite un desarrollo más sencillo. Utilice AX Cliente para hacer actua-
lizaciones simples a los estudios analíticos que están almacenados en AX Servidor.

¿Qué son las aplicaciones de análisis?


Una aplicación de análisis es un proyecto de ACL que se empaqueta para su uso en ACL GRC Analytics
Exchange o en la ventana Aplicación de análisis. Las aplicaciones de análisis contienen uno o más scripts
de estudios analíticos y también pueden contener tablas de datos e interpretaciones.
Nota
En general, la creación o el desarrollo de las aplicaciones de análisis está a cargo de los
expertos en scripts internos de una organización o se lleva a cabo por medio de un acuerdo
con los consultores de ACL.

Conversión de los scripts de ACL en estudios analíticos


Los estudios analíticos comienzan como scripts de ACL regulares. Para ejecutarlos en ACL GRC Analytics
Exchange o la ventana Aplicación de análisis, debe convertir el script de ACL en un estudio analítico:
1. Cree y pruebe un script en ACL Analytics.
2. Agregue las etiquetas de encabezado de estudio analítico para convertirlo en un estudio analítico.
3. Empaquételo para ejecutarlo en el Servidor de AX o en la ventana de la aplicación de análisis.

Agregar encabezados de estudios analíticos


Los encabezados de los estudios analíticos se definen en un bloque de comentario en la primera línea del
script. Como mínimo, un encabezado de estudio analítico declara que el script es un estudio analítico:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 815 de 898


Comandos

COMMENT
//ANALYTIC Identificar cheques faltantes
Este estudio analítico identifica los números de cheques faltantes
END

Si desea obtener más información, consulte "Agregar encabezados de estudios analíticos" en la


página 851.

Distribución y ejecución de estudios analíticos


Métodos para ejecutar un estudio analítico
Los estudios analíticos se ejecutan en aplicaciones de análisis en la ventana Aplicación de análisis o en el
Servidor de AX. Puede distribuir y ejecutar los scripts de los estudios analíticos utilizando los siguientes
métodos:
l importar el proyecto de ACL (archivo .acl) directamente al Servidor de AX
l abrir el proyecto como una aplicación de análisis (archivo .aclx) y ejecutar el estudio analítico en
la ventana Aplicación de análisis
l empaquetar el proyecto en una aplicación de análisis (archivo .aclapp) y distribuir el proyecto
como un archivo comprimido o importarlo al Servidor de AX
Si desea obtener más información, consulte "Empaquetamiento de las aplicaciones de análisis" en la
página 857.

Determinación de si un estudio analítico se está ejecutando como un script de


estudio analítico o un script de ACL
Si desea ejecutar su script como un script de ACL en ACL Analytics y también como un script de estudio
analítico tanto en ACL GRC Analytics Exchange como en la ventana Aplicación de análisis, es posible que
desee determinar el entorno de ejecución durante la ejecución del script. Puede utilizar esta información
para tomar decisiones acerca de los comandos que se deben ejecutar según el lugar en el que se esté eje-
cutando el script.
Utilice la función FTYPE( ) para determinar dónde se está ejecutando el script:

FTYPE("ax_main") = "b"

Si el script se está ejecutando en ACL GRC Analytics Exchange o en la ventana Aplicación de análisis, la
expresión se evalúa como verdadera (T). En el caso de los scripts que se están ejecutando en ACL Ana-
lytics, la expresión se evalúa como falsa (F). Si desea obtener más información, consulte "Función
FTYPE( )" en la página 540.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 816 de 898


Comandos

Identificación del usuario que está ejecutando el script


Si está ejecutando el script de estudio analítico en el Servidor de AX, puede usar la variable del sistema
AXRunByUser para hacer referencia al nombre de usuario del usuario que está ejecutando actualmente el
script con el formato dominio\nombre_de_usuario:

EXTRACT FIELDS TIME() AS "Hora", DATE() AS "Fecha", AXRunByUser AS "Usuario actual"


TO R_EjecutarRegistro APPEND

Nota
AXRunByUser solo está disponible al ejecutar estudios analíticos en el Servidor de AX. No
se reconoce la variable al ejecutar scripts en ACL Analytics.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 817 de 898


Comandos

Etiquetas y encabezados de estudios analíticos


Un encabezado de estudio analítico es una serie de etiquetas encerradas en un bloque de comentario al
principio de un script de ACL. El encabezado del estudio analítico es obligatorio para todos los scripts de
ACL que desee ejecutar en el Servidor de AX. Algunas etiquetas del encabezado, como PARAM o
TABLE, especifican argumentos de entrada que puede ajustar al ejecutar el script de estudio analítico en
ACL GRC Analytics Exchange.
Nota
Antes de la versión 5 de ACL GRC Analytics Exchange y la versión 11 de ACL Analytics,
los encabezados de los estudios analíticos se denominaban "declaraciones de estudio
analítico".

Definición de los encabezados de estudio analítico


Los encabezados de los estudios analíticos deben estar completamente definidos en un bloque de comen-
tario que comienza en la primera línea del script. Las etiquetas pueden estar en cualquier orden en el
encabezado del estudio analítico, excepto por la etiqueta ANALYTIC, que debe ser la primera y las eti-
quetas FIELD, que deben ir inmediatamente después de la etiqueta TABLE asociada a ellas.

Ejemplo
El siguiente ejemplo de encabezado de estudio analítico identifica una tabla y un campo para utilizar en el
script, así como el parámetro de fecha de inicio:

COMMENT
//ANALYTIC Identificar cheques faltantes
Este estudio analítico identifica los números de cheque faltantes
//TABLE v_tabla_pagos Tabla de pagos
Seleccione una tabla que enumere los pagos e incluya una columna de números de cheque
//FIELD v_núm_cheche CN Número de cheque
Seleccione el campo que contiene los números de cheque
//PARAM v_fecha_de_inicio D OPTIONAL Fecha de inicio (opcional)
Introduzca la fecha de inicio para el análisis
END

Formato de las etiquetas


Cada etiqueta del encabezado utiliza el siguiente formato:

//Nombre_etiqueta atributos Texto_descriptivo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 818 de 898


Comandos

El indicador de etiqueta // debe ser el primer carácter que no sea un espacio en blanco en la línea del script.
La etiqueta debe ir inmediatamente después del indicador de etiqueta, sin ningún espacio ni carácter entre
ellos.

Convenciones de las etiquetas


Componente Convención

Nombres de las eti- Los nombres de las etiquetas no distinguen entre mayúsculas y minúsculas.
quetas
A diferencia de los nombres de comandos y funciones de ACL, los nombres de las etiquetas
no se pueden abreviar.

Atributos de las eti- Al especificar valores de atributos para una etiqueta, debe incluir espacios y, si lo desea, ence-
quetas rrar el valor entre comillas.

Descripciones de las Las descripciones son opcionales Si se especifica una descripción, esta puede tener varias
etiquetas líneas, pero los saltos de líneas no se conservan en AX Cliente, Cliente Web AX o la ventana
Aplicación de análisis.

Especificación de valores de entrada de las etiquetas en ACL Ana-


lytics
Puede utilizar una sintaxis de asignación especial := para especificar valores de prueba para una etiqueta
de estudios analíticos que requiere una definición en ACL GRC Analytics Exchange o la ventana Aplicación
de análisis:
l FILE
l TABLE
l FIELD
l PARAM
Utilice esta sintaxis para probar los scripts de estudios analíticos en ACL Analytics:

//TABLE v_TablaAnálisis "Tabla que se debe clasificar" := "Trans_Mayo"

Cuando el script se ejecuta en ACL Analytics, el parámetro asume el valor que se especifica en la asig-
nación. Una vez que se ejecute el estudio analítico en ACL GRC Analytics Exchange o la ventana Apli-
cación de análisis, se ignora la asignación del valor de prueba y se utilizan los parámetros de entrada
definidos por el usuario.
Debe dejar un espacio entre el operador de asignación y el nombre de la etiqueta, y los valores deben uti-
lizar el calificador correcto para el tipo de datos, tal como se hace en ACL Analytics. Si desea obtener más
información, consulte "Tipos de datos" en la página 21.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 819 de 898


Comandos

Lista completa de etiquetas de estudio analítico disponibles


Etiqueta Descripción

"ANALYTIC" en la Designa un script de ACL como un estudio analítico que se puede ejecutar en el Servidor de
página opuesta AX o en la ventana Aplicación de análisis.

"FILE" en la Especifica un archivo ajeno a ACL, como un archivo de Excel o un archivo delimitado, que
página 823 proporciona datos de entrada para un estudio analítico que se ejecuta en el Servidor de AX.
El archivo debe estar ubicado en la subcarpeta Archivos relacionados de la carpeta del Ser-
vidor de AX en la cual se encuentra el estudio analítico.

"TABLE" en la Define una tabla de ACL que el usuario que ejecuta el estudio analítico selecciona como
página 825 información de entrada para el script. La etiqueta TABLE puede ir seguida de cero o más eti-
quetas FIELD en líneas secuenciales.

"FIELD" en la Define un campo que el usuario que ejecuta el estudio analítico selecciona como información
página 827 de entrada para el script. El campo forma parte de la tabla que se define en la etiqueta
TABLE previa. La primera etiqueta FIELD debe ir directamente a continuación de una eti-
queta TABLE y puede ir seguida de más etiquetas FIELD en líneas secuenciales.

"PARAM" en la Crea parámetros de entrada para un estudio analítico y define los requisitos para los valores
página 829 de entrada. Un parámetro de entrada es un marcador de posición que permite a los usuarios
que ejecutan un estudio analítico especificar el valor real que se debe utilizar al ejecutar o
programar un estudio analítico.

"PASSWORD" en la Especifica un parámetro de contraseña para los comandos de ACLScript. Se solicita a los
página 839 usuarios que especifiquen el valor de contraseña solicitado al programar o ejecutar un estu-
dio analítico, de forma que no sea necesaria la intervención del usuario cuando se ejecuta el
script.

"DATA" en la Especifica que la salida de una tabla de ACL realizada por un estudio analítico se copia a la
página 841 subcarpeta de Datos de la carpeta Servidor de AX o la carpeta de Windows en la cual está
ubicada la aplicación de análisis si se ejecuta en la ventana Aplicación de análisis. En gene-
ral, usted copia las tablas a la subcarpeta de Datos para que puedan ser utilizadas como
tablas de entrada para estudios analíticos posteriores.

"RESULT" en la Especifica los resultados de la salida del estudio analítico que usted desea poner a dis-
página 843 posición de los usuarios finales en las aplicaciones cliente. Los resultados de salida, aun
cuando existen, no están disponibles de forma automática, excepto por un archivo de log si el
estudio analítico no se puede completar correctamente. Debe utilizar una etiqueta RESULT
para cada elemento de resultado que desee que esté disponible.

"PUBLISH" en la Especifica un archivo que contiene metadatos que definen qué tablas de ACL se deben publi-
página 846 car en AX Exception cuando se termina de procesar un estudio analítico.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 820 de 898


Comandos

ANALYTIC
Designa un script de ACL como un estudio analítico que se puede ejecutar en el Servidor de AX o en la ven-
tana Aplicación de análisis.

Sintaxis
//ANALYTIC <TYPE IMPORT|PREPARE|ANALYSIS> nombre
< descripción>

Parámetros
Nombre Descripción

TYPE Identifica el tipo de script de estudio analítico como uno de los siguientes tres tipos:
opcional o IMPORT:: extraen datos de un origen de datos. La salida de un estudio analítico de
importación es una tabla de datos sin procesar.
o PREPARE:: transforman datos sin procesar del modo que resulte necesario para que
sean aptos para el análisis. La salida de un estudio analítico de preparación es una
tabla de análisis.
o ANALYSIS:: llevan a cabo pruebas en los datos de las tablas de análisis. La salida de
un estudio analítico de análisis es una o más tablas de resultados.
Los estudios analíticos con un TYPE especificado se organizan en las áreas corres-
pondientes de Importación, Preparación o Análisis del Cliente Web AX y la ventana Apli-
cación de análisis. Esta ubicación orienta al usuario para ejecutar los estudios analíticos
en la secuencia adecuada. La secuencia no es obligatoria y tampoco lo es el tipo de fun-
cionalidad dentro del estudio analítico.
Si omite TYPE, el estudio analítico aparece en la sección de Análisis.

nombre El nombre del estudio analítico. El nombre identifica el estudio analítico en las apli-
caciones cliente. El nombre del estudio analítico es independiente del nombre del script
que usted especifica al crear inicialmente el script.
Nota:
Los estudios analíticos deben tener un nombre exclusivo dentro de una
aplicación de análisis. Si se utiliza el mismo nombre en dos o más estu-
dios analíticos de una aplicación de análisis, se generará un error al
intentar importar o abrir la aplicación de análisis.
Los nombres de los estudios analíticos no deben incluir caracteres que no se pueden uti-
lizar en los nombres de archivos de Windows (< > : " / \ | ? *), porque esto causará un
error que impedirá exportar los resultados del estudio analítico. No utilice el valor TYPE
como nombre.
En las aplicaciones cliente, los nombres se incluyen en orden alfanumérico. Para orien-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 821 de 898


Comandos

Nombre Descripción

tar a los usuarios acerca de la secuencia correcta para la ejecución de varios estudios
analíticos en una única aplicación de análisis, puede agregar un prefijo para ordenar los
nombres de los estudios analíticos dentro de cada área. Por ejemplo: “01_analizar_PO”,
“02_analizar_facturas” y así en adelante. La secuencia implícita en el orden de los nom-
bres no se hace cumplir.

descripción Una descripción del estudio analítico u otra información que el usuario puede llegar a
necesitar para ejecutar correctamente el estudio analítico.
opcional
La descripción aparece con el estudio analítico en las aplicaciones cliente. La des-
cripción puede ser de varias líneas, pero no se pueden saltear líneas. La descripción se
debe introducir en la línea ubicada debajo de la etiqueta ANALYTIC con la cual está aso-
ciada.

Ejemplos
Encabezado de estudio analítico básico
El siguiente encabezado de estudio analítico contiene un nombre y una descripción del estudio analítico:

COMMENT
//ANALYTIC Identificar cheques faltantes
Este estudio analítico identifica los números de cheques faltantes.
END

Encabezado de estudio analítico con tipo


El siguiente encabezado de estudio analítico especifica un estudio analítico de preparación con una des-
cripción de lo que hace el script:

COMMENT
//ANALYTIC TYPE PREPARE Estandarizar datos de domicilio
Este estudio analítico limpia y estandariza el campo de domicilio a fin de prepararlo para el análisis de
duplicados.
END

Observaciones
Se debe introducir un comando COMMENT de ACLScript en la primera línea del script, seguido de la eti-
queta ANALYTIC en la segunda línea. Si se utiliza la etiqueta ANALYTIC en cualquier otro lugar, se la
ignora.
En un proyecto de ACL, uno o más scripts pueden incluir una etiqueta ANALYTIC.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 822 de 898


Comandos

FILE
Especifica un archivo ajeno a ACL, como un archivo de Excel o un archivo delimitado, que proporciona
datos de entrada para un estudio analítico que se ejecuta en el Servidor de AX. El archivo debe estar ubi-
cado en la subcarpeta Archivos relacionados de la carpeta del Servidor de AX en la cual se encuentra el
estudio analítico.

Sintaxis
//FILE nombre de archivo

Parámetros
Nombre Descripción

nombre de archivo El nombre del elemento de la subcarpeta Archivos relacionados que se utiliza como
archivo de datos de entrada para un estudio analítico. El nombre de archivo no puede
incluir una ruta.
Se admite el uso de comodines al especificar un nombre de archivo. Utilice un asterisco
(*) para reemplazar ninguno, uno o más caracteres.
Por ejemplo:
o Fac12* coincide con todas las siguientes opciones: Fac12, Fac123 e Fac1234
o *.* coincide con todos los archivos de todas las extensiones de la carpeta Archivos
relacionados
o Fac_*.* coincide con Fac_ene.pdf e Fac_feb.xls
Consejo
Puede usar la etiqueta //FILE para hacer referencia a un archivo de pre-
ferencias .prf de ACL Analytics. Al hacerlo, se utiliza el archivo de pre-
ferencias de la subcarpeta Archivos relacionados para establecer la
configuración del entorno de ejecución en lugar de utilizar el archivo de
preferencias global del Servidor de AX. El archivo de preferencias debe
ser de la última versión de ACL Analytics que sea compatible con su ins-
talación de ACL GRC Analytics Exchange.

Ejemplos
Ejemplos básicos
Especifica un archivo específico:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 823 de 898


Comandos

//FILE Cuentasmarcadas.csv

Especifica todos los archivos CSV cuyo nombre termina con "marcadas":

//FILE *marcadas.csv

Especifica todos los archivos:

//FILE *.*

Ejemplos avanzados
Importar datos desde un archivo incluido
Usted ejecuta un análisis mensual de los datos de los empleados en el Servidor de AX. Uno de los estu-
dios analíticos de la aplicación de análisis importa los datos que se deben analizar de un archivo deli-
mitado que se coloca en la carpeta Archivos relacionados mensualmente:

COMMENT
//ANALYTIC TYPE IMPORT importar_empleado
Importa los registros de empleados de un campo delimitado almacenado en la carpeta Archivos rela-
cionados.
//FILE Empleados.csv
END
IMPORT DELIMITED TO "Empleados.fil" FROM "Empleados.csv" 0 SEPARATOR "," QUALIFIER '"'
CONSECUTIVE STARTLINE 1 KEEPTITLE FIELD "Nombre" C AT 1 DEC 0 WID 11 PIC "" AS
"Nombre" FIELD "Apellido" C AT 12 DEC 0 WID 12 PIC "" AS "Apellido"

Observaciones
No se admite la etiqueta FILE para ser utilizada en estudios analíticos que se ejecutan en la ventana Apli-
cación de análisis. Si desea especificar un archivo de datos de entrada para los estudios analíticos que se
ejecutan en la ventana Aplicación de análisis, utilice la etiqueta PARAM. Si desea obtener más infor-
mación, consulte "PARAM" en la página 829.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 824 de 898


Comandos

TABLE
Define una tabla de ACL que el usuario que ejecuta el estudio analítico selecciona como información de
entrada para el script. La etiqueta TABLE puede ir seguida de cero o más etiquetas FIELD en líneas
secuenciales.

Sintaxis
//TABLE id nombre
<descripción>

Parámetros
Nombre Descripción

id La variable que almacena el nombre de tabla de entrada seleccionado por el usuario.


Utilice este valor en el script de estudio analítico para hacer referencia a la tabla.

nombre El nombre que se debe asociar con la tabla.


El valor se muestra en las aplicaciones cliente cuando se le solicita al usuario que eje-
cuta el estudio analítico que seleccione la tabla.

descripción Texto descriptivo que especifica la finalidad de la tabla. La descripción puede ser de
varias líneas, pero no se pueden saltear líneas.
opcional
El valor se muestra en las aplicaciones cliente cuando se le solicita al usuario que selec-
cione la tabla. La descripción puede solicitar al usuario que seleccione la tabla correcta.
Por ejemplo, "Seleccione la tabla que incluye la información de nómina".
La descripción se debe introducir en la línea ubicada debajo de la etiqueta TABLE con la
cual está asociada.

Ejemplos
Ejemplos básicos
Etiqueta TABLE con descripción para ayudar al usuario a seleccionar la tabla de entrada correcta:

//TABLE v_tabla_pagos Tabla Pagos


Seleccione una tabla que enumere pagos e incluya una columna de número de cheque.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 825 de 898


Comandos

Ejemplos avanzados
Uso de una tabla definida en la etiqueta TABLE en el script
El siguiente script ejecuta un comando AGE en una tabla seleccionada por el usuario a partir de las tablas
de datos del proyecto:

COMMENT
//ANALYTIC script_de_ejemplo
//TABLE v_tabla_pagos Tabla de pagos
Seleccione una tabla que enumere los pagos e incluya una columna de números de cheque
END

OPEN %v_tabla_pagos%
AGE ON fecha_de_pago CUTOFF 20141231 INTERVAL 0;30;60;90;120;10000 SUBTOTAL
Importe_pago TO r_salida
CLOSE %v_tabla_pagos%

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 826 de 898


Comandos

FIELD
Define un campo que el usuario que ejecuta el estudio analítico selecciona como información de entrada
para el script. El campo forma parte de la tabla que se define en la etiqueta TABLE previa. La primera eti-
queta FIELD debe ir directamente a continuación de una etiqueta TABLE y puede ir seguida de más eti-
quetas FIELD en líneas secuenciales.

Sintaxis
//FIELD id tipo nombre
<descripción>

Parámetros
Nombre Descripción

id La variable que almacena el nombre de campo de entrada seleccionado por el usuario.


Utilice este valor en el script de estudio analítico para hacer referencia a este campo.

tipo Los tipos de campos que se pueden seleccionar. Es posible seleccionar cualquier tipo o
combinación de tipos de la siguiente lista:
o C: datos de caracteres
o N: datos numéricos
o D:Un subtipo de fecha, fechahora u hora del tipo de datos fechahora
o L: datos lógicos
Se puede seleccionar cualquier campo calculado de una tabla sin importar el tipo que se
especifique.

nombre El nombre que se debe asociar con el campo.


El valor se muestra en las aplicaciones cliente cuando se le solicita al usuario que selec-
cione el campo.

descripción Texto descriptivo que especifica la finalidad del campo. La descripción puede ser de
varias líneas, pero no se pueden saltear líneas.
opcional
El valor se muestra en las aplicaciones cliente cuando se le solicita al usuario que selec-
cione el campo. La descripción puede solicitar al usuario que seleccione el campo
correcto. Por ejemplo: “Seleccione el campo que incluye el monto de pago”.
La descripción se debe introducir en la línea ubicada debajo de la etiqueta FIELD con la
cual está asociada.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 827 de 898


Comandos

Ejemplos
Ejemplos básicos
Especifica un campo de caracteres:

//FIELD v_nombre C Nombre Campo

Especifica un campo de caracteres o numérico:

//FIELD v_núm_fac CN Número Factura

Ejemplos avanzados
TABLE con dos etiquetas FIELD que la acompañan
Los siguientes encabezados de estudio analítico permiten que el usuario especifique dos campos de
entrada desde la tabla v_tabla_pagos cuando se ejecuta el script:

COMMENT
//ANALYTIC estudio analítico de prueba
//TABLE v_tabla_pagos Tabla de pagos
Seleccione una tabla que enumere los pagos e incluya una columna de números de cheque
//FIELD v_núm_cheque CN Campo Número de cheque
//FIELD v_fecha_de_pago D Campo Fecha de pago
Seleccione la columna que contiene la fecha de pago del cheque.
END

OPEN %v_tabla_pagos%
EXTRACT FIELDS %v_núm_cheque%; %v_fecha_pago% TO t_analizar

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 828 de 898


Comandos

PARAM
Crea parámetros de entrada para un estudio analítico y define los requisitos para los valores de entrada. Un
parámetro de entrada es un marcador de posición que permite a los usuarios que ejecutan un estudio ana-
lítico especificar el valor real que se debe utilizar al ejecutar o programar un estudio analítico.

Sintaxis
//PARAM id tipo <OPTIONAL> <MULTI> <SEPARATOR valor> <QUALIFIER valor>
<VALUES lista_de_valores> etiqueta
<descripción>

Parámetros
Nombre Descripción

id La variable que almacena los valores de entrada del estudio analítico que el usuario
seleccionó o especificó.
Por ejemplo, v_fecha_de_inicio o v_regiones o v_archivo_de_entrada. También sirve
como identificador exclusivo para el parámetro.
Cuando se ejecuta un estudio analítico, se crea la variable únicamente si el usuario pro-
porciona un valor de entrada. Si un parámetro es opcional y el usuario lo saltea, no se
crea la variable. Si la lógica posterior del estudio analítico requiere que exista la varia-
ble, puede comprobar si existe. Si no existe, puede crearla e inicializarla.

tipo El tipo de datos del parámetro, que controla qué tipo de valores de entrada se pueden
introducir. También puede especificar que se abra una utilidad de carga de archivos o
un explorador de archivos de Windows.
Es posible especificar los siguientes tipos utilizando mayúsculas:
o C: datos de caracteres
o N: datos numéricos
o D: datos de fechahora del subtipo de fecha
o DT: datos de fechahora del subtipo de fechahora
o T: datos de fechahora del subtipo de hora
o L: datos lógicos
o F: abre una utilidad de carga de archivos o un explorador de archivos de Windows y
permite que el usuario seleccione un archivo de entrada ajeno a ACL para el estudio
analítico al ejecutarlo en el Cliente Web AX o la ventana Aplicación de análisis
Al seleccionarlo, se introduce automáticamente el nombre de archivo como un valor
de entrada de Carácter. Especifique F únicamente. No especifique F C.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 829 de 898


Comandos

Nombre Descripción

Nota
No se admite el tipo 'F' para estudios analíticos que se ejecutan en AX
Cliente. Si desea especificar un archivo de entrada para los estudios
analíticos que se ejecutan en AX Cliente, utilice la etiqueta FILE. Si
desea obtener más información, consulte "FILE" en la página 823.

OPTIONAL Especifica que el parámetro es opcional y que el usuario no necesita introducir un valor.
opcional

MULTI Especifica que el parámetro acepta valores de entrada diferentes. Se puede utilizar
MULTI con o sin la opción VALUES:
opcional
o MULTI con VALUES: el usuario puede seleccionar uno o más valores de una lista de
valores
o MULTI sin VALUES: el usuario puede introducir manualmente uno o más valores; por
ejemplo: 5812 5813 5814
MULTI se puede especificar para todos los tipos y subtipos de datos (C, N, D, DT, T),
excepto para el tipo de datos Lógico (L).
Si especifica MULTI y el tipo es C (Carácter), también puede especificar las opciones
SEPARATOR y QUALIFIER para insertar automáticamente separadores (delimitadores)
y calificadores de texto en una cadena de valores de entrada. Para ejecutar con éxito un
estudio analítico es necesario delimitar y calificar los valores de entrada de caracteres.

SEPARATOR valor Especifica que se inserta automáticamente un carácter separador entre los valores de
entrada de caracteres múltiples, lo cual genera una lista delimitada que se pasa al estu-
opcional
dio analítico para el procesamiento.
valor especifica qué carácter separador se va a utilizar. Un separador, o delimitador, que
se utiliza comúnmente es la coma ",". Si se omite SEPARATOR, se utiliza un espacio
como separador por valor predeterminado. No es posible especificar el carácter de espa-
cio como valor.
SEPARATOR solo puede ser utilizado cuando el tipo es C (Carácter) y se especifica la
opción MULTI, ya sea con o sin la opción VALUES.

QUALIFIER valor Especifica que se inserta automáticamente un carácter calificador de texto al principio y
al final de cada valor de entrada de caracteres en una lista delimitada que se pasa al
opcional
estudio analítico para el procesamiento.
Cualquier texto encerrado entre los caracteres calificadores será tratado como texto sin
formato. El valor especifica qué carácter calificador utilizar. Un calificador utilizado
comúnmente es la comilla simple. Si se omite QUALIFIER, no se utiliza ningún cali-
ficador por valor predeterminado. No es posible especificar un carácter de espacio como
valor.
QUALIFIER solo puede ser utilizado cuando el tipo es C (Carácter) y se especifica la
opción MULTI, ya sea con o sin la opción VALUES.
Nota
En la actualidad, los parámetros de entrada de los estudios analíticos no
admiten el uso de las comillas (") como calificador del texto. En su lugar,
puede usar una comilla simple ('). Si especifica comillas como calificador,
la etiqueta PARAM no funcionará correctamente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 830 de 898


Comandos

Nombre Descripción

VALUES lista_de_valores Una lista de verificación de valores que el usuario puede seleccionar al ejecutar el estu-
dio analítico. Utilice la siguiente sintaxis para especificar los valores
opcional

VALUES |Valor1|Valor2|Valor3|Valor n|

La opción VALUES se puede utilizar con o sin la opción MULTI:


o VALUES con MULTI: el usuario puede seleccionar uno o más valores de una lista de
valores
o VALUES sin MULTI: el usuario puede seleccionar un valor único de una lista de valo-
res
Se puede especificar VALUES para todos los tipos y subtipos de datos (C, N, D, DT, T),
excepto para el tipo de datos Lógico (L). Los valores de caracteres de una lista_de_valo-
res pueden contener espacios y puntuación. La lista_de_valores numéricos, de fecha,
fechahora u hora debe especificarse utilizando los siguientes formatos:
o Los valores numéricos: pueden ser positivos o negativos. Se deben especificar en
notación decimal y sin un separador de miles. Por ejemplo, 1500,00 o -1500,00
o Los valores de fecha: se deben especificar utilizando el formato MM/DD/AAAA (por
ejemplo, 12/31/2014)
o Los valores de fechahora: se deben especificar utilizando el formato
MM/DD/AAAA hh:mm:ss (por ejemplo, 12/31/2014 23:59:59)
o Los valores de hora: se deben especificar utilizando el formato hh:mm:ss (por ejem-
plo, 23:59:59)

etiqueta La etiqueta de la interfaz de usuario que se debe asociar con el parámetro. El valor de la
etiqueta se muestra en las aplicaciones cliente cuando se le solicita al usuario que intro-
duzca o seleccione un valor de entrada para el parámetro.

descripción Texto descriptivo que especifica la finalidad del parámetro.


opcional La descripción se muestra en las aplicaciones cliente cuando se le solicita al usuario
que introduzca o seleccione un valor de entrada para el parámetro. El texto puede incluir
instrucciones que ayuden al usuario. Por ejemplo, "Escriba la fecha de corte para el
período de nómina".
La descripción se debe introducir en la siguiente línea después de la etiqueta PARAM
asociada. El texto puede ser de varias líneas, pero no se pueden saltear líneas. Los sal-
tos de línea no se conservan al mostrar el texto en las aplicaciones cliente.

Ejemplos
Ejemplos básicos
Permite que el usuario pueda especificar, si lo desea, un intervalo de fechas:

//PARAM v_fecha_de_inicio D OPTIONAL Fecha de inicio (opcional)


Introduzca la fecha de inicio para el análisis

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 831 de 898


Comandos

//PARAM v_fecha_de_finalización D OPTIONAL Fecha de finalización (opcional)


Introduzca la fecha de finalización para el análisis

Requiere que el usuario seleccione un número máximo de transacciones para procesar:

//PARAM v_Transmáx N VALUES |250|500|750|1000| Transacciones máximas para procesar

Requiere que el usuario especifique uno o más códigos de categoría de comerciante:

//PARAM v_códigos C MULTI SEPARATOR , QUALIFIER ' Código(s) de comerciante para incluir
Especifique uno o más códigos de categoría de comerciante. Pulse "Intro" después de cada código
para que cada código quede en una línea separada. No encierre los códigos entre comillas.

Requiere que el usuario seleccione uno o más códigos de categoría de comerciante:

//PARAM v_códigos C MULTI SEPARATOR , QUALIFIER ' VALUES |4121 Taxis/Limusinas|5812


Restaurantes|5813 Bares - Bebidas alcohólicas|5814 Restaurantes de comida rápida| MC Códigos
que se deben incluir
Seleccione uno o más códigos de categoría de comerciante.

Ejemplos avanzados
Solicite que un usuario especifique un rango de importe
Debe clasificar los registros de la tabla que caen entre un rango mínimo y máximo de importes. Este rango
cambia ocasionalmente, por lo que usted ofrece parámetros de entrada que permiten al usuario que eje-
cuta el estudio analítico definir el rango al programar o ejecutar el script:

COMMENT
//ANALYTIC estudio_analítico_de_prueba
//PARAM v_importe_mín N Importe mínimo
Introduzca un importe mínimo
//PARAM v_importe_máx N Importe máximo
Introduzca un importe máximo
END

CLASSIFY ON %v_CampoA% IF BETWEEN(AMOUNT, v_importe_mín, v_importe_máx)


SUBTOTAL AMOUNT TO "Clasificada_%v_TablaAnálisis%.FIL"

Permita que los usuario excluyan, si lo desean, uno o más números de cliente
Debe clasificar los registros de una tabla pero desea brindarle al usuario la opción de excluir a algunos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 832 de 898


Comandos

clientes del análisis.


Para hacerlo, usted proporciona un parámetro de carácter opcional. Su script prueba si se proporciona el
valor o no. Si se ha proporcionado, esos números de cliente se excluyen del comando clasificar:

COMMENT
//ANALYTIC estudio_analítico_de_prueba
//PARAM v_núm_cliente C OPTIONAL MULTI SEPARATOR , QUALIFIER ' Números de cliente que
se deben excluir (opcional)
Especifique uno o más números de cliente. Pulse "Intro" después de cada número, para que cada
número quede en una línea separada. No encierre los números entre comillas.
END

IF FTYPE("v_núm_cliente") = "U" v_núm_cliente = ""


GROUP IF v_núm_cliente = ""
CLASSIFY ON %v_CampoA% SUBTOTAL AMOUNT TO "%v_TablaAnálisis%_clasificada.FIL"
ELSE
CLASSIFY ON %v_CampoA% IF NOT MATCH (CUSTNO; %v_núm_cliente%) SUBTOTAL
IMPORTE TO "%v_TablaAnálisis%_clasificada.FIL"
END

Permita que el usuario seleccione un archivo de entrada (Cliente Web AX o ventana Aplicación de análisis úni-
camente)
Está distribuyendo una aplicación de análisis entre colegas que la ejecutarán en la ventana Aplicación de
análisis. Cuando ejecutan el script de estudio analítico en la aplicación, usted desea proporcionarles un
explorador de archivos de Windows para seleccionar un archivo de Microsoft Excel desde el cual importar
datos:

COMMENT
//ANALYTIC estudio_analítico_de_prueba
//PARAM v_archivo_entrada F Archivo de entrada
Seleccione un archivo de entrada
END

IMPORT EXCEL TO Trans_Mayo_sin_preparar Trans_Mayo_sin_preparar.fil FROM "%v_archivo_


entrada%" TABLE "Trans2_Mayo$" CHARMAX 100 KEEPTITLE

Requiera que el usuario especifique una ruta de archivo de entrada y un nombre de archivo (únicamente la ven-
tana Aplicación de análisis)
Está distribuyendo una aplicación de análisis entre colegas que la ejecutarán en la ventana Aplicación de
análisis. Cuando ejecuten el script de estudio analítico en la aplicación, usted desea que especifiquen una
ruta y un nombre de archivo para utilizarlo como archivo de importación:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 833 de 898


Comandos

COMMENT
//ANALYTIC estudio_analítico_de_prueba
//PARAM v_archivo_entrada C Ruta y nombre de archivo de entrada
Escriba una ruta absoluta y un nombre de archivo; por ejemplo: C:\Usuarios\nombre_de_usua-
rio\Documentos\Datos de ACL\Archivos de datos de muestra\Trans_Mayo.xls
END

IMPORT EXCEL TO Trans_Mayo_sin_preparar Trans_Mayo_sin_preparar.fil FROM "%v_archivo_


entrada%" TABLE "Trans2_Mayo$" CHARMAX 100 KEEPTITLE

Uso de valores predeterminados para los parámetros opcionales


Usted está creando un estudio analítico que extrae registros de transacciones a una tabla de resultados.
Usted desea darle al usuario que ejecuta el script la opción de proporcionar un intervalo de fechas y una
lista de entidades para filtrar los registros que se deben extraer.
Para hacerlo, crea tres parámetros opcionales:
l v_fecha_de_inicio
l v_fecha_de_finalización
l v_lista_de_entidades
En las líneas de apertura del script, prueba si estos valores están ajustados. Si no lo están, establece valo-
res predeterminados de las fechas mínima y máxima, así como una bandera predeterminada para poner
a prueba con v_lista_de_entidades.
En su comando EXTRACT, utiliza los valores para filtrar los registros:

COMMENT
//ANALYTIC prueba
Este estudio analítico prueba el PARAM
//RESULT TABLE t_resultados
//PARAM v_fecha_de_inicio D OPTIONAL Introduzca la fecha de inicio
//PARAM v_fecha_de_finalización D OPTIONAL Introduzca la fecha de finalización
//PARAM v_lista_de_entidades C MULTI OPTIONAL |entidad1|entidad2|
END

IF NOT ISDEFINED("v_fecha_de_inicio") v_fecha_de_inicio = `19000101`


IF NOT ISDEFINED("v_fecha_de_finalización") v_fecha_de_finalización = `99991231`
IF NOT ISDEFINED("v_lista_de_entidades") v_lista_de_entidades = "'all'"

EXTRACT FIELDS ALL TO t_resultados IF BETWEEN(fecha_transacción v_fecha_de_inicio v_


fecha_de_finalización) AND (MATCH(campo_entidad %v_lista_de_entidades%) OR v_lista_enti-
dades = "'all'")

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 834 de 898


Comandos

Observaciones
Diseño de parámetros de entrada opcionales
Si utiliza OPTIONAL con la etiqueta PARAM, la variable asociada con el parámetro de entrada del estudio
analítico se puede crear, o no, cuando se ejecuta el estudio analítico. Si el usuario especifica un valor de
entrada, se crea automáticamente la variable del parámetro. Sin embargo, si el usuario saltea el parámetro
opcional y no especifica un valor de entrada, no se crea la variable del parámetro.
Si la lógica posterior del estudio analítico depende de la capacidad de evaluar el contenido de la variable del
parámetro, lo cual incluye evaluar un estado vacío o nulo, debe comprobar la existencia de la variable del
parámetro y, si no existe, crearla e inicializarla en nulo. Puede usar la función FTYPE( ) o la función
ISDEFINED( ) para realizar la prueba:
l IF FTYPE("nombre_var") = "U" nombre_var = ""
l IF NOT ISDEFINED("nombre_var") nombre_var = ""
Realice la prueba después del encabezado del estudio analítico y antes de cualquier lógica del script de
ACL que dependa de la existencia de la variable del parámetro. Vea el Ejemplo "f", más adelante.

Resumen de las opciones MULTI y VALUES


La tabla que se incluye a continuación resume el efecto de las opciones MULTI y VALUES sobre los requi-
sitos y el diseño del parámetro de entrada.
El efecto de las opciones MULTI y VALUES
Requisitos y diseño del parámetro de entrada usa MULTI usa VALUES

Un valor de entrada único introducido manualmente en un campo No No

Un valor de entrada único seleccionado de los valores de una lista desplegable No Sí

Uno o más valores de entrada introducidos manualmente en un campo Sí No

Uno o más valores de entrada seleccionados de una lista de verificación de valores Sí Sí

Delimitar y calificar los valores de entrada de caracteres


Para que un estudio analítico se ejecute correctamente, se deben calificar los valores de entrada de carac-
teres y, si hay más de un valor, se deben delimitar con un separador.
Al crear parámetros de entrada de caracteres y al indicar a los usuarios del estudio analítico de qué manera
introducir los valores de entrada de caracteres, debe tener cuidado de evitar la creación de calificadores de
texto redundantes o anidados (calificadores dentro de calificadores). Los calificadores de texto redun-
dantes harán que los parámetros de entrada no funcionen correctamente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 835 de 898


Comandos

Existen cuatro métodos diferentes para insertar calificadores de texto alrededor de los valores de entrada
de caracteres (se indican a continuación). Debe asegurarse de que el parámetro de entrada que diseñe
utilice solo uno de estos métodos. Según el método, se inserta también un separador entre los valores
de entrada. Es posible que uno o más métodos no se puedan aplicar, según la manera en la que esté
usando las opciones MULTI y VALUES.
Métodos para insertar calificadores de texto (utilice solo uno por parámetro):
l Método 1: utilizar las opciones SEPARATOR y QUALIFIER
Incluya las opciones SEPARATOR y QUALIFIER en la etiqueta PARAM. Por ejemplo:

//PARAM v_regiones C MULTI SEPARATOR , QUALIFIER '

Utilice este método siempre que sea posible. Es el que requiere menos trabajo y el que genera
menos probabilidad de errores. No se aplica si utiliza VALUES sin MULTI.
l Método 2: especificar manualmente separadores y calificadores
Solicite al usuario del estudio analítico que especifique manualmente los separadores y los cali-
ficadores, además de los valores de entrada reales. Por ejemplo:

'America del Norte','Europa','Asia'

No se aplica si utiliza VALUES con o sin MULTI.


l Método 3: incluir calificadores de la lista_de_valores
Incluya calificadores con cada valor de la lista_de_valores especificada con la opción VALUES. Por
ejemplo:

VALUES |'Asia'|'Europa'|'Medio Oriente'|'América del Norte'|

No se aplica si utiliza MULTI sin VALUES.


l Método 4: encerrar la variable del parámetro entre calificadores
En la sintaxis del script de ACL, encierre la variable del parámetro entre calificadores de texto. Por
ejemplo:

IF MATCH(REGIONS; "%v_regiones%")

Utilice este método únicamente si está utilizando VALUES sin MULTI.


Nota
En la actualidad, los parámetros de entrada de los estudios analíticos no admiten el uso
de las comillas (") como calificador del texto. En su lugar, puede utilizar la comilla simple
(') con la opción QUALIFIER en la lista_de_valores o al especificar manualmente cali-
ficadores alrededor de los valores de entrada. Se pueden utilizar comillas como cali-
ficadores de texto en el cuerpo de un script de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 836 de 898


Comandos

La tabla que se incluye a continuación resume cuándo utilizar los diferentes métodos para insertar cali-
ficadores de texto.
Métodos para insertar calificadores de texto
Tanto MULTI como
MULTI sin VALUES VALUES sin MULTI VALUES

Método 1 Si las utiliza, no utilice No aplicable Si las utiliza, no utilice


el Método 2 el Método 3
Utilizar las opciones SEPARATOR y
QUALIFIER

Método 2 Si las utiliza, no utilice No aplicable No aplicable


el Método 1
Especificar manualmente sepa-
radores y calificadores

Método 3 No aplicable Si las utiliza, no utilice Si las utiliza, no utilice


el Método 4 el Método 1
Incluir calificadores en la lista_de_
valores

Método 4 No utilizar Si las utiliza, no utilice No utilizar


el Método 3
Encerrar la variable del parámetro
entre calificadores

Especificación o selección de un archivo de entrada ajeno a ACL para un estudio ana-


lítico
La tabla que se incluye a continuación resume los diferentes métodos para especificar o seleccionar un
archivo de entrada ajeno a ACL para un estudio analítico. El método que escoja depende, en parte, de la
aplicación que se utilizará para ejecutar el estudio analítico: AX Cliente, Cliente Web AX o la ventana Apli-
cación de análisis.
Métodos para especificar o seleccionar un archivo de entrada ajeno a ACL
La ven-
Cliente tana Apli-
Cliente Web cación de
Método Detalles AX AX análisis

Etiqueta PARAM El usuario selecciona el archivo de entrada utilizando una uti-


con el tipo 'F' lidad de carga de archivos (Cliente Web AX) o el explorador
de archivos de Windows (la ventana Aplicación de análisis).
(ejemplo "g", a
continuación) Este método es el más conveniente porque combina fle-
xibilidad, simplicidad y precisión. Se introduce auto-
máticamente un valor conformado por el nombre del archivo
(Cliente Web AX) o la ruta del archivo y el nombre de archivo
(ventana Aplicación de análisis).
En el Cliente Web AX, este método también carga auto-
máticamente el archivo seleccionado en la subcarpeta Archi-

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 837 de 898


Comandos

La ven-
Cliente tana Apli-
Cliente Web cación de
Método Detalles AX AX análisis

vos relacionados correspondiente de AX Servidor.

Etiqueta PARAM El usuario especifica manualmente una ruta de archivo de


con el tipo 'C' entrada y un nombre de archivo como el valor de entrada de
un estudio analítico.
(ejemplo "h", a
continuación) Este método ofrece flexibilidad porque la ruta del archivo y el
nombre del archivo no se especifican de forma anticipada.
Sin embargo, requiere más trabajo y es propenso a errores
porque el usuario debe introducir manualmente esos valores.

etiqueta FILE El archivo de entrada debe estar ubicado en la subcarpeta


Archivos relacionados adecuada de AX Servidor.
(Si desea obtener
más información,
consulte "FILE" en
la página 823).

La ruta del Este método evita el uso de la etiqueta PARAM; sin embargo,
archivo de es el menos flexible. El usuario se debe asegurar de que, en
entrada y el nom- cada computadora en la que se ejecute el estudio analítico, el
bre del archivo se archivo de entrada tenga una ruta de archivo y un nombre de
incluyen en el archivo idéntico a los que se especifican en el estudio ana-
código del estudio lítico.
analítico
(ejemplo "i", a con-
tinuación)

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 838 de 898


Comandos

PASSWORD
Especifica un parámetro de contraseña para los comandos de ACLScript. Se solicita a los usuarios que
especifiquen el valor de contraseña solicitado al programar o ejecutar un estudio analítico, de forma que no
sea necesaria la intervención del usuario cuando se ejecuta el script.

Sintaxis
//PASSWORD índice nombre
< descripción>

Parámetros
Nombre Descripción

índice El identificador numérico asociado con la contraseña. El valor debe estar entre 1 y 10.

nombre El nombre que se debe asociar con la contraseña. El valor se muestra en el Cliente Web
AX y AX Cliente cuando las aplicaciones le piden al usuario que introduzca un valor
para la contraseña.

descripción Texto descriptivo sobre la contraseña necesaria u otra información.


opcional La descripción puede ser de varias líneas, pero no se pueden saltear líneas. La des-
cripción se debe introducir en la línea ubicada debajo de la etiqueta PASSWORD aso-
ciada.

Ejemplos
Configuración de una contraseña para utilizarla en el script
El siguiente encabezado de estudio analítico define una contraseña que se utiliza para ejecutar una con-
sulta de Direct Link:

COMMENT
//ANALYTIC Ejemplo de contraseña
//PASSWORD 1 Contraseña SAP:
//DATA RSADMIN
END

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 839 de 898


Comandos

SET SAFETY OFF


RETRIEVE RSADMIN PASSWORD 1
OPEN RSADMIN
SET SAFETY ON

Observaciones
Almacenamiento y cifrado de la contraseña
Los valores de la contraseña se asocian con los usuarios individuales de ACL GRC Analytics Exchange y
se cifran cuando están en reposo. Las contraseñas permanecen seguras a lo largo de todo el pro-
cesamiento del estudio analítico y se encriptan en cualquier archivo temporal que se cree en el servidor o
que se cargue a AX Servidor.

Pruebas en ACL Analytics


Si prueba un estudio analítico que tiene una o más etiquetas PASSWORD en ACL Analytics, ACL Ana-
lytics genera automáticamente un comando PASSWORD y le pide que introduzca la contraseña ade-
cuada. Este comando autogenerado le ahorra el trabajo de insertar comandos PASSWORD en la parte
del script del estudio analítico para realizar la prueba y después volver a quitarlos antes de enviar el estu-
dio analítico a los usuarios.
El comando PASSWORD autogenerado se guarda en el log, sin el valor de la contraseña.
Los valores de las contraseñas no se guardan al ejecutar un estudio analítico en ACL Analytics; por lo
tanto, debe especificar la o las contraseñas cada vez que ejecute el estudio analítico, lo cual incluye la eje-
cución o el recorrido del estudio analítico a partir de la posición del cursor.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 840 de 898


Comandos

DATA
Especifica que la salida de una tabla de ACL realizada por un estudio analítico se copia a la subcarpeta de
Datos de la carpeta Servidor de AX o la carpeta de Windows en la cual está ubicada la aplicación de aná-
lisis si se ejecuta en la ventana Aplicación de análisis. En general, usted copia las tablas a la subcarpeta de
Datos para que puedan ser utilizadas como tablas de entrada para estudios analíticos posteriores.

Sintaxis
//DATA nombre

Parámetros
Nombre Descripción

nombre El nombre de la tabla de ACL. nombre no puede tener espacios en blanco.


Puede utilizar caracteres comodín en nombre si es posible que parte del nombre de la
tabla cambie. Por ejemplo, si el nombre de la tabla depende del mes (facturas-ene, fac-
turas-feb, etc.), al especificar facturas-* se asegura de que se encuentre y se copie la
tabla sin importar el sufijo del mes.
Si alguna tabla de la subcarpeta de Datos del Servidor de AX tiene el mismo nombre
que el valor que usted especifique, se sobrescribirá. Esto incluye tablas que coinciden
con cualquier patrón comodín que usted especifique.
Nota
El valor nombre debe ser el nombre de la tabla de ACL, no el nombre del
archivo de datos de origen. Por ejemplo:

//DATA Cheques_faltantes

Lo siguiente es incorrecto:

//DATA
Cheques_faltantes.fil

Ejemplos
Guardado de una tabla de datos
El siguiente encabezado de estudio analítico especifica que la tabla Facturas se copia a la subcarpeta de

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 841 de 898


Comandos

Datos:

COMMENT
//ANALYTIC Importar tabla
//DATA Facturas
END
IMPORT DELIMITED TO Facturas "Facturas.fil" FROM "Facturas.csv" 0 SEPARATOR ","
QUALIFIER '"' CONSECUTIVE STARTLINE 1 KEEPTITLE ALLCHAR ALLFIELDS

Observaciones
Guardado de las tablas de salida
Las tablas de salida no se copian automáticamente a la subcarpeta de Datos . Debe utilizar una etiqueta
DATA para cada tabla que desee copiar. Si es necesario, puede incluir varias etiquetas DATA en un estu-
dio analítico.

Sobrescritura de tablas enlazadas o compartidas


Si una tabla de salida sobrescribe una tabla compartida o enlazada, la tabla se cambia a una tabla inde-
pendiente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 842 de 898


Comandos

RESULT
Especifica los resultados de la salida del estudio analítico que usted desea poner a disposición de los usua-
rios finales en las aplicaciones cliente. Los resultados de salida, aun cuando existen, no están disponibles
de forma automática, excepto por un archivo de log si el estudio analítico no se puede completar correc-
tamente. Debe utilizar una etiqueta RESULT para cada elemento de resultado que desee que esté dis-
ponible.

Sintaxis
//RESULT tipo nombre
<descripción>

Parámetros
Nombre Descripción

tipo El tipo de elemento del resultado:


o Tabla:: una tabla de ACL y el archivo de datos asociado
o Log: un archivo de log de estudio analítico.
o Archivo: un archivo ajeno a ACL.
Los archivos de resultados se limitan a un máximo de 2 GB para los scripts de estu-
dios analíticos que se ejecutan en el Servidor de AX. Si el archivo supera este
tamaño, los resultados no se guardan.

nombre El nombre del elemento de resultado. El nombre no puede tener espacios en blanco.

Nombres de las tablas


Puede utilizar caracteres comodín en el nombre de la tabla si es posible que parte del
nombre de la tabla cambie. Por ejemplo, si el nombre de la tabla depende del mes (fac-
turas-ene, facturas-feb, etc.), al especificar facturas-* se asegura de que la tabla esté dis-
ponible en los resultados sin importar el sufijo del mes.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 843 de 898


Comandos

Nombre Descripción

Nota
El valor nombre debe ser el nombre de la tabla de ACL, no el nombre del
archivo de datos de origen. Por ejemplo:

//RESULT TABLE Cheques_faltantes

Lo siguiente es incorrecto:

//RESULT TABLE Cheques_faltantes.fil

Nombres de los logs


nombre es el nombre del archivo de log del estudio analítico. Si se omite el valor
nombre, se utiliza el valor predeterminado: nombre_del_estudio_analítico.log.

Nombres de los archivos


nombre es el nombre del archivo ajeno a ACL.
Puede utilizar caracteres comodín para la totalidad o parte del valor nombre del archivo
a fin de especificar todos los archivos con una extensión específica (*.xlsx) o para espe-
cificar archivos en los que parte del nombre de archivo puede cambiar. Por ejemplo, si el
nombre del archivo depende del mes (facturas-ene.xlsx, facturas-feb.xlsx, etc.), al espe-
cificar facturas-*.xlsx se asegura de que el archivo esté disponible en los resultados sin
importar el sufijo del mes.

descripción Texto descriptivo sobre el resultado u otra información. La descripción puede ser de
varias líneas, pero no se pueden saltear líneas.
opcional

Ejemplos
Etiqueta RESULT para una tabla de ACL:

//RESULT TABLE Cheques_faltantes

Etiqueta RESULT para todos los archivos de Excel (.xlsx):

//RESULT FILE *.xlsx

Etiqueta RESULT para el log de estudio analítico con el nombre predeterminado:

//RESULT LOG

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 844 de 898


Comandos

Observaciones
Almacenamiento y disponibilidad del archivo de resultados durante la ejecución de
un script en el Servidor de AX
Cuando use la etiqueta //RESULT FILE, el archivo que se crea está disponible para que lo descargue
desde el Cliente Web AX y AX Cliente una vez que finaliza el script. Este archivo se almacena en la base de
datos de AX y no está disponible en el sistema de archivos del Servidor de AX cuando no se está eje-
cutando el script.
Durante la ejecución del script, el archivo está temporalmente disponible en el sistema de archivos del Ser-
vidor de AX y usted puede trabajar con él por medio de procesos externos, como los que se invocan a tra-
vés del comando EXECUTE. Mientras su script se está ejecutando, los procesos externos pueden acceder
al archivo desde la subcarpeta del trabajo de estudio analítico.
Nota
Por valor predeterminado, las subcarpetas del trabajo de estudio analítico están ubicadas
dentro de ACL\Datos\trabajos. Una vez que se termina de ejecutar el script, se quita
la subcarpeta del trabajo de estudio analítico y el archivo se almacena en la base de datos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 845 de 898


Comandos

PUBLISH
Especifica un archivo que contiene metadatos que definen qué tablas de ACL se deben publicar en AX
Exception cuando se termina de procesar un estudio analítico.

Sintaxis
//PUBLISH nombre de archivo

Parámetros
Nombre Descripción

nombre de archivo El nombre del archivo que contiene los metadatos de publicación para AX Exception.

Ejemplos
La definición del estudio analítico y el archivo de texto que especifica los detalles de publicación para el estudio
analítico
Es necesaria la etiqueta FILE si el archivo que se desea publicar está almacenado en la carpeta AX, de
manera que el archivo se recupere cuando se procesa el estudio analítico.

COMMENT
//ANALYTIC Publicar resultados
//RESULT TABLE Resultados
//FILE ex_publicar.txt
//PUBLISH ex_publicar.txt
END
EXTRACT RECORD TO Resultados

El archivo ex_publicar.txt cargado en la subcarpeta Archivos relacionados de la colección con-


tiene la siguiente línea de texto. Los valores deben colocarse entre comillas y se debe utilizar la siguiente
sintaxis: "nombre tabla","nombre entidad","nombre estudio analítico"

"Resultados","Mientidad","Miestudioanalítico"

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 846 de 898


Comandos

Desarrollo de estudios analíticos


Para facilitar la depuración y aislar errores, desarrolle el cuerpo de su script antes de agregar el enca-
bezado de estudio analítico. Una vez que escriba su script, utilice el archivo de log y valores de prueba tem-
porales para probar cómo se ejecuta el estudio analítico. Por último, empaquete y distribuya el estudio
analítico.
Nota
El siguiente flujo de trabajo es un enfoque sugerido para desarrollar estudios analíticos y
usted puede desarrollar estudios analíticos de la manera que le parezca más conveniente.

Creación y prueba del script del estudio analítico


Crear el script de ACL
Cree un script en ACL Analytics sin utilizar cuadros de diálogo personalizados para introducir información
del usuario ni ninguna otra función que requiera la interacción con el usuario durante la ejecución del script.
Los estudios analíticos permiten la entrada de datos por parte del usuario antes de ejecutar un estudio ana-
lítico, pero, a diferencia de los scripts, no admiten la interacción con el usuario durante la ejecución.
Para almacenar valores de entrada en el script de ACL, cree variables de manera temporal en la parte supe-
rior del script a fin de almacenar los valores de entrada de prueba:

ASSIGN v_TablaAnálisis = "Trans_Mayo"

Pruebe y depure el script hasta que se ejecute sin errores.

Agregar el encabezado de estudio analítico y las etiquetas


Agregue un encabezado de estudio analítico al script. Copie los nombres de las variables de la parte supe-
rior del script a las etiquetas correspondientes del encabezado del estudio analítico:

//TABLE v_TablaAnálisis "Tabla que se debe clasificar"

Incluir el log en los resultados del estudio analítico


El log es una herramienta fundamental para diagnosticar la causa de los errores del estudio analítico, pero
también puede ser importante cuando los estudios analíticos se realizan con éxito pero arrojan resultados
inesperados. El log se crea automáticamente cuando un estudio analítico falla, pero si el estudio analítico se
realiza con éxito, solo se genera el log si especifica la etiqueta RESULT del estudio analítico de la siguiente
manera.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 847 de 898


Comandos

//RESULT LOG

Validar el encabezado del estudio analítico


Valide el encabezado del estudio analítico Puede validar el encabezado del estudio analítico con la fre-
cuencia que lo desee.
Si desea obtener más información, consulte "Validar encabezados de estudios analíticos" en la
página 852.

Probar el estudio analítico con valores de prueba temporales


Utilizando la sintaxis de asignación especial (:= ), asigne valores de prueba temporales a todas las eti-
quetas del estudio analítico que necesiten la entrada de datos por parte del usuario. Puede copiar los valo-
res de prueba desde las asignaciones de variables temporales en la parte superior del script:

//TABLE v_TablaAnálisis "Tabla que se debe clasificar" := "Trans_Mayo"

Si desea obtener más información acerca de la asignación de valores de prueba temporales, consulte
"Especificación de valores de entrada de las etiquetas en ACL Analytics" en la página 819.

Recorra el estudio analítico


Recorra el estudio analítico haciendo clic en Paso , o pulsando F10 de manera reiterada. Revise el con-
tenido de la etiqueta Variables en el Navegador para asegurarse de que todas las variables del enca-
bezado del estudio analítico se estén creando correctamente, con la asignación adecuada de valores de
prueba.
Nota
Si desea salir del estudio analítico antes de que finalice, pulse Esc y haga clic en Sí en el
diálogo de confirmación.
Pruebe y depure el estudio analítico hasta que se ejecute sin errores.
Consejo
Puede eliminar todas las variables y las asignaciones de variables del proyecto de ACL
introduciendo DELETE ALL OK en la línea de comandos. Borrar la etiqueta Variables
antes de recorrer un estudio analítico le permite comenzar de cero.

Eliminar los valores de prueba temporales


Elimine las variables temporales desde la parte superior del script o exclúyalas con comentarios si cree
que tal vez desee utilizarlas nuevamente.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 848 de 898


Comandos

Asegúrese de eliminar los valores de prueba temporales y la sintaxis de asignación de todas las etiquetas
del estudio analítico.

Prueba de la aplicación de análisis


Eliminar los formatos de tabla redundantes
Una vez que haya probado todos los estudios analíticos y los subscripts de la aplicación de análisis, y haya
determinado que se ejecutan correctamente, elimine los formatos de tabla del proyecto de ACL que no
incluirá en la aplicación de análisis.
Los formatos de tabla redundantes crean un cierto desorden en la aplicación de análisis en AX Cliente, el
Cliente Web AX y la ventana Aplicación de análisis y podrían resultar confusos para los usuarios finales.

Abrir la aplicación de análisis en la ventana Aplicación de análisis


Abra la aplicación de análisis finalizada en la ventana Aplicación de análisis haciendo clic con el botón
secundario del ratón en la entrada del proyecto de ACL en la ficha Panorama y seleccionando Abrir como
Aplicación de análisis .
Nota
Si no se puede abrir la aplicación de análisis y recibe un mensaje de error que indica que
los estudios analíticos tienen nombres idénticos, compruebe el valor nombre en la etiqueta
ANALYTIC de cada estudio analítico que se especifica en el mensaje de error. Los valores
de nombre del estudio analítico deben ser exclusivos en un proyecto de ACL.

Ejecutar el estudio analítico


Ejecute todos los estudios analíticos de la aplicación de análisis para confirmar que estén funcionando
correctamente.
Observe el orden correcto para ejecutar los estudios analíticos si está utilizando la opción TYPE con la eti-
queta ANALYTIC y creando estudios analíticos de importación, preparación y análisis.

Comprobar el log
Si un estudio analítico no se ejecuta correctamente, abra y revise el archivo de log (nombre_estudio_ana-
lítico.log). El log debería incluir una entrada, marcada con una X roja, que indica el motivo por el cual no se
pudo completar correctamente el estudio analítico:
l por valores de entrada que se introdujeron incorrectamente, vuelva a ejecutar inmediatamente el
estudio analítico con un valor de entrada correcto
l por errores de sintaxis y lógicos en el cuerpo del script, corrija el error en ACL Analytics y vuelva a
abrir la aplicación de análisis en la ventana Aplicación de análisis

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 849 de 898


Comandos

Un estudio analítico puede completarse con éxito, pero es posible que la tabla de resultados no contenga
los resultados que usted esperaba. Cuando ocurra esto, revise las entradas del log en secuencia y com-
pruebe los valores de entrada que se enviaron al estudio analítico para asegurarse de que el estudio ana-
lítico esté funcionando de la manera deseada.

Empaquetar y validar la aplicación de análisis


Empaquetar o importar la aplicación de análisis
Una vez que esté satisfecho con el funcionamiento de la aplicación de análisis, empaquétela para su dis-
tribución y uso en la ventana Aplicación de análisis o impórtela a AX Servidor para utilizarla en AX Cliente
o el Cliente Web AX. Si desea obtener más información, consulte "Empaquetamiento de las aplicaciones
de análisis" en la página 857.

Ejecute las aplicaciones de análisis de AX Servidor


Si está desarrollando estudios analíticos para utilizarlos en AX Servidor, ejecute todos los estudios ana-
líticos utilizando tanto AX Cliente como el Cliente Web AX para asegurarse de que funcionan como usted
lo espera.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 850 de 898


Comandos

Agregar encabezados de estudios analíticos


Un encabezado de estudio analítico es una serie de etiquetas declaratorias encerradas en un comentario
al inicio de un script. Después de desarrollar scripts en un proyecto de ACL, debe agregar un encabezado
de estudio analítico antes de poder utilizar el proyecto como una aplicación de análisis.
Nota
Antes de la versión 5 de ACL GRC Analytics Exchange y la versión 11 de ACL Analytics,
los encabezados de los estudios analíticos se denominaban "declaraciones de estudio ana-
lítico".
Si desea obtener una lista completa de etiquetas de estudios analíticos, consulte "Etiquetas y encabezados
de estudios analíticos" en la página 818.

Uso del encabezado de los estudios analíticos


Los encabezados de los estudios analíticos deben estar completamente definidos en un bloque de comen-
tario que comienza en la primera línea del script.

Declare las datos de entrada y las salidas


En el encabezado del estudio analítico, usted debe declarar los datos de entrada necesarios para el estudio
analítico y las salidas que se copian a AX Servidor o se escriben como resultados en la ventana Aplicación
de análisis:
l tablas
l campos
l parámetros
l archivos de entrada
l tablas de resultados
l archivos de log
l archivos de datos

Declare los valores de entrada


Los encabezados de estudios analíticos también deben declarar los valores de entrada que los usuarios
especificarán cuando ejecuten o programen el estudio analítico en AX Cliente o ejecuten el estudio analítico
en el Cliente Web AX o la ventana Aplicación de análisis.
Utilice la etiqueta PARAM para agregar parámetros de entrada que acepten los valores de entrada espe-
cificados por el usuario y los almacenen en variables. Por ejemplo, si desea que un estudio analítico selec-
cione datos sobre la base de un intervalo de fechas, debe agregar los parámetros Fecha de inicio y Fecha
de finalización que le permitan al usuario especificar esas fechas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 851 de 898


Comandos

Validar encabezados de estudios analíticos


Después de agregar un encabezado de estudio analítico a un script, valide la sintaxis para asegurarse de
que sea correcta. Valide los encabezados de los estudios analíticos antes de empaquetar las aplicaciones
de análisis para que los estudios analíticos no lancen un error al ser ejecutados.
1. Abra el script que contiene el encabezado del estudio analítico.
2. Haga clic en Validar el encabezado del estudio analítico .
Aparece un mensaje que indica que el encabezado del estudio analítico es válido o que especifica
un error y el número de línea donde ocurre el error.
3. Si el encabezado del estudio analítico contiene un error, corríjalo y haga clic en Validar el enca-
bezado del estudio analítico  nuevamente para asegurarse de que no haya más errores.
Si la naturaleza del error no es obvia por el mensaje de error, debe revisar el tema de ayuda de la
etiqueta del estudio analítico asociada y comparar atentamente la sintaxis del tema con la sintaxis
de la línea del encabezado del estudio analítico. Los errores se pueden deber a discrepancias míni-
mas en la sintaxis del encabezado del estudio analítico.

Ejemplo de encabezado del estudio analítico


COMMENT
ANALYTIC Identificar cheques faltantes
  Este estudio analítico identifica los números de cheque faltantes
//TABLE v_tabla_pagos Tabla de pagos
  Seleccione una tabla que enumere los pagos e incluya una columna de números de cheque
//FIELD v_núm_cheche CN Número de cheque
  Seleccione el campo que contiene los números de cheque
//PARAM v_fecha_de_inicio D OPTIONAL Fecha de inicio (opcional)
  Introduzca la fecha de inicio para el análisis
//PARAM v_fecha_de_finalización D OPTIONAL Fecha de finalización (opcional)
  Introduzca la fecha de finalización para el análisis
//PARAM v_región C MULTI SEPARATOR , QUALIFIER ' Región(es)
  Introduzca un o más regiones para incluir en el análisis
//RESULT LOG
//RESULT TABLE ChequesFaltantes
//RESULT FILE ChequesFaltantes.xls
END

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 852 de 898


Comandos

Mejores prácticas para el desarrollo de estudios ana-


líticos
Si bien los estudios analíticos admiten la mayor parte de los comandos y las funciones de un script regular
de ACL, debe asegurarse de que los estudios analíticos se ejecuten sin interacción del usuario y que no
incluyan funciones ni comandos no admitidos por el Motor de AX que los procesa.

Prácticas recomendadas generales para el desarrollo de estu-


dios analíticos
Utilizar un proyecto de ACL por aplicación de análisis
Cree un nuevo proyecto de ACL en ACL Analytics para cada aplicación de análisis. El proyecto debe con-
tener todos los estudios analíticos que conforman la aplicación de análisis, así como todos los subscripts o
archivos de datos necesarios para cualquiera de los estudios analíticos.

Probar de manera local


Pruebe todos los estudios analíticos de manera local antes de importarlos a AX Servidor o de distribuirlos
para su uso en la ventana Aplicación de análisis a fin de asegurarse de que se ejecuten sin intervención
alguna del usuario.

Utilizar conexiones de datos coherentes para las pruebas


Para probar un estudio analítico localmente si utiliza un origen de datos ODBC, debe configurar una cone-
xión ODBC en su computadora local que sea idéntica a la conexión del Servidor de AX o el Nodo del motor
de AX donde se ejecutará el estudio analítico.
Para los estudios analíticos distribuidos para ser utilizados en la ventana Aplicación de análisis, los usuarios
finales deben configurar una conexión ODBC idéntica en sus computadoras.

Evitar rutas de archivos absolutas


Evite utilizar rutas de archivo absolutas en los estudios analíticos (por ejemplo: C:\resultados) a menos
que esté seguro de que todos los usuarios del estudio analítico utilizarán rutas de archivo idénticas.
El uso de rutas de archivo relativas (por ejemplo: \resultados) le permite desarrollar y probar estudios
analíticos de manera local y después importarlos a AX Servidor o distribuirlos para utilizarlos en la ventana
Aplicación de análisis sin necesidad de que todos los usuarios tengan estructuras de directorios idénticas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 853 de 898


Comandos

Utilice SET para los ajustes de las preferencias


Utilice el comando SET para especificar cualquier configuración de preferencias necesarias para el estu-
dio analítico. Si no especifica preferencias en el estudio analítico, se utilizarán las preferencias pre-
determinadas de ACL. Coloque el comando SET después del encabezado del estudio analítico, pero
antes de cualquier lógica del estudio analítico.

No utilice campos calculados en tablas de datos o resultados


No utilice campos calculados en tablas que tenga pensado conservar después de la sesión en la cual se
ejecuta el script de estudio analítico.
Las tablas de datos o resultados que se conservan para ser utilizadas en interpretaciones o como valores
de entrada para scripts posteriores pueden mostrar valores inesperados si contienen campos calculados.
Los valores calculados dependen de la configuración que se define en el archivo de preferencias (.prf)
o con el comando SET en la sesión que los crea y, por lo tanto, los entornos diferentes pueden generar
valores diferentes.
Si necesita conservar los valores de un campo calculado, puede usar el comando EXTRACT con la
opción FIELDS o la opción ALL para convertir el campo en un campo físico en la tabla de datos o resul-
tados. Si desea obtener más información, consulte "Comando EXTRACT" en la página 193.

Encriptar las contraseñas de conexión de datos


Para evitar tener una contraseña de origen de datos en texto sin formato en un estudio analítico, utilice la
etiqueta PASSWORD. Esta etiqueta le pide una contraseña al usuario y encripta el valor que se intro-
duce.

Evitar la intervención del usuario


Los estudios analíticos deben poder ejecutarse sin intervención del usuario. Si un comando intenta crear
un cuadro de diálogo, se introduce un mensaje de error en el log y el Motor de AX deja de procesar el estu-
dio analítico.

Reemplace los comandos que requieran la intervención del usuario por etiquetas
de estudio analítico
Quite todos los comandos que requieran la intervención del usuario y reemplácelos por etiquetas de estu-
dio analíticos equivalentes en el encabezado del estudio analítico, que permitan que los usuarios pro-
porcionen los valores de entrada antes de que se ejecute el estudio analítico:
l PAUSE
l ACCEPT

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 854 de 898


Comandos

l DIALOG
l PASSWORD

Pautas
l para evitar errores de procesamiento del estudio analítico, quite todos los comandos interactivos
l para asegurarse de que sea posible sobrescribir los archivos, según sea necesario, sin mostrar un
cuadro de diálogo de confirmación, agregue el comando SET SAFETY OFF al principio de un estu-
dio analítico y después agregue el comando SET SAFETY ON al final del estudio analítico para recu-
perar el comportamiento predeterminado
l para evitar que los diálogos de confirmación detengan el estudio analítico, agregue el parámetro OK
después de los comandos que normalmente muestran un cuadro de diálogo de confirmación:
l RENAME

l DELETE

Prácticas recomendadas para estudios analíticos que se eje-


cutan en AX Servidor
Desarrollar en ACL Analytics
Desarrolle estudios analíticos y sus scripts de soporte principalmente en ACL Analytics antes de importarlos
a AX Servidor.
Para su comodidad, el editor de scripts de AX Cliente le permite agregar nuevos estudios analíticos o subs-
cripts, o editar estudios analíticos o subscripts existentes. Esta función resulta útil para realizar pequeños
ajustes en el comportamiento de un estudio analítico sin necesidad de exportarlo a ACL Analytics y des-
pués volver a importarlo a AX Servidor. Sin embargo, para desarrollar estudios analíticos y no simplemente
realizar ajustes mínimos, es más fácil utilizar ACL Analytics.

Almacenar los archivos relacionados con el proyecto de ACL


Los archivos relacionados, tales como los archivos de perfiles de bases de datos, se deben almacenar en la
misma carpeta que el proyecto de ACL, pero se deben importar a AX Servidor por separado.

Evitar funciones y comandos no admitidos por AX Servidor


l tablas de servidor de base de datos directas enlazadas a ACL Edición de servidor para z/OS
l el comando NOTIFY sólo admite mensajes de SMTP No se admiten los protocolos de correo MAPI y
VIM
l para utilizar los comandos PRINT o TO PRINT, debe haber una impresora predeterminada con-
figurada en el servidor
l no se admiten los comandos SAVE GRAPH y PRINT GRAPH
l no utilice el comando SET LEARN en estudios analíticos

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 855 de 898


Comandos

Minimizar las transacciones de tablas de AX Servidor


Optimice el desempeño de los estudios analíticos minimizando la cantidad de veces que se accede a
tablas en el Servidor de AX:
1. Utilice el comando FILTER para seleccionar los registros que necesite.
2. Utilice el comando EXTRACT para extraer únicamente los campos necesarios.
El conjunto de datos reducidos se procesará de forma local en el servidor en el cual el Motor de AX está
ejecutando el estudio analítico.
Es importante optimizar los estudios analíticos de esta manera cuando los archivos de datos no están ubi-
cados en el mismo servidor que el Servidor de AX o el Nodo del Motor de AX que procesa el estudio ana-
lítico y la opción Copiar datos del estudio analítico no está seleccionada en la aplicación web de
Configuración del Servidor de AX.

Ejemplo de un estudio analítico ineficiente

OPEN Tabla_grande
SET FILTER TO fecha_trans >= `20091201` AND fecha_trans < `20100101`
COUNT
TOTAL importe
CLASSIFY ON cuenta ACCUMULATE importe TO CuentaClasTrans

Ejemplo de un estudio analítico eficiente

OPEN Tabla_grande
SET FILTER TO fecha_trans >= `20091201` AND fecha_trans < `20100101`
EXTRACT FIELDS trans_date desc cuenta tipo importe TO TablaAnálisis
OPEN TablaAnálisis
COUNT
TOTAL importe
CLASSIFY ON cuenta ACCUMULATE importe TO CuentaClasTrans

Acceder a los datos SAP en el modo de segundo plano


Utilice el modo de segundo plano para acceder a los datos de sistemas SAP ERP utilizando Direct Link.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 856 de 898


Comandos

Empaquetamiento de las aplicaciones de análisis


Para ejecutar scripts de estudios analíticos en la ventana Aplicación de análisis o en el Servidor de AX, cree
una aplicación de análisis empaquetada (archivo .aclapp). Puede empaquetar un proyecto de ACL en un
nuevo archivo .aclapp o fusionar un proyecto de ACL con una aplicación de análisis existente (archivo
.aclx) para incluir interpretaciones existentes.
Nota
Si al menos un script de un proyecto de ACL tiene un encabezado de estudio analítico, el
proyecto se puede empaquetar como una aplicación de análisis. Antes de empaquetar una
aplicación de análisis, asegúrese de validar los encabezados de estudio analítico de cada
estudio analítico de la aplicación de análisis.

¿Por qué utilizar una aplicación de análisis empaquetada?


Distribución a los usuarios de la ventana Aplicación de análisis
Utilice aplicaciones de análisis empaquetadas para distribuir un proyecto a los usuarios que pueden extraer
el archivo .aclx y abrir el contenido en la ventana Aplicación de análisis.
En la ventana Aplicación de análisis, puede ejecutar los scripts de estudio analítico y crear interpretaciones
sobre la base de las tablas y los resultados de los estudios analíticos.

Importación al Servidor de AX
Utilice aplicaciones de análisis empaquetadas para preparar un proyecto de ACL a fin de importarlo al Ser-
vidor de AX. Puede escoger qué tablas y archivos de datos importar junto con los scripts de estudio ana-
lítico al proyecto.
También puede usar na aplicación de análisis empaquetada (.aclapp) para importar interpretaciones
existentes. Para incluir interpretaciones de una aplicación de análisis existente (.aclx), debe volver a
empaquetar su proyecto de ACL y fusionar esta aplicación de análisis empaquetada (.aclapp) con el
archivo .aclx existente en la carpeta de su proyecto.
Nota
Cuando use una aplicación de análisis existente (archivo .aclx), el contenido del pro-
yecto de ACL tiene prioridad; por lo tanto, si hay scripts o tablas en el .aclx que ya no exis-
ten en el archivo .acl, no se las incluye en la aplicación de análisis empaquetada
resultante (archivo .aclapp).

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 857 de 898


Comandos

Limitación del tamaño del archivo


Para utilizar correctamente una aplicación de análisis empaquetada, debe asegurarse de que la suma de
todos los tamaños de archivo incluidos en el paquete no supere los 800 MB antes de empaquetar la apli-
cación de análisis. Si los archivos preempaquetados exceden este tamaño combinado, los archivos de
datos pueden dañarse al desempaquetar la aplicación de análisis.

Empaquetar una nueva aplicación de análisis


1. En ACL Analytics, haga clic con el botón derecho del ratón en la entrada del proyecto en la ficha
Panorama del Navegador y seleccione Empaquetar Aplicación de análisis .
El proyecto de ACL es la carpeta de nivel superior en la vista de árbol.
2. En el cuadro de diálogo Seleccionar tablas , haga lo siguiente:
a. Si desea incluir una o más tablas del proyecto y los archivos de datos asociados en la aplicación
de análisis, seleccione la o las tablas y los archivos de datos que desee incluir.
Nota
En general, debe incluir únicamente las tablas estáticas y los archivos de datos
que uno o más estudios analíticos de la aplicación de análisis necesitan, como
una tabla de proveedores maestra o una lista de códigos de categoría de comer-
ciante.
b. Haga clic en En y vaya a la ubicación en la que desea guardar la aplicación de análisis empa-
quetada.
c. En el cuadro de diálogo Guardar como, escriba un Nombre de archivo con la extensión
.aclapp y haga clic en Guardar.
d. Haga clic en Aceptar.
Resultado: la aplicación de análisis se guarda en la ubicación que usted especificó. Otros usuarios pue-
den recuperar la aplicación de análisis desde esta ubicación o usted puede distribuirla por correo elec-
trónico o por otro método adecuado. También puede importar este archivo al Servidor de AX.

Empaquete una aplicación de análisis con interpretaciones


1. Asegúrese de que la aplicación de análisis (archivo .aclx) que contiene las interpretaciones que
desea importar exista en la carpeta del proyecto de ACL de su computadora y que utilice el mismo
nombre de archivo que el proyecto de ACL (archivo .acl).

2. En ACL Analytics, haga clic con el botón derecho del ratón en la entrada del proyecto en la ficha
Panorama del Navegador y seleccione Empaquetar Aplicación de análisis .
El proyecto de ACL es la carpeta de nivel superior en la vista de árbol.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 858 de 898


Comandos

3. En el cuadro de diálogo Seleccionar tablas , haga lo siguiente:


a. Si desea incluir una o más tablas del proyecto y los archivos de datos asociados en la aplicación de
análisis, seleccione la o las tablas y los archivos de datos que desee incluir.
Nota
En general, debe incluir únicamente las tablas estáticas y los archivos de datos que
uno o más estudios analíticos de la aplicación de análisis necesitan, como una tabla
de proveedores maestra o una lista de códigos de categoría de comerciante.
b. Opcional. Para incluir las interpretaciones de una aplicación de análisis existente, seleccione
Incluir interpretaciones .
No se incluyen las interpretaciones que están asociadas con tablas o scripts que no existen en el
nuevo paquete.
c. Haga clic en En y vaya a la ubicación en la que desea guardar la aplicación de análisis empa-
quetada.
d. En el cuadro de diálogo Guardar como, escriba un Nombre de archivo con la extensión
.aclapp y haga clic en Guardar.
e. Haga clic en Aceptar.
Resultado: la aplicación de análisis se guarda en la ubicación que usted especificó. Otros usuarios pueden
recuperar la aplicación de análisis desde esta ubicación o usted puede distribuirla por correo electrónico o
por otro método adecuado. También puede importar este archivo al Servidor de AX.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 859 de 898


Comandos

Aplicación de análisis de ejemplo


La aplicación de análisis de ejemplo contiene un estudio analítico de importación, un estudio analítico de
preparación y un estudio analítico de análisis.

Tareas del estudio analítico


El estudio analítico de ejemplo realiza las siguientes tareas

Estudio analítico de importación de ejemplo


Importa datos desde un archivo Excel de ejemplo "Trans_Mayo.xls" y los guarda en la nueva tabla de ACL
"Trans_Mayo_sin_preparar" (la tabla de datos sin procesar).
Se ofrecen dos versiones de este estudio analítico. Una para ser utilizada en el Cliente Web AX o la ven-
tana Aplicación de análisis y otra para ser utilizada con AX Cliente. Si está utilizando la versión para AX
Cliente, "Trans_Mayo.xls" debe estar en la subcarpeta Archivos relacionados de la carpeta de AX en la
cual se encuentra el estudio analítico.

Estudio analítico de preparación de ejemplo


Prepara la tabla de datos sin procesar para el análisis y la guarda en la nueva tabla de ACL "Trans_
Mayo_preparada" (la tabla de análisis). El estudio analítico define una versión más corta del campo “Des-
cripción” porque la clasificación únicamente admite longitudes de campo de hasta 64 caracteres.

Estudio analítico de análisis de ejemplo


Clasifica la tabla de análisis y envía los resultados a la nueva tabla de ACL "Trans_Mayo_preparada_cla-
sificada" (la tabla de resultados). Los usuarios pueden especificar qué campo utilizar para clasificar la
tabla y pueden especificar los códigos de categoría de comerciante, los números de cliente y los intervalos
de fecha y de importe de las transacciones para restringir los registros que se procesan.
Nota
Si copia cualquier parte de la sintaxis que se incluye a continuación en el Editor de scripts
de ACL, asegúrese de quitar todos los saltos de línea que no deben estar presentes en
un script de ACL; por ejemplo, los saltos de línea del comando IMPORT EXCEL y en la
larga lista de VALUES. Los saltos de línea inadecuados impedirán la ejecución correcta
del script de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 860 de 898


Comandos

Estudio analítico de importación de ejemplo para ser usado en


el Cliente Web AX o la ventana Aplicación de análisis
COMMENT
//ANALYTIC TYPE IMPORT Estudio analítico de importación de ejemplo
Este estudio analítico importa datos del archivo Excel de ejemplo Trans_Mayo.xls y los guarda en la
nueva tabla de ACL "Trans_Mayo_sin_procesar" (la tabla de datos sin procesar).
//PARAM v_archivo_entrada F Archivo de entrada
Seleccione un archivo de entrada
//DATA Trans_Mayo_sin_preparar
//RESULT LOG
END

SET SAFETY OFF


IMPORT EXCEL TO Trans_Mayo_sin_procesar Trans_Mayo_sin_procesar.fil FROM "%v_archivo_
entrada%" TABLE "Trans2_Mayo$" KEEPTITLE FIELD "CARDNUM" C WID 22 AS "" FIELD
"CODES" C WID 4 AS "" FIELD "DATE" D WID 10 PIC "YYYY-MM-DD" AS "" FIELD "CUSTNO" C
WID 6 AS "" FIELD "DESCRIPTION" C WID 95 AS "" FIELD "AMOUNT" N WID 9 DEC 2 AS
SET SAFETY ON

Estudio analítico de importación de ejemplo para ser utilizado


en AX Cliente
COMMENT
//ANALYTIC TYPE IMPORT Estudio analítico de importación de ejemplo AX
Este estudio analítico importa datos del archivo Excel de ejemplo Trans_Mayo.xls y los guarda en la
nueva tabla de ACL “Trans_Mayo_sin_procesar” (la tabla de datos sin procesar).
//FILE Trans_Mayo.xls
//DATA Trans_Mayo_sin_preparar
//RESULT LOG
END

SET SAFETY OFF


IMPORT EXCEL TO Trans_Mayo_sin_procesar Trans_Mayo_sin_procesar.fil FROM "Trans_Mayo-
.xls" TABLE "Trans2_Mayo$" KEEPTITLE FIELD "CARDNUM" C WID 22 AS "" FIELD "CODES" C
WID 4 AS "" FIELD "DATE" D WID 10 PIC "YYYY-MM-DD" AS "" FIELD "CUSTNO" C WID 6 AS ""
FIELD "DESCRIPTION" C WID 95 AS "" FIELD "AMOUNT" N WID 9 DEC 2 AS ""
SET SAFETY ON

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 861 de 898


Comandos

Estudio analítico de preparación de ejemplo


COMMENT
//ANALYTIC TYPE PREPARE Estudio analítico de preparación de ejemplo
Este estudio analítico prepara la tabla de datos sin procesar para el análisis y la guarda en la nueva
tabla de ACL "Trans_Mayo_preparada" (la tabla de análisis). El estudio analítico define una versión
más corta del campo “Descripción” porque la clasificación únicamente admite longitudes de campo de
hasta 64 caracteres.
//TABLE v_TablaSinprocesar Tabla que se debe preparar
Seleccione la tabla de datos sin procesar que desea preparar
//RESULT TABLE Trans_*_preparada
//DATA Trans_*_preparada
//RESULT LOG
END

SET SAFETY OFF


OPEN %v_Tabla_sin_preparar%
DEFINE FIELD DESC_SHORT ASCII 43 64
EXTRACT RECORD TO "Trans_Mayo_preparada"
SET SAFETY ON

Estudio analítico de análisis de ejemplo


COMMENT
//ANALYTIC TYPE ANALYSIS Estudio analítico de análisis de ejemplo
Este estudio analítico clasifica la tabla de análisis y envía los resultados a la nueva tabla de ACL
"Trans_Mayo_preparada_clasificada" (la tabla de resultados). Puede especificar códigos de categoría
de comerciante, números de cliente e intervalos de fecha y de importe de las transacciones para res-
tringir los registros que se procesan.
//TABLE v_TablaAnálisis Tabla para clasificar
Seleccione la tabla de análisis que desea clasificar
//FIELD v_CampoA C Campo por el que se debe clasificar
Seleccione el campo por el que desea clasificar
//PARAM v_códigos C MULTI SEPARATOR , QUALIFIER ' VALUES |4112 Ferrocarriles
de pasajeros|4121 Taxis/Limusinas|4131 Autobús|4215 Servicios de courier - Aéreo o Terres-
tre|4411 Líneas de cruceros|4457 Alquiler de embarcaciones|4722 Agencias de viajes y operadores
de turismo|4814 Llamadas locales/larga distancia|5812 Restaurantes|5813 Bares (Bebidas alcohó-
licas)|5814 Restaurantes de comida rápida|5921 Cerveza, vino, licor|5993 Cigarrerías|5994 Puestos
de diarios|7216 Tintorerías| MC Código(s) de comerciante para incluir
Especifique uno o más códigos de categoría de comerciante para incluir

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 862 de 898


Comandos

//PARAM v_núm_cliente C OPTIONAL MULTI SEPARATOR , QUALIFIER ' Números de cliente para
excluir (opcional)
Especifique uno o más números de cliente para excluir. Pulse "Intro" después de cada número, para
que cada número quede en una línea separada. No encierre los números entre comillas.
//PARAM v_fecha_de_inicio D VALUES

|05/01/2003|05/02/2003|05/03/2003|05/04/2003|05/05/2003|05/06/2003|05/07/2003|05/08/2003|05/0-
9/2003|05/10/2003|05/11/2003|05/12/2003|05/13/2003|05/14/2003|05/15/2003|05/16/2003|05/17/200-
3|05/18/2003|05/19/2003|05/20/2003|05/21/2003|05/22/2003|05/23/2003|05/24/2003|05/25/2003|05/-
26/2003|05/27/2003|05/28/2003|05/29/2003|05/30/2003|05/31/2003|Fecha de inicio
Seleccione una fecha de inicio
//PARAM v_fecha_de_finalización
Escriba una fecha de finalización o escoja una del calendario
//PARAM v_importe_mín N Importe mínimo
Introduzca un importe mínimo
//PARAM v_importe_máx N Importe máximo
Introduzca un importe máximo
//RESULT TABLE *_clasificada
//RESULT LOG
END

SET SAFETY OFF


OPEN %v_TablaAnálisis%
IF NOT ISDEFINED("v_núm_cliente") v_núm_cliente = ""
GROUP IF v_núm_cliente = ""
CLASSIFY ON %v_CampoA% IF MATCH(CODES; %v_códigos%) AND BETWEEN(DATE; v_
fecha_de_inicio; v_fecha_de_finalización) AND BETWEEN(AMOUNT; v_importe_mín; v_importe_
máx)
SUBTOTAL AMOUNT TO "%v_TablaAnálisis%_clasificada.FIL" OPEN
ELSE
CLASSIFY ON %v_CampoA% IF MATCH(CODES; %v_códigos%) AND NOT MATCH(CUSTNO;
%v_núm_cliente%) AND BETWEEN(DATE; v_fecha_de_inicio; v_fecha_de_finalización) AND
BETWEEN(AMOUNT; v_importe_mín; v_importe_máx) SUBTOTAL AMOUNT TO "%v_TablaA-
nálisis%_clasificada.FIL" OPEN
END
SET SAFETY ON

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 863 de 898


Apéndice

Apéndice

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 865 de 898


Apéndice

Requisitos del sistema


Antes de instalar ACL Analytics, asegúrese de que su computadora cumpla los requisitos mínimos de har-
dware y software.

Requisitos de software
Nota
Algunos requisitos previos de software se instalan automáticamente si aún no están pre-
sentes en su computadora. Para ver una lista completa de los requisitos previos que se
instalan automáticamente, consulte la documentación en línea.

Requisito Información adicional

Uno de los siguientes sistemas ACL para Windows es una aplicación de 32 bits que puede ejecutarse en las ver-
operativos: siones de 64 bits de Windows.
o Microsoft Windows 10 (64 Nota
bits)
Para instalar ACL para Windows en Windows 7, debe tener ins-
o Microsoft Windows 8.1 (64
talado el Service Pack 1. ACL para Windows requiere Microsoft
bits)
o Microsoft Windows 7 Service .Net 4.6, que no se puede instalar en las versiones de Windows 7
Pack 1 (SP 1) (32 o 64 bits) anteriores al SP1.
Windows XP ya no es un sistema operativo admitido.

Para usuarios de Microsoft Win- Importante


dows 8.1:
Microsoft .NET Framework 4.6.x, que es necesario para ACL para
Actualización de Windows 8.1 Windows 13.x, requiere la actualización Windows 8.1 KB2919355.
KB2919355
Si está usando Windows 8.1, no tiene instalado .NET 4.6.x y no eje-
cutó la actualización KB2919355, el instalador de ACL para Win-
dows se detiene con un mensaje de error durante el prerrequisito
de instalación de .NET 4.6.2.
Debe descargar e instalar la Actualización KB2919355 antes de
poder continuar con la instalación de ACL para Windows.
También puede instalar la Actualización KB2919355 antes de
comenzar la instalación de ACL para Windows y evitar el mensaje
de error.
¡Precaución!
Si se le pide que reinicie su computadora en algún momento del
proceso de instalación, hágalo. No ignore los mensajes de reinicio
de la computadora.
Si no reinicia la computadora cuando se le pide que lo haga,
puede causar problemas con la instalación de .NET, otros pre-
rrequisitos o de ACL para Windows.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 866 de 898


Apéndice

Requisito Información adicional

Para usar las funciones de ACL La arquitectura de bits de la versión instalada de R debe coincidir con la arqui-
que integran el lenguaje de pro- tectura de bits del sistema operativo.
gramación R, debe instalar y
Si utiliza uno de los paquetes de CRAN R, probablemente deba agregar la ruta a
configurar R (32 bits/64 bits).
la carpeta binaria de R a la variable de entorno PATH de su computadora.
Las siguientes versiones de R
Por ejemplo:
se han probado con ACL Ana-
lytics, aunque las versiones ante- o C:\Archivos de programa\R\R-<versión>\bin\i386 (32 bits)
riores de R probablemente o C:\Archivos de programa\R\R-<versión>\bin\x64 (64 bits)
también funcionen: Nota
o 3.3.2 No es necesario que instale R si no tiene planeado usar las fun-
o 3.3.1 ciones de ACL integradas con este lenguaje.
o 3.2.5
o 3.2.3
Puede usar CRAN R (32 bits/64
bits) o Microsoft R (solo 64 bits).

Para usar las funciones de ACL La versión 3.5.x de Python ha sido totalmente probada y es compatible. Puede
que integran el lenguaje de pro- usar una versión diferente, como 3.3.x o 3.6.x; sin embargo, estas versiones no
gramación Python, debe instalar ofrecen las mismas garantías de pruebas y soporte con ACL que la versión 3.5.x.
y configurar:
Al instalar Python, debe configurarlo para que se pueda ejecutar en su sistema.
o Python versión 3.3.x o pos- Si desea obtener más información, consulte "Configuración de Python para uso
terior (32 bits) con ACL" en la página 871.
o La variable de entorno
Nota
PYTHONPATH
o La variable de entorno No es necesario que instale Python si no tiene planeado usar las
ACLPYTHONDLL funciones de ACL integradas con este lenguaje.

Para utilizar el Conector de o No es necesario que instale Oracle Instant Client si no tiene planeado utilizar
ACL para Oracle, debe instalar: el Conector de ACL para Oracle.
o La arquitectura de bits de Oracle Instant Client debe coincidir con la arqui-
o Oracle Instant Client 11g o
tectura de bits de su sistema operativo. Si instala Instant Client de 32 bits en
12c
un equipo de 64 bits, la conexión no podrá realizarse con éxito.
o Si está utilizando el conector con ACL GRC Analytics Exchange e instala Ora-
cle Instant Client después de Servidor de AX, debe reiniciar el servicio de Ana-
lytics Exchange antes de poder utilizar el conector.

Requisitos de hardware
Nota
Para un mejor desempeño de ACL Analytics en un entorno de producción es posible que
necesite más recursos que la especificación mínima.

Componente Mínimo Recomendación

Procesador 1.8 GHz

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 867 de 898


Apéndice

Componente Mínimo Recomendación

2 GB o Sistemas operativos de 64 bits: 8 o más, especialmente si se van a


ordenar archivos grandes
Memoria o Sistemas operativos de 32 bits: 4 GB, especialmente si se van a
(RAM) ordenar archivos grandes

Espacio en disco duro 1.1 GB


(archivos de la aplicación ACL)

Espacio en disco duro 8 GB


(prerrequisitos del software)

100 GB o más


Además del espacio en disco duro que se necesita para instalar los
archivos de la aplicación ACL y los prerrequisitos, se necesita más
Espacio en disco duro
espacio si se utilizará una computadora para almacenar extracciones
(almacenamiento de datos) de datos, archivos planos y resultados.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 868 de 898


Apéndice

Instalación de ACL para Windows


Siga las instrucciones de instalación de ACL para Windows para instalar o actualizar su copia de ACL Ana-
lytics. Una vez finalizada la instalación, debe activar su licencia.
Nota
Al instalar o actualizar ACL Analytics, los archivos de datos de muestra de ACL se sobres-
criben si se encuentran en el directorio de trabajo de ACL que especificó durante la ins-
talación o la actualización.
Si realizó algún cambio en alguno de los archivos de datos o proyectos de muestra y desea
conservarlo, guarde el archivo en otro lugar antes de la instalación o la actualización, o cam-
bie el nombre de la carpeta en la cual se encuentran los archivos. Haga lo mismo con los
archivos de log de comandos si desea conservarlos.

Obtenga el instalador
Obtenga su instalador del contacto principal de su organización con ACL. Si usted es el contacto principal:
l Acceso a Internet: obtenga el instalador de la página de descargas de Launchpad (http://www.a-
clgrc.com/)
l Sin acceso a Internet: pídale a su representante de ACL que lo ayude a obtener el instalador desde
Launchpad

Extraiga el instalador
1. Haga doble clic en el paquete de instalación de ACL para Windows (ACLforWindows1303.exe).
2. Si aparece un cuadro de diálogo de advertencia, revise la información que se incluye allí y haga clic
en Sí .
3. Seleccione el idioma que desea utilizar para su instalación y haga clic en Aceptar.
4. En la página Configurar la ubicación de extracción, haga clic en Extraer.
Una vez que se hayan extraído los archivos, el instalador se iniciará automáticamente.

Instale todos los requisitos previos


Si se le pide que instale los prerrequisitos, haga clic en Instalar.
Una vez que se hayan instalado los prerrequisitos, el instalador de los continuará automáticamente.

Instalar ACL para Windows


Siga las instrucciones que figuran en la pantalla para realizar la instalación de ACL para Windows.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 869 de 898


Apéndice

En la página Selección de la edición de ACL, seleccione la edición que desea instalar:


l No Unicode
l Unicode
Si desea obtener más información acerca de las ediciones Unicode y no Unicode, consulte "Comparación
entre las ediciones Unicode y no Unicode" en la página 873.

Active su licencia
Si tiene acceso a Internet, puede activarla la primera vez que inicie ACL para Windows e inicie sesión en
su organización. Para activar su licencia sin conexión, comuníquese con el Soporte de ACL.

Iniciar ACL Analytics


Para iniciar ACL Analytics, realice uno de los siguientes:

Para crear un nuevo proyecto de ACL vacío En Crear, haga clic en Proyecto de estudio analítico

Para abrir un proyecto de ACL existente En Abrir, haga clic en Proyecto de estudio analítico

Para abrir un proyecto de ACL (.acl) de muestra o En Archivos de estudios analíticos recientes, o Archivos
reciente de muestra, haga clic en el nombre de un archivo

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 870 de 898


Apéndice

Configuración de Python para uso con ACL


Para configurar a Python para que funcione con ACL, usted debe instalar la versión correcta de Python y
agregar el ejecutable a la variable de entornoPATH de su sistema. También debe ajustar las variables de
entorno del sistema ACLPYTHONDLL y PYTHONPATH.

Cómo funciona
Para ejecutar los scripts de Python, ACL Analytics debe ser capaz de invocar el ejecutable de Python y de
encontrar los scripts que deban ejecutarse. ACL usa la variable de entorno PATH para localizar Python y la
variable de entorno PYTHONPATH para localizar los scripts.

Instale la versión 3.3.x o posterior de Python (32 bits)


1. Desde la página de descargas de Python, descargue la última versión de Python 3.5 a su equipo.
2. En su equipo, haga doble clic en el instalador.
3. En el instalador, seleccione Agregar Python númeroDeVersión a RUTA.
4. Haga clic en Instalar y siga todas las instrucciones que aparezcan en pantalla.
5. Reinicie el equipo antes de ejecutar cualquiera de los scripts de Python desde ACL.

Ajuste las variables de entorno ACLPYTHONDLL y PYTHONPATH


1. Si su sistema operativo es Windows, cree una o más carpetas para guardar sus scripts de Python.
Por ejemplo:C:\python_scripts.
2. Desde su sistema operativo de Windows, abra el cuadro de diálogo Propiedades del sistema y
haga clic en Variables de entorno.
3. En la sección Variables del sistema, haga clic en Nuevo e ingrese las siguientes variables:
Nombre de la variable Valor de la variable Ejemplo

PYTHONPATH La ruta completa a las carpetas C:\python_scripts;C:\dev;C:\tmp


que creó para alojar los scripts de
Python. Separe las rutas de varias
carpetas con punto y coma.

ACLPYTHONDLL La ruta de acceso completa y el c:\python_install\python33.dll


nombre de archivo del archivo DLL
de Python en la carpeta de ins-
talación de Python que desea uti-
lizar con ACL.
Si está utilizando Python 3.3.x, se
aplican las siguientes restricciones:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 871 de 898


Apéndice

Nombre de la variable Valor de la variable Ejemplo

o Los caracteres Unicode no son


compatibles en la ruta para las
plataformas europeas.
o Los caracteres extendidos no
son compatibles en la ruta para
las plataformas asiáticas.
Nota
Python agrega la DLL a
la carpeta del sistema (
c:\win-
dows\s-
yste-
m32\python33.dll) en
lugar de a la carpeta de
instalación. Debe copiar
la DLL de la carpeta del
sistema a la carpeta de
instalación y usarla
como valor de la varia-
ble para que ACL
pueda acceder a la
DLL.
También es posible que
necesite quitar toda con-
figuración de solo lec-
tura de la carpeta de
instalación.
Si no configura este valor, ACL
intenta usar la versión admitida pre-
determinada 3.5.x DLL pytho-
n35.dll.

4. Para guardar la variable, haga clic en Aceptar y luego, en el cuadro de diálogo Propiedades del
sistema, haga clic en Aceptar nuevamente.

Use Python en las funciones de ACL Python


Desde ACL Analytics, use las funciones de ACL Python para invocar las funciones en los scripts incluidos
en PYTHONPATH.
Nota
Si hace alguna modificación a un script de Python, debe actualizar la vista de su proyecto
de ACL para usar la última versión del script de Python. La manera más sencilla de actua-
lizar la vista consiste en cerrar la tabla con la que está trabajando y, a continuación, volver
a abrirla.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 872 de 898


Apéndice

Comparación entre las ediciones Unicode y no Uni-


code
Las ediciones Unicode de los productos de ACL le permiten ver y trabajar con archivos que contienen datos
Unicode. Unicode es un estándar industrial de codificación de caracteres que acepta la mayoría de los idio-
mas del mundo.

¿Debo instalar la edición no Unicode o la edición Unicode de ACL?


Debe instalar la edición no Unicode, a menos que necesite ver o analizar datos Unicode. Los datos Unicode
solo pueden abrirse en la edición Unicode de ACL.
Si trabaja en entornos con sistemas de información global o analiza datos que contienen varios idiomas es
probable que encuentre datos Unicode.

Cuándo se necesita la edición Unicode


Es necesario que instale la edición Unicode para ver y analizar datos con:
l Caracteres asiáticos
l una combinación de codificaciones de caracteres no Unicode o tradicional
Por ejemplo, alguna combinación de idiomas de al menos dos de las siguientes codificaciones de
caracteres:
l Latín 1 (Inglés y Europa occidental)
l Latín 2 (Europa central)
l Cirílico
l Griego
l Árabe
Nota
Si desea usar la interfaz de usuario de ACL en chino, japonés o polaco, la única opción es
instalar la edición Unicode. Este requisito está relacionado con el idioma de la interfaz de
usuario, no con el idioma de los datos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 873 de 898


Apéndice

Convertir estudios analíticos a Unicode


Si está migrando de una edición no Unicode a la edición Unicode de ACL Analytics, los estudios analíticos
y los scripts existentes se convierten automáticamente a Unicode. Sin embargo, debe verificar que la
lógica de los scripts continúe siendo la misma al aplicarlos en datos Unicode de dos bytes.

¿Qué es Unicode?
Unicode es un estándar de codificación de texto que utiliza dos o más bytes para representar cada carác-
ter y los caracteres de todos los idiomas están incluidos en un único conjunto de caracteres. Las ediciones
Unicode de los productos ACL le permiten ver y trabajar con archivos y bases de datos que contienen
datos codificados en Unicode en todos los idiomas modernos.
Nota
ACL Analytics y el motor de AX admiten datos Unicode con la codificación little-endian
(LE). Estos productos no se pueden utilizar para analizar datos con la codificación big-
endian (BE).

Migración a ACL GRC Analytics Exchange Unicode


l Actualmente, no se admite el cifrado de los scripts Unicode
l Los archivos de log y los archivos de proyecto de ACL se codifican como datos Unicode (UTF-16
LE) y no es posible utilizarlos con la edición no Unicode de ACL
l al utilizar ACL para definir archivos delimitados y de imagen de impresión que contienen texto con
codificación EBCDIC o ASCII, por valor predeterminado se asigna el tipo de datos Unicode a los
campos de la tabla de ACL que contienen estos datos.

Cambios obligatorios en los estudios analíticos


Actualice los parámetros que especifiquen un valor en bytes
Los caracteres de la edición no Unicode de ACL tienen una longitud de un byte. Los caracteres de la edi-
ción Unicode, si son datos Unicode, tienen una longitud de dos bytes. Al especificar la longitud del campo
o la posición inicial en bytes de la edición no Unicode de ACL, la cantidad de bytes equivale a la cantidad
de caracteres. Esto no ocurre con los datos Unicode de la edición Unicode de ACL.
Para convertir los estudios analíticos para que sean utilizados en ACL Unicode, debe ajustar el valor
numérico de todos los parámetros que especifican la longitud o la posición inicial en bytes. Por ejemplo,
para un comando IMPORT DELIMITED que especifica un valor WID de 7 en ACL no Unicode, debe dupli-
car el valor WID a 14 para producir el mismo resultado en ACL Unicode.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 874 de 898


Apéndice

Además, para los datos Unicode, especifique una posición inicial de bytes impar para los campos y una
cantidad par de bytes para la longitud de los campos. Si especifica una posición de inicio par o una longitud
impar, es posible que los caracteres no se vean correctamente.

Recree todas las instancias de IMPORT PRINT e IMPORT DELIMITED


Debe recrear todas las instancias de los comandos IMPORT PRINT e IMPORT DELIMITED importando el
archivo de datos de origen por medio del Asistente de Definición de Datos en la versión Unicode de ACL y
volviendo a importar los proyectos al Servidor de AX. El uso del Asistente de Definición de Datos garantiza
la validez de toda la sintaxis.

Cambie todas las instancias de las funciones ZONED( ) y EBCDIC( )


Debe cambiar todas las instancias de las funciones ZONED() y EBCDIC() como se indica a continuación
para que los valores ASCII que regresan las funciones se conviertan correctamente en datos Unicode:
l Campos calculados: coloque la función BINTOSTR() rodeando las instancias de ZONED() o
EBCDIC()
l Expresiones estáticas: coloque la función BINTOSTR() rodeando las instancias de ZONED()

BINTOSTR(ZONED(%resultado%; 5); 'A')

Cambie todas las instancias del comando OPEN FORMAT.


Debe modificar todas las instancias del comando OPEN FORMAT. Debe usar el parámetro SKIP para sal-
tear los primeros dos bytes del archivo Unicode que está abriendo. Esto es necesario porque los dos pri-
meros bytes de los archivos con codificación UTF-16 están reservados como marcas de orden de byte y
están separados del texto del archivo.

No Unicode

OPEN “prueba_ascii.txt” FORMAT tabla_plantilla CRLF


DEFINE FIELD reg_completo ASCII 1 10

Unicode

OPEN ““prueba_utf-16.txt” FORMAT tabla_plantilla CRLF SKIP 2


DEFINE FIELD reg_completo UNICODE 1 20

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 875 de 898


Apéndice

Verificación de los estudios analíticos convertidos


Verifique que las versiones Unicode de los estudios analíticos produzcan resultados idénticos a los que se
obtienen con los estudios analíticos no Unicode. La mejor manera de hacerlo consiste en utilizar la herra-
mienta Diff para comparar los archivos de log que se crean en el análisis. La herramienta Diff identifica
cualquier diferencia que exista entre los archivos.

¿Qué ocurre si no se obtienen los mismos resultados?


Si no puede obtener los mismos resultados con la versión Unicode de un estudio analítico que con la ver-
sión no Unicode, tal vez pueda aislar el problema por medio de la comparación de los log que crean los
scripts en cada paso del análisis.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 876 de 898


Apéndice

Comprobación de la compatibilidad con Unicode


Al actualizar a una edición Unicode, debe verificar que la lógica personalizada que haya agregado a los
scripts produzca los mismos resultados al ser ejecutada con datos Unicode. Existen áreas predecibles en
las cuales los scripts se pueden ver afectados al ser ejecutados con datos Unicode.

Funciones de bit y carácter


Cada una de las funciones que se incluyen a continuación regresan valores basados en las ubicaciones de
los bytes o el recuento de bytes. Debe realizar comprobaciones para asegurarse de que estas funciones
continúen siendo utilizadas correctamente al pasar de la representación de caracteres de un byte que se uti-
liza en la edición no Unicode a la codificación de caracteres de dos bytes que se utiliza para los datos Uni-
code:
l ASCII( )
l BIT( )
l BYTE( )
l CHR( )
l DIGIT( )
l HEX( )
l MASK( )
l SHIFT( )

La longitud de bytes no es lo mismo que la longitud de carac-


teres
Debe comprobar la manera en que se utilizan las siguientes funciones en sus scripts para asegurarse de
que no se asuma que existe una correspondencia de uno a uno entre la cantidad de caracteres de los datos
y la cantidad de bytes.
Si detecta alguna instancia en la cual la lógica asume una correspondencia de uno a uno entre los carac-
teres y los bytes, debe ajustar la lógica para trabajar correctamente con los datos Unicode, que utilizan dos
bytes para representar cada carácter. Los números que se especifican como parámetros de función de la
cadena, como 4 en STRING(1000; 4) hacen referencia a la cantidad de caracteres; por lo tanto, el uso
estándar de estas funciones no causará problemas.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 877 de 898


Apéndice

Funciones de conversión
l PACKED( )
l STRING( )
l UNSIGNED( )
l VALUE( )
l ZONED( )

Funciones de cadena
l AT( )
l BLANKS( )
l INSERT( )
l LAST( )
l LENGTH( )
l REPEAT( )
l SUBSTRING( )

Funciones varias
l FILESIZE( )
l LEADING( )
l OFFSET( )
l RECLEN( )

Reemplazo de funciones especificas de Unicode


Los productos ACL Unicode admiten seis funciones específicas de Unicode que permiten las con-
versiones entre datos no Unicode y Unicode. Los productos ACL Unicode ofrecen las siguientes fun-
ciones:
l BINTOSTR( ): convierte los datos ZONED o EBCDIC a la cadena Unicode correspondiente. Esto
asegura que los valores codificados como datos EBCDIC o ZONED se muestren correctamente.
l DHEX(): devuelve el equivalente hexadecimal de un valor de campo Unicode especificado. Esta
función es la opuesta a HTOU().
l DBYTE( ): devuelve la interpretación de un carácter Unicode de doble byte en una posición espe-
cífica en un registro.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 878 de 898


Apéndice

l DTOU( ): convierte un valor de fecha en la cadena Unicode correcta sobre la base del ajuste espe-
cífico de configuración regional.
l HTOU( ): devuelve el equivalente Unicode de una cadena hexadecimal especificada. Esta función
es la opuesta a DHEX( ).
l UTOD( ): convierte una cadena Unicode específica de una configuración regional en un valor de
fecha de ACL.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 879 de 898


Apéndice

Ejecución de scripts de R en el Servidor de AX


Importe scripts R externos como archivos relacionados junto con una aplicación de análisis y, a con-
tinuación, invoque los scripts de R desde sus estudios analíticos para aprovechar las capacidades de aná-
lisis estadístico del lenguaje de creación de scripts R en el servidor. Para preparar el entorno del Servidor
de AX para ejecutar scripts de R, primero debe instalar R y, a continuación, agregar la extensión .r a la
lista blanca de extensión de archivos.

Prerrequisitos
Para ejecutar scripts de R en el Servidor de AX, usted debe:
1. Instalar una versión admitida del lenguaje de generación de scripts R en su Servidor de AX.
2. Agregar la extensión .r a la lista blanca de extensión de archivos del Servidor de AX.
3. En ACL Analytics, crear un proyecto para trabajar con él e importarlo al Servidor de AX.
Nota
Si necesita ayuda para completar estos requisitos previos, comuníquese con su admi-
nistrador de ACL GRC Analytics Exchange y consulte:
l Requisitos del Servidor de AX
l Lista blanca de extensiones de archivo

Agregar scripts de R al directorio de proyectos de ACL


Después de crear su proyecto de ACL en ACL Analytics, copie los scripts de R que tiene pensado usar y
péguelos en la carpeta del proyecto para que pueda probar su script localmente en ACL Analytics antes
de importarlo a ACL GRC Analytics Exchange.

Archivos R de ejemplo
Los siguientes archivos R de ejemplo contienen scripts triviales que concatenan dos cadenas y devuelven
una única cadena unida por un espacio. Estos ejemplos tienen por fin mostrar de qué manera se ejecutan
los scripts de R en el Servidor de AX, no de qué manera se analizan los datos con R.

analysis_a.r

conc<-function(x, y) {
paste(x, y, sep=" ")
}
print(conc(value1, value2))

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 880 de 898


Apéndice

analysis_b.r

conc<-function(x, y) {
paste(y, x, sep=" ")
}
print(conc(value1, value2))

Crear un script de ACL


En su proyecto de ACL, cree un nuevo script para usar como el estudio analítico que ejecuta en su Servidor
de AX. Este script hace lo siguiente:
1. Abre una tabla temporal denominada t_tmp con un registro.
Debe abrir una tabla para ejecutar el comando EXTRACT en ACL; aquí se utiliza la tabla t_tmp úni-
camente con este fin.
2. Utiliza el comando EXTRACT para ejecutar cada script de R y escribe los resultados en una tabla.

Agregar el encabezado de estudio analítico


Agregue las etiquetas de encabezado de estudio analítico correspondientes al principio del script para que
el script de ACL se pueda ejecutar en el Servidor de AX después de importar su aplicación de análisis.
Debe agregar la etiqueta FILE para cualquier script de R que tenga pensado ejecutar desde el estudio ana-
lítico:

COMMENT
//ANALYTIC Prueba de integración de R
verifica la integración de R en el Servidor de AX
//DATA t_tmp
//FILE analysis_a.r
//FILE analysis_b.r
//RESULT TABLE resultados
END

Agregar la lógica del script


SET SAFETY OFF
DEL ALL OK
CLOSE PRIMARY SECONDARY

OPEN t_tmp

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 881 de 898


Apéndice

COM **** ejecutar scripts R y escribir los resultados en la tabla


EXTRACT FIELDS RSTRING("a<-source('./analysis_a.r');a[[1]]",50,"test","value") AS "value" TO
"results.fil"
EXTRACT FIELDS RSTRING("a<-source('./analysis_b.r');a[[1]]",50,"test","value") AS "value" TO
"results.fil" APPEND

CLOSE t_tmp

El script del estudio analítico completo


El estudio analítico completo que se ejecuta en el Servidor de AX se ve de la siguiente manera:

COMMENT
//ANALYTIC Prueba de integración de R
verifica la integración de R en el Servidor de AX
//DATA t_tmp
//FILE analysis_a.r
//FILE analysis_b.r
//RESULT TABLE resultados
END

SET SAFETY OFF


DEL ALL OK
CLOSE PRIMARY SECONDARY

OPEN t_tmp

COM **** ejecutar scripts R y escribir los resultados en la tabla


EXTRACT FIELDS RSTRING("a<-source('./analysis_a.r');a[[1]]",50,"test","value") AS "value" TO
"results.fil"
EXTRACT FIELDS RSTRING("a<-source('./analysis_a.r');a[[1]]",50,"test","value") AS "value" TO
"results.fil"

CLOSE t_tmp

Importar el proyecto de ACL y los archivos R relacionados


Una vez que haya creado el script del estudio analítico:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 882 de 898


Apéndice

1. En el AX Cliente, cree una colección y una carpeta para albergar el proyecto de ACL
2. Para importar el proyecto y los archivos R:
a. Haga clic con el botón derecho del ratón en la carpeta que creó y seleccione Importar.
b. Vaya a su proyecto de ACL en su computadora local, seleccione el archivo del proyecto .acl y los
scripts .r de R.
Nota
Asegúrese de seleccionar los archivos R de la carpeta del proyecto, así como el
proyecto de ACL, utilizando la combinación Ctrl+clic para importarlos al Servidor
de AX. También debe importar los archivos de datos de origen para la tabla t_tmp.
c. Haga clic en Abrir.

Explorador del servidor después de la importación


l Nombre_de_la_colección
l Nombre_de_la_carpeta

l Aplicaciones de análisis

l Nombre_proyecto_ACL

l Nombre_del_script_del_estudio_analítico

l Datos

l t_tmp

l Archivos relacionados

l analysis_a.r

l analysis_b.r

Ejecutar el estudio analítico


Desde el Explorador del Servidor del Cliente de AX, haga clic con el botón derecho del ratón en el estudio
analítico y seleccione Ejecutar. Los scripts de R se ejecutan como parte del estudio analítico y usted puede
acceder a la tabla de resultados resultados desde el Cliente Web AX.

Resultados

Explorador del servidor después de ejecutar el estudio analítico


l Nombre_de_la_colección
l Nombre_de_la_carpeta

l Aplicaciones de análisis

l Nombre_proyecto_ACL

l Nombre_del_script_del_estudio_analítico

l Datos

l resultados

l Archivos relacionados

l analysis_a.r

l analysis_b.r

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 883 de 898


Apéndice

Tabla de resultados
l valor
l valor de prueba
l prueba del valor

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 884 de 898


Apéndice

Ejecución de scripts de Python en el Servidor de AX


Haga que un administrador de ACL GRC Analytics Exchange cargue scripts externos de Python al direc-
torio PYTHONPATH del Servidor de AX y después invoque los scripts desde sus estudios analíticos para
aprovechar las funciones orientadas a los objetos del lenguaje de programación Python en el servidor.
Para preparar el entorno del Servidor de AX para ejecutar scripts de Python, primero debe instalar Python
y, a continuación, ajustar la variable de entorno PYTHONPATH.

Prerrequisitos
Para ejecutar scripts de Python en el Servidor de AX, usted debe:
1. Instalar una versión admitida del lenguaje de generación de scripts Python en su Servidor de AX.
2. Establecer la variable de entorno PYTHONPATH en el Servidor de AX.
3. En ACL Analytics, crear un proyecto para trabajar con él e importarlo al Servidor de AX.
Nota
Si necesita ayuda para completar estos requisitos previos, comuníquese con su admi-
nistrador de ACL GRC Analytics Exchange y consulte:
l Requisitos del Servidor de AX
l Configuración de Python para uso con el Servidor de AX

Crear un script de Python


Después de crear su proyecto de ACL en ACL Analytics, cree un script de Python que pueda invocar desde
un estudio analítico.
A continuación, antes de invocar el script desde un estudio analítico, entréguele al administrador de ACL
GRC Analytics Exchange el archivo de este script para que lo cargue en el directorio PYTHONPATH del
equipo en el que se encuentra el Servidor de AX. Cuando se ejecute el estudio analítico en el Servidor de
AX, el archivo ejecutable de Python busca el script en el directorio PYTHONPATH, por eso es necesario
que se encuentre allí.

Archivo de Python de ejemplo


El siguiente archivo de Python de ejemplo contiene un script sin importancia que utiliza una expresión
lambda para elevar el número a una potencia de sí mismo. Este ejemplo tiene por fin mostrar de qué
manera se ejecutan los scripts de Python en el Servidor de AX, no de qué manera se analizan los datos con
Python.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 885 de 898


Apéndice

Nombre de archivo: lambda_example.py

# myFunc eleva al cuadrado valor1 y devuelve el valor


miFunc = lambda valor1: valor1**2

Crear un script de ACL


En su proyecto de ACL, cree un nuevo script para usar como el estudio analítico que ejecuta en su Ser-
vidor de AX. Este script hace lo siguiente:
1. Abre una tabla simple denominada py con un registro.
Debe abrir una tabla para ejecutar el comando GROUP en ACL; aquí se utiliza la tabla py con este
fin.
2. Realiza un bucle 10 veces en cada ciclo, ejecuta el script de Python pasando el contador incre-
mentado como un argumento y extrayendo la salida a una tabla de resultados.

Agregar el encabezado de estudio analítico


Agregue las etiquetas de encabezado de estudio analítico correspondientes al principio del script para
que el script de ACL se pueda ejecutar en el Servidor de AX después de importar su aplicación de aná-
lisis:

COMMENT
//ANALYTIC Prueba de integración de Python
verifica la integración de Python en el Servidor de AX
//DATA py
//DATA resultados
//RESULT TABLE resultados
END

Agregar la lógica del script


SET SAFETY OFF
DEL ALL OK
CLOSE

OPEN py

GROUP
ASSIGN v_máx = 11
ASSIGN v_recuento = 1

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 886 de 898


Apéndice

LOOP WHILE v_recuento < v_máx


EXTRACT PYNUMERIC("lambda_example,myFunc",0,v_counter) AS "Valor de los resultados" TO
"resultados.fil"
v_recuento = v_recuento + 1
END
END
CLOSE py

El script del estudio analítico completo


El estudio analítico completo que se ejecuta en el Servidor de AX se ve de la siguiente manera:

COMMENT
//ANALYTIC Prueba de integración de Python
verifica la integración de Python en el Servidor de AX
//DATA py
//DATA resultados
//RESULT TABLE resultados
END

SET SAFETY OFF


DEL ALL OK
CLOSE

OPEN py

GROUP
ASSIGN v_máx = 11
ASSIGN v_recuento = 1
LOOP WHILE v_recuento < v_máx
EXTRACT PYNUMERIC("lambda_example,myFunc",0,v_counter) AS "Valor de los resultados" TO
"resultados.fil"
v_recuento = v_recuento + 1
END
END
CLOSE py

Importar el proyecto de ACL


Una vez que haya creado el script del estudio analítico:

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 887 de 898


Apéndice

1. En el AX Cliente, cree una colección y una carpeta para albergar el proyecto de ACL
2. Para importar el proyecto:
a. Haga clic con el botón derecho del ratón en la carpeta que creó y seleccione Importar.
b. Vaya a su proyecto de ACL en su computadora local, seleccione el archivo del proyecto .acl y,
a continuación, haga clic en Abrir.
Nota
Asegúrese de importar los archivos de datos de origen para importar la tabla py
con su proyecto de ACL.

Explorador del servidor después de la importación


l Nombre_de_la_colección
l Nombre_de_la_carpeta

l Aplicaciones de análisis

l Nombre_proyecto_ACL

l Nombre_del_script_del_estudio_analítico

l Datos

l py

l Archivos relacionados

Ejecutar el estudio analítico


Desde el Explorador del Servidor del Cliente de AX, haga clic con el botón derecho del ratón en el estu-
dio analítico y seleccione Ejecutar. El script de Python se ejecuta como parte del estudio analítico y se
puede acceder a la tabla de resultados resultados desde Cliente Web AX.
Nota
Cuando se ejecuta el script, el archivo ejecutable de Python busca el archivo del script en
el directorio PYTHONPATH de la máquina que aloja el Servidor de AX. Si el admi-
nistrador de ACL GRC Analytics Exchange no cargó el archivo a este directorio, el estudio
analítico no se completa con éxito.

Resultados

Explorador del servidor después de ejecutar el estudio analítico


l Nombre_de_la_colección
l Nombre_de_la_carpeta

l Aplicaciones de análisis

l Nombre_proyecto_ACL

l Nombre_del_script_del_estudio_analítico

l Datos

l py

l resultados

l Archivos relacionados

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 888 de 898


Apéndice

Tabla de resultados
l Valor de los resultados
l 1
l 4
l 9
l 16
l 25
l 36
l 49
l 64
l 81
l 100

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 889 de 898


Apéndice

Códigos de error del Motor de AX


En la siguiente tabla se incluyen los códigos de error que puede encontrar al ejecutar estudios analíticos.

Errores de inicio del Motor de AX


Código de error Descripción

202 Error del sistema.

203 El período de evaluación ha caducado.

204 El período de evaluación ha caducado.

205 No se pudo realizar la activación.

206 Se ha alcanzado la cantidad máxima de sesiones.

207 Existe un problema (o varios) con la inicialización de la memoria.

209 Error de script desconocido.

210 Falta la contraseña del perfil de la base de datos.

211 Fallo de conexión con el servidor.

212 Se detectó un comando no admitido.

213 El script generó un cuadro de diálogo.

256 El Motor de AX no se pudo iniciar.

Códigos de error del Motor de AX


Código de
error Descripción

1000 No se especificó ningún archivo de preferencias. Se creó un nuevo archivo de preferencias pre-
determinado.

1001 Existe un problema con el archivo de preferencias. Se creó un nuevo archivo de preferencias pre-
determinado.

1002 El proyecto ha sido actualizado a partir de una versión anterior. Se ha guardado una copia con la

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 890 de 898


Apéndice

Código de
error Descripción

extensión .old.

1003 No se ha podido procesar el archivo del proyecto. Se utilizó el último proyecto guardado.

1004 No se especificó ningún archivo de proyecto.

1005 No existe el archivo de proyecto especificado.

1006 El archivo de proyecto especificado es de sólo lectura.

1007 El proyecto especificado está siendo utilizado actualmente por otra aplicación.

1008 No se puede utilizar el archivo de proyecto .old especificado. Debe especificar un archivo de proyecto
con la extensión .ACL.

1009 El archivo de proyecto especificado no es un archivo de proyecto de ACL.

1011 El archivo de proyecto especificado no se puede guardar como una versión anterior.

1012 No se logró abrir el archivo de log para escribirlo.

1013 No se especificó ningún script.

1014 El script especificado no existe.

1015 No se encontró la licencia de ACL o la licencia no es válida.

1016 No se encontró un archivo de biblioteca necesario (.dll).

1017 Ha surgido un error desconocido.

Errores de comando
En la siguiente tabla se indican los códigos de error que se muestran cuando el estudio analítico falla debido
a un comando no válido de ACLScript. El número de código de error que se muestra identifica el comando
que ha fallado.

Código de error Comando

1 SAMPLE

2 EXTRACT

3 LIST

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 891 de 898


Apéndice

Código de error Comando

4 TOTAL

5 DEFINE

6 COMMENT

7 QUIT

8 STOP

9 BYE

10 USE

11 OPEN

12 SAVE

13 DISPLAY

14 ACTIVATE

15 CLOSE

16 HELP

17 COUNT

18 STATISTICS

19 HISTOGRAM

20 STRATIFY

21 SUMMARIZE

22 EXPLAIN

23 GROUP

24 ELSE

25 END

26 CANCEL

27 SUBMIT

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 892 de 898


Apéndice

Código de error Comando

28 DELETE

29 RANDOM

30 SORT

31 FIND

32 DIRECTORY

33 TYPE

34 DUMP

35 INDEX

37 SET

40 DO

41 TOP

42 EXPORT

43 VERIFY

44 SEEK

45 JOIN

46 MERGE

47 SEQUENCE

48 CALCULATE

49 PRINT

50 LOCATE

51 RENAME

54 COPY

55 REPORT

56 EJECT

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 893 de 898


Apéndice

Código de error Comando

58 LET

59 ACCUMULATE

63 ACCEPT

64 ASSIGN

65 AGE

66 CLASSIFY

67 PROFILE

68 DO REPORT

69 LOOP

70 PAUSE

71 SIZE

72 EVALUATE

73 DIALOG

74 IF

75 GAPS

76 DUPS

77 SQLOPEN

78 PASSWORD

79 IMPORT

80 REFRESH

81 NOTIFY

82 CONNECT

83 RETRIEVE

84 FIELDSHIFT

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 894 de 898


Apéndice

Código de error Comando

85 BENFORD

86 CROSSTAB

87 (sin uso)

88 ESCAPE

89 NOTES

90 FUZZY DUPLICATE

91 EXECUTE

Errores de procesamiento de trabajos de estudio analítico


Código
de error Mensaje de error

-10 No se pudieron guardar los resultados del estudio analítico porque la carpeta de destino de los resultados
fue eliminada después de que se comenzara a ejecutar el estudio analítico.

-11 Se ha detenido el trabajo.

-12 Detenido debido a un cierre del servidor.

-13 No se han podido crear los resultados.

-16 No se pudo ejecutar debido a un error de configuración de las propiedades del servidor.

-17 No se ha podido crear un directorio de resultados con un nombre exclusivo.

-19 Se salteó el trabajo.

-20 No se han podido preparar las tablas de publicación de resultados.

-21 No se han podido publicar los resultados en AX Exception.

-22 No se logró realizar la publicación. Nombre de tabla no válido.

-23 No se logró realizar la publicación. Uno o más de los nombres de columna de la tabla son demasiado exten-
sos.

-24 No se logró realizar la publicación. Hay celdas de datos con valores no válidos dentro de la tabla de ACL.

-25 No se logró realizar la publicación. Los campos de la tabla tienen tipos de datos no admitidos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 895 de 898


Apéndice

Código
de error Mensaje de error

-26 No se logró realizar la publicación. No se logró establecer la conexión con el servidor de AX Exception.

-27 No se ejecutó el trabajo. El usuario fue eliminado o no cuenta con permisos.

-28 No se ejecutó el trabajo. Error inesperado. Consulte el log del servidor y el log de ACL para obtener más
detalles.

-29 No se lograron copiar los archivos de datos. El estudio analítico no se pudo completar porque no fue posi-
ble copiar los archivos de datos necesarios al directorio de trabajos.

-30 No se ejecutó el trabajo. El enlace al estudio analítico está roto.

-31 No se logró realizar la publicación. No se logró encontrar el archivo de asignación de excepciones.

-32 No se logró realizar la publicación. No se logró analizar el archivo de asignación de excepciones.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 896 de 898


Apéndice

Palabras clave reservadas


ACL reserva determinadas palabras para propósitos especiales. No es posible nombrar campos o varia-
bles con estos valores de palabras clave reservados.
En algunos casos, tampoco podrá usar abreviaturas de las palabras clave reservadas, como “Can”
(CANCEL) o “Rec” (RECORD).
Si agrega un sufijo a una palabra clave reservada, puede utilizarla como nombre de un campo o una varia-
ble. Por ejemplo, no se permite el nombre "Field", pero sí se permite el nombre "Field_1" o "Field_2".

Palabra clave reser-


vada Propósito en ACL

ALL Hace referencia a todos los campos definidos previamente.

AND El operador lógico AND.

AS Asigna un nombre visible a la expresión o el campo de salida.

AXRunByUser Una variable del sistema que almacena el nombre de usuario del usuario que está ejecutando
un script de estudio analítico en el Servidor de AX con el formato "dominio\nombre_de_
usuario".

CANCEL Cancela el comando actual.

D Especifica el ordenamiento descendente para el nombre de campo o expresión anterior.

END Da por concluido el flujo de entrada y actúa como una línea nula.

EXPR El prefijo para el nombre de un campo de salida predeterminado.

F Hace referencia al valor falso de una expresión lógica.

FIELD/FIELDS Parte de los comandos EXPORT, EXTRACT, JOIN y SAMPLE.

FORMAT Un nombre más viejo para un formato de tabla de ACL.


No se puede usar como un nombre para una tabla de ACL.

IF Especifica una condición de filtro.

LINE Es utilizado por el comando DEFINE COLUMN para especificar si un campo se divide en una
cantidad especificada de líneas.

NODUPS Suprime los valores visibles duplicados en el campo de corte de un reporte de ACL.

NOT El operador lógico NOT.

NOZEROS Muestra o imprime los valores de cero en un campo numérico o un reporte como espacios en

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 897 de 898


Apéndice

Palabra clave reser-


vada Propósito en ACL

blanco.

ON Precede una lista de campos.

OR El operador lógico OR.

OTHER Indica qué campos o expresiones se deben incluir, pero no subtotalizar, en la salida del
comando SUMMARIZE.

PAGE Utilizado por el comando REPORT para crear saltos de página.

PICTURE Especifica un formato para un campo numérico.

PRIMARY Especifica un tipo determinado de unión.

RECORD Hace referencia a todo el registro de entrada tal como existe.

RECORD_LENGTH Almacena valores de longitud de registro para utilizarlos en operaciones de procesamiento de


registros.

SECONDARY Especifica un tipo determinado de unión.

SUPPRESS Suprime la salida de totales numéricos.

T Hace referencia al valor verdadero de una expresión lógica.

TAPE Hace referencia a un método más antiguo de acceder a los datos con ACL.
No se puede usar como un nombre para una tabla de ACL.

TO Designa un archivo de salida para cualquier comando.

WIDTH Cambia el ancho de impresión predeterminado de una expresión o un campo específicos.

Publicado 21/06/2018 © ACL Services Ltd. 2017

Página 898 de 898

También podría gustarte