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:

  1. Executa o comando DIRECTORY e salva os resultados em uma tabela.
  2. Obtenha o número de registros na tabela para uso como contador.
  3. 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.

Guia de scripting do ACL 14.1