Child pages
  • BEGIN SEQUENCE ... END
Skip to end of metadata
Go to start of metadata

Sintaxe

 

BEGIN SEQUENCE

          ...

          < instruções >

          ...

          [ BREAK [ < expressão > ] ]

          ...

          < instruções >

          ...

          [ RECOVER [ USING < variável > ] ]

          ...

          < instruções >

          ...

END SEQUENCE

 

Propósito

 

O comando BEGIN SEQUENCE define uma estrutura sequencial de controle dentro do fluxo de execução de um programa, permitindo a sua interrupção na ocorrência de um determinado evento.

 

Argumentos

 

BREAK < expressão >

 

Desvia o fluxo de execução para a linha de instrução imediatamente seguinte ao próximo comando RECOVER, se houver um especificado. Caso não exista, o fluxo de execução será desviado para a linha de instrução imediatamente seguinte ao comando END SEQUENCE.

 

A expressão ( < expressão > ) é um valor que será atribuído à variável ( < variável > ) especificada pela cláusula USING do comando RECOVER.

 

RECOVER USING < variável >

 

Define um ponto de recuperação, dentro do bloco de sequência, para o qual o fluxo de execução será desviado após a execução de um comando BREAK. Se a cláusula USING < variável > for especificada, esta variável receberá o valor fornecido pelo comando BREAK.

 

END SEQUENCE

 

Define o fim do bloco de sequência. Após a execução do comando BREAK, o fluxo de execução é desviado para a primeira linha de instrução após o comando END SEQUENCE, caso não tenha sido especificado um comando RECOVER dentro da sequência.

 

Utilização

 

O comando BEGIN SEQUENCE ... END SEQUENCE é uma estrutura de controle que facilita a construção de sistemas de tratamento de erros ou exceções. Ele delimita um bloco de instruções, incluindo a invocação de funções.

 

Dentro de um bloco de sequência construído através desse comando, há algumas restrições quanto aos comandos que são permitidos entre um BEGIN SEQUENCE e um RECOVER. É permitido executar um RETURN, mas não um LOOP ou um EXIT de comandos WHILE ... ENDDO ou FOR ... NEXT externos à sequência. Todavia, entre um RECOVER e um END SEQUENCE é permitido executar um LOOP, um EXIT ou um BREAK, uma vez que a sequência já foi completada até este ponto.

 

A utilização do comando LOOP dentro de um bloco definido pelo comando RECOVER é útil para permitir a reexecução do bloco de sequência definido, após o erro ocorrido ter sido tratado ou recuperado.

 

A estrutura definida pelo comando BEGIN SEQUENCE ... END SEQUENCE é bastante flexível. Várias podem ser intercaladas e mais de uma pode ser definida dentro de uma mesma função.

 

Exemplos

 

A estrutura típica do comando BEGIN SEQUENCE é exemplificada abaixo:

 

BEGIN SEQUENCE

          ...

          < instruções >

          ...

          IF < condição de erro / exceção >

                    BREAK

          ENDIF

          ...

          < instruções >

          ...

          RECOVER

          ...

          < instruções para o tratamento do erro >

          ...

END SEQUENCE

 

  • No labels