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:ACLScript
- el comando controla si se ejecuta un comando o no
- el parámetro 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.
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.ACLScript
Nota
El comando LOOP se debe ejecutar dentro del comando GROUP; no puede ejecutarse de modo independiente.
El comando LOOP del siguiente ejemplo procesa las instrucciones dentro del bucle mientras 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 valores de los campos de importe de los 10 registros.
Si desea obtener más información acerca de los bucles, consulte Comando LOOP.
LOOPING con un subscript
A veces, el comando LOOP no ofrece la función de bucle exacta que usted necesita. En este caso, también puede invocar un script de Analytics 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:
- bandera el bucle continúa hasta que la variable de bandera lógica se ajuste en FALSE
- contador el bucle continúa hasta que una variable que se incrementa o decrece cruza un umbral condicional
Si desea obtener más información acerca de la invocación de subscripts, consulte Comando DO SCRIPT.
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:
- Ejecute el comando DIRECTORY y guarde los resultados en una tabla.
- Obtenga la cantidad de registros de la tabla para usar como un contador.
- 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.