O comando ALTER é utilizado para modificar dinamicamente o destino de uma instrução GO TO durante a execução do programa. Ele altera o fluxo do controle no tempo de execução, redirecionando o GO TO para outro parágrafo.
⚠️ Atenção: seu uso é desencorajado em práticas modernas de programação COBOL, pois dificulta a legibilidade e manutenção do código. Prefira comandos estruturados como EVALUATE ou PERFORM.
🧾 Sintaxe
ALTER nome-procedimento-1 TO [PROCEED TO] nome-procedimento-2.
🧠 O que faz
-
Altera o comportamento do
GO TOpresente no parágrafonome-procedimento-1, redirecionando-o paranome-procedimento-2. -
A partir da execução do
ALTER, sempre quenome-procedimento-1for chamado, oGO TOirá para o novo destino definido.
🎯 Exemplo prático
✅ Antes do ALTER
100-INICIO.
GO TO 200-ETAPA1.
200-ETAPA1.
DISPLAY "Etapa 1".
STOP RUN.
✅ Após o ALTER
100-INICIO.
ALTER 100-INICIO TO PROCEED TO 300-ETAPA2.
GO TO 100-INICIO.
300-ETAPA2.
DISPLAY "Etapa 2".
STOP RUN.
Nesse exemplo, a primeira vez que
100-INICIOfor executado, o controle vai para200-ETAPA1. Após oALTER, as próximas chamadas a100-INICIOredirecionarão para300-ETAPA2.
⚠️ Regras e limitações
-
O
procedure-name-1deve conter apenas umGO TOdireto, semDEPENDING ON. -
O
procedure-name-2deve ser um parágrafo ou seção válida. -
O
ALTERnão pode ser usado em programas com o atributoRECURSIVE. -
Evite usar em código novo – prefira soluções estruturadas com
EVALUATE,PERFORMeIF.
🚫 Boas práticas
O uso de
ALTERé considerado obsoleto e não estruturado. A maioria dos compiladores modernos ainda aceita por compatibilidade, mas sua utilização deve ser evitada sempre que possível.
Recomenda-se reescrever a lógica usando PERFORM ... THRU ou EVALUATE.
✅ Conclusão
A instrução ALTER mostra como era o COBOL em sua forma mais procedural e dinâmica. No entanto, para código moderno e legível, o ideal é evitar seu uso e aplicar estruturas mais seguras e claras.