A instrução ALTER altera o ponto de transferência especificado em uma instrução GO TO.
Nota: A declaração ALTER incentiva o uso De práticas de programação não estruturadas. A declaração EVALUATE fornece a mesma função que a instrução ALTER e ajuda a garantir que seu programa será bem estruturado.
>>-ALTER--------------------------------------------------------> .--------------------------------------------------------. V | >----procedure-name-1--TO--+------------+--procedure-name-2-+-->< '-PROCEED TO-'
A instrução ALTER modifica a instrução GO TO no parágrafo nomeado por procedure-name-1. As execuções subseqüentes da instrução GO TO modificada transferem o controle para o procedure-name-2.
Procedure-name-1
Deve ser um parágrafo de divisão de procedimento que contém apenas uma frase: uma instrução GO TO sem a frase DEPENDING ON.
Procedure-name-2
Deve ser uma seção ou parágrafo de divisão de procedimento.
Se procedure-name-1 ou procedure-name-2 estiverem dentro de um procedimento declarativo, nenhum dos dois pode fazer referência a qualquer procedimento não declarativo. Na parte não-declarativa do programa, não deve haver nenhuma referência aos nomes de procedimento que aparecem em um procedimento declarativo EXCEPTION / ERROR, exceto que as instruções PERFORM podem se referir a um procedimento EXCEPTION / ERROR ou procedimentos associados a ele.
Antes de executar a instrução ALTER, quando o controle atinge o parágrafo especificado no procedure-name-1, a instrução GO TO transfere o controle para o parágrafo especificado na instrução GO TO. Após a execução da instrução ALTER, no entanto, o próximo controle de tempo atinge o parágrafo especificado em procedure-name-1, a instrução GO TO transfere controle para o parágrafo especificado em procedure-name-2.
Nota: Não utilize a instrução ALTER em programas que tenham o atributo RECURSIVE.