O comando PERFORM no COBOL executa uma ou mais instruções, podendo fazer isso de forma simples (uma vez) ou repetitiva (em laço). É a principal estrutura para controle de fluxo e repetição na linguagem.

📌 Para que serve

  • Executar um bloco de código (ou parágrafo) uma vez.

  • Repetir instruções até que uma condição seja satisfeita.

  • Iterar com controle de variáveis (VARYING, FROM, BY, UNTIL).

  • Organizar o código de forma modular e reutilizável.

🧾 Sintaxe básica

✅ Forma simples

PERFORM
   instruções.
END-PERFORM.

✅ Forma com repetição

PERFORM
   instruções
UNTIL condição.
END-PERFORM.

✅ Forma com controle de variável (loop)

PERFORM VARYING indice FROM valor-inicial BY incremento
   UNTIL condição.
   instruções.
END-PERFORM.

✅ Exemplo prático

01 CONTADOR         PIC 9(2) VALUE 1.
01 SOMA             PIC 9(4) VALUE 0.

PERFORM VARYING CONTADOR FROM 1 BY 1
        UNTIL CONTADOR > 10
    ADD CONTADOR TO SOMA
END-PERFORM.

DISPLAY "Soma de 1 a 10: " SOMA.

Resultado: Soma de 1 a 10: 55

⚙️ Variedades do PERFORM

Tipo O que faz Uso típico
Simples Executa bloco uma única vez Modularização de código
UNTIL Repetição com condição Laços definidos por regra
VARYING Repetição com incremento de variável Contadores e iterações com índice
WITH TEST BEFORE Condição testada antes de entrar no laço Valor inicial precisa ser válido
WITH TEST AFTER Condição testada após executar uma vez Garante ao menos uma execução

⚠️ Regras importantes

  • Não suporta AFTER, apenas BEFORE para o teste (por padrão, o COBOL assume BEFORE).

  • BY e FROM não aceitam índices nem variáveis de ponto flutuante.

  • Os comandos dentro do PERFORM devem ser válidos dentro da Divisão de Procedimentos.

  • Não é possível usar nomes de índice em VARYING.

  • No PERFORM UNTIL, a condição deve mudar dentro do laço, ou ele pode entrar em loop infinito.

🧠 Dicas práticas

  • Quando o laço envolve tabelas, prefira VARYING para controlar o índice.

  • Use PERFORM nome-do-parágrafo para melhorar a organização do código.

  • Para evitar erros, inicialize todas as variáveis utilizadas em FROM e BY.

  • PERFORM também é usado para chamar parágrafos declarados anteriormente.

PERFORM CALCULAR-SALARIO.
...
CALCULAR-SALARIO.
    MULTIPLY HORAS BY VALOR-HORA GIVING SALARIO.

 

✅ Conclusão

O comando PERFORM é essencial na estrutura do COBOL. Ele permite modularizar, repetir e controlar o fluxo do programa com clareza. Seja em loops simples ou estruturas complexas, seu uso é indispensável para tornar o código mais organizado e eficiente.