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 TO
presente no parágrafonome-procedimento-1
, redirecionando-o paranome-procedimento-2
. -
A partir da execução do
ALTER
, sempre quenome-procedimento-1
for chamado, oGO TO
irá 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-INICIO
for executado, o controle vai para200-ETAPA1
. Após oALTER
, as próximas chamadas a100-INICIO
redirecionarão para300-ETAPA2
.
⚠️ Regras e limitações
-
O
procedure-name-1
deve conter apenas umGO TO
direto, semDEPENDING ON
. -
O
procedure-name-2
deve ser um parágrafo ou seção válida. -
O
ALTER
não pode ser usado em programas com o atributoRECURSIVE
. -
Evite usar em código novo – prefira soluções estruturadas com
EVALUATE
,PERFORM
eIF
.
🚫 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.