4.4 - Controle de Fluxo

O controle de fluxo em PL/I ou em qualquer outra linguagem é essencial para direcionar a execução do programa conforme condições e repetições, oferecendo clareza e robustez. Nesta seção, abordaremos três pilares fundamentais: estruturas condicionais, laços de repetição e tratamento de exceções.

F-THEN-ELSE e blocos DO

A instrução IF-THEN-ELSE avalia uma expressão lógica e executa o bloco correspondente à condição verdadeira ou falsa. Quando há múltiplas instruções, utiliza-se DO ... END para delimitar o bloco.

IF saldo < 0 THEN
  DO;
    PUT SKIP LIST('Conta estourada!');
    saldo = 0;
  END;
ELSE
  PUT SKIP LIST('Saldo OK:', saldo);
  • IF condição THEN inicia o teste lógico.

  • DO ... END agrupa várias instruções dentro de um mesmo ramo.

  • ELSE (opcional) define o fluxo quando a condição é falsa.

Para repetições, PL/I oferece três variações do comando DO:

a) DO variável = início TO fim [BY passo]

Executa o bloco para cada valor da variável.

DO i = 1 TO 10 BY 2;
  PUT SKIP LIST('Iteração:', i);
END;

b) DO WHILE (condição)

Repete enquanto a condição for verdadeira.

c) DO UNTIL (condição)

Repete até que a condição se torne verdadeira (executa ao menos uma vez).


4.5.2 SELECT-WHEN-OTHERWISE

Para testar um valor contra múltiplos casos, utiliza-se SELECT-WHEN-OTHERWISE, equivalente a uma estrutura de escolha múltipla:

  • SELECT (expressão) define o valor a comparar.

  • Cada WHEN (valor) verifica igualdade — é possível agrupar vários valores.

  • OTHERWISE trata os casos não previstos.

  • END; encerra o bloco.


4.5.3 ON-units (Tratamento de Exceções)

PL/I inclui um mecanismo robusto para interceptar condições excepcionais: as ON-units. Elas permitem reagir a erros durante a execução.

  • ON ZERODIVIDE captura tentativas de divisão por zero.

  • ON ENDFILE(dataset) detecta fim de arquivo em operações de I/O.

  • O bloco BEGIN ... END especifica ações corretivas ou informativas.

  • Após o tratamento, a execução prossegue na instrução seguinte ao ponto que gerou a condição.


Com esses recursos — IF-THEN-ELSE, DO, SELECT-WHEN-OTHERWISE e ON-units — você tem controle total sobre o fluxo do programa, podendo responder a condições, iterar sobre dados e lidar elegantemente com erros em tempo de execução.

Na próxima seção, exploraremos recursos avançados para manipulação de strings e funções intrínsecas.

Last updated