Estruturas de controle
Uma estrutura de controle é um componente de um script que decide a direção a tomar com base nos parâmetros fornecidos. O ACLScript oferece lógica IF condicional e estruturas de loop.
Lógica condicional usando IF
O ACLScript implementa lógica condicional como um comando IF e como um parâmetro opcional em diversos comandos da linguagem:
- comando controla se um comando é executado ou não
- parâmetro decide quais registros de uma tabela são afetados pela execução do comando
O comando IF
Ao usar o comando IF, especifique uma expressão condicional, seguida pelo comando a executar se a expressão for avaliada como verdadeira:
IF v_contador > 10 CLASSIFY ON número_cliente
Essa estrutura condicional controla qual código é executado. Portanto, você pode usar o comando IF quando precisa processar uma tabela inteira com base na expressão de teste. Se a expressão for avaliada como verdadeira, o comando será executado em todos os registros da tabela. Para obter mais informações sobre o comando IF, consulte Comando IF.
Parâmetro IF
Muitos comandos aceitam um parâmetro IF opcional que pode ser usado para filtrar os registros processados pelo comando:
CLASSIFY ON número_cliente IF estado = 'SP'
Quando essa instrução for executada, o script classificará todos os registros da tabela em que o valor do campo estado for 'SP'.
Loop
O comando LOOP
O comando LOOP fornece a estrutura de controle de loops no ACLScript.
Nota
O comando LOOP deve ser executado dentro do comando GROUP e não pode ser executado isoladamente.
Esse comando processará as instruções dentro do loop enquanto a expressão WHILE especificada for verdadeira:
ASSIGN v_contador = 10 GROUP LOOP WHILE v_contador > 0 v_total = v_total + valor v_contador = v_contador - 1 END END
Essa estrutura interage 10 vezes e adiciona o valor do campo valor à variável v_total. Ao final de cada interação, a variável v-contador é decrementada em 1 e testada na expressão WHILE. Quando a expressão for avaliada como falsa, o loop encerrará e o script prosseguirá.
Na conclusão do loop, a variável v_total contém a soma dos campos valor dos 10 registros.
Para obter mais informações sobre loops, consulte Comando LOOP.
LOOPING com um subscript
Algumas vezes, o comando LOOP não oferece a funcionalidade exata de looping necessária. Nesse caso, você também pode chamar um script do Analytics separado para executar um loop usando o comando DO SCRIPT: DO SCRIPT nomeScript WHILE testeCondicional.
É possível usar um dos métodos a seguir para controlar o fim do loop:
- sinalizador o loop continua até que a variável lógica de sinalizador seja definida como FALSE
- contador o loop continua até que uma variável incrementada ou decrementada ultrapasse um limite condicional
Para obter mais informações sobre a chamada de subscripts, consulte Comando DO SCRIPT.
Exemplo
Você precisa importar todos os arquivos CSV da pasta C:\dados para o projeto. É possível usar o comando DIRECTORY para obter uma lista de arquivos da pasta. No entanto, não é possível usar o comando IMPORT dentro da estrutura GROUP. Você precisa de outra forma de fazer o looping na tabela criada por DIRECTORY.
Para isso, crie um script principal que:
- Executa o comando DIRECTORY e salva os resultados em uma tabela.
- Obtenha o número de registros na tabela para uso como contador.
- Chame um subscript uma vez por registro na tabela para executar o comando IMPORT com o registro atual.
Script principal
COMENT Script principal DIRECTORY "C:\dados\*.csv" TO T_Tabela_Para_Loop OPEN T_Tabela_Para_Loop COUNT v_Num_Registros = COUNT1 v_Contador = 1 DO SCRIPT Subscript_Importação WHILE v_Contador <= v_Num_Registros
Subscript de importação
COMMENT Subscript_importação OPEN T_Tabela_Para_Loop LOCATE RECORD v_Contador COMMENT o código para importar o arquivo CSV do registro deve estar aqui... ASSIGN v_Contador = v_Contador + 1
As variáveis são compartilhadas entre todos os scripts executados no projeto. Portanto, os scripts principais chamam o subscript até que o valor de v_Contador exceda o valor de v_Num_Registros. A cada vez que o subscript é executado, incrementa v_Contador.
Essa estrutura permite chamar o comando IMPORT para cada registro durante o loop pela tabela. Quando o script principal concluir, todos os arquivos CSV da pasta C:\dados terão sido importados.