SAS/ IML: Dicas úteis
O tratamento de dados é um item de extrema importância para garantir a qualidade dos dados, facilitando a programação estatística. A linguagem SAS / IML possui várias formas diferentes para parar a execução do procedimento IML. Cada uma é adequada para uma determinada situação. São elas: as declarações QUIT e RETURN e as instruções ABORT e STOP.
A declaração QUIT é familiar para todos os programadores SAS. É utilizado para encerrar processos interativos, como PROC SQL, PROC GLM e PROC IML. (Lembre-se que você nunca deve usar uma instrução RUN para finalizar um programa IMLPROC.) A Declaração de saídas do procedimento IML, fecha todos os arquivos abertos e libera toda a memória alocada. A instrução QUIT não pode ser usada como parte de uma instrução lógica, como um IF-THEN, consequentemente, não é útil para o tratamento de erros.
A declaração ABORT pode ser utilizada como parte das demonstrações lógicas, tais como declarações IF-THEN/ELSE, como mostrado abaixo:
Indicado para lidar com erros “catastróficos”, como por exemplo, quando os dados não são adequados para uma programação ou para finalizar um programa onde haja variáveis de observações insuficientes para realizar uma análise.
Frequentemente usado no escopo principal de um programa SAS / IML, a declaração ABORT é considerada a “etiqueta da má programação”. Se você estiver escrevendo um módulo SAS / IML, o melhor é optar pelas instruções STOP ou RETURN para lidar com erros.
Já a declaração STOP é uma alternativa menos drástica para a instrução ABORT, pois não causa PROC IML para sair. A declaração STOP não é normalmente utilizada no âmbito de um programa principal e sim dentro de módulos para parar a sua execução, portando a instrução STOP é semelhante à RETURN.
A instrução de interrupção é diferente da instrução de retorno, pois a primeira pode ser usada para controlar o fluxo de um programa que parou dentro de um módulo.
Por exemplo, o módulo seguinte define uma função que retorna o valor 1 com probabilidade p, e o valor 0, caso contrário. O parâmetro para o módulo deve ter um valor no intervalo [0,1], mas o módulo não verifica o valor do argumento. Portanto, você pode causar um erro de execução no interior do módulo passando um valor inválido, como mostram as seguintes declarações:
A figura acima mostra que a execução é interrompida no módulo.
OBS.: Se a instrução STOP for executada, o programa retorna ao escopo principal.
A instrução RETURN é diferente das declarações anteriores, pois não para um programa ou linda com um programa que já está parado. No entanto, a função RETURN é indicada para o tratamento de condições antes que estas se tornem erros.
Fonte: http://blogs.sas.com