Thursday 21 November 2024

A declaração GO TO transfere o controle de uma parte da divisão de procedimento para outra.

Os tipos de instruções GO TO são:

  • Incondicional
  • Condicional
  • Alterado

 

Incondicional

A declaração incondicional de GO TO transfere o controle para a primeira instrução no parágrafo ou seção identificada por PROCEDURE-NAME, a menos que a instrução GO TO tenha sido modificada por uma instrução ALTER.

>>-GO--+----+--procedure-name-1--------------------------------><
       '-TO-' 

procedure-name-1

Deve nomear um procedimento ou uma seção na mesma divisão de procedimento como a instrução GO TO.

 

Quando a instrução GO TO incondicional não é a última instrução em uma seqüência de instruções imperativas, as instruções que seguem o GO TO não são executadas.

Quando um parágrafo é referido por uma instrução ALTER, o parágrafo deve consistir de um nome de parágrafo seguido por uma declaração incondicional ou alterada GO TO.

 

Condicional

O GO TO condicional para transferências de instrução de controle a uma de uma série de procedimentos, dependendo do valor do item de dados referenciado pelo identificador-1.

               .------------------.
               V                  |
>>-GO--+----+----procedure-name-1-+--DEPENDING--+----+---------->
       '-TO-'                                   '-ON-'
 
>--identifier-1------------------------------------------------><

 

procedure-name-1

Deve ser um procedimento ou uma seção na mesma divisão de procedimento como a instrução GO TO. O número de nomes de procedimento não deve exceder 255.

identifier-1

Deve ser um item de dados elementar numérico que seja um inteiro. identificador-1 não pode ser um campo de data de janela.

Se 1, o controle é transferido para a primeira instrução no procedimento chamado pela primeira ocorrência de procedimento-name-1.

Se 2, o controlo é transferido para a primeira instrução no procedimento denominado por a segunda ocorrência do procedimento-nome-1, e assim por diante.

Se o valor do identificador for diferente de um valor dentro do intervalo de 1 a n (onde n é o número de nomes de procedimento especificado nesta instrução GO TO), não ocorre nenhuma transferência de controle. Em vez disso, o controle passa para a próxima instrução na seqüência normal de execução.

 

Alterado

A instrução GO TO alterada transfere o controle para a primeira instrução do parágrafo nomeado na instrução ALTER.

Não é possível especificar a instrução GO TO alterada da seguinte forma:

  • Um programa ou método que tenha o atributo RECURSIVE
  • Um programa compilado com a opção compilador THREAD
  • Uma instrução ALTER referente ao parágrafo que contém a instrução GO TO alterada deve ser executada antes da instrução GO TO ser executada. Caso contrário, a instrução GO TO funciona como uma instrução CONTINUE.

 

Read syntax diagramSkip visual syntax diagram>>-paragraph-name--.--GO--+----+--.----------------------------><
                          '-TO-'

Quando uma instrução ALTER se refere a um parágrafo, o parágrafo pode consistir apenas no nome do parágrafo seguido por uma declaração incondicional ou alterada GO TO.

 

MORE-LABELS

A declaração GO TO MORE-LABELS pode ser especificada somente em um declarativo LABEL.

>>-GO--+----+--MORE-LABELS-------------------------------------><
       '-TO-'