COBOL - Comando CANCEL - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Comando CANCEL
Enterprise COBOL for z/OS, V4.2, Language Reference

A instrução CANCEL garante que o subprograma mencionado seja inserido no estado inicial na próxima vez que for chamado.

identifier-1, literal-1
literal-1 deve ser um literal alfanumérico.
O identifier-1 deve ser um item de dados decimal alfanumérico, alfabético ou zonado, para que seu valor possa ser um nome de programa.
As regras de formação para nomes de programas dependem da opção do compilador PGMNAME.
Para obter detalhes, consulte a discussão sobre nomes de programas no parágrafo PROGRAM-ID e a descrição de PGMNAME no Enterprise COBOL Programming Guide.

literal-1 ou o conteúdo do identifier-1 deve ser o mesmo que um literal ou o conteúdo de um identificador especificado em uma instrução CALL associada.

Não especifique o nome de uma classe ou método na instrução CANCEL.

Após a execução de uma instrução CANCEL para um subprograma chamado, esse subprograma não possui mais uma conexão lógica com o programa.
O conteúdo dos itens de dados nos registros de dados externos descritos pelo subprograma não é alterado quando esse subprograma é cancelado.
Se uma instrução CALL for executada posteriormente por qualquer programa na unidade de execução que nomeie o mesmo subprograma, esse subprograma será inserido em seu estado inicial.

Quando uma instrução CANCEL é executada, todos os programas contidos no programa referenciado na instrução CANCEL também são cancelados.
O resultado é o mesmo que se um CANCEL válido fosse executado para cada programa contido na ordem inversa na qual os programas aparecem no programa compilado separadamente.

Uma instrução CANCEL fecha todos os arquivos abertos associados a um conector de arquivo interno no programa nomeado em uma instrução CANCEL explícita.
Os procedimentos de USE associados a esses arquivos não são executados.

Você pode cancelar um subprograma chamado de qualquer uma das seguintes maneiras:

  • Ao referenciá-lo como o operando de uma instrução CANCEL
  • Ao encerrar a unidade de execução da qual o subprograma é membro
  • Executando uma instrução EXIT PROGRAM ou GOBACK no subprograma chamado, se esse subprograma possuir o atributo inicial

Nenhuma ação é tomada quando uma instrução CANCEL é executada se o programa especificado:

  • Não foi chamado dinamicamente nesta unidade de execução por outro programa COBOL
  • Foi chamado e subsequentemente cancelado

Em um ambiente multithread, um programa não pode executar uma instrução CANCEL nomeando um programa que está ativo em qualquer thread.
O programa nomeado deve estar completamente inativo.

Os subprogramas chamados podem conter instruções CANCEL.
No entanto, um subprograma chamado não deve executar uma instrução CANCEL que cancela direta ou indiretamente o programa de chamada em si ou que cancela qualquer programa mais alto que ele na hierarquia de chamadas.
Nesse caso, a unidade de execução é finalizada.

Um programa nomeado em uma instrução CANCEL deve ser um programa que foi chamado e executou uma instrução EXIT PROGRAM ou uma instrução GOBACK.

Um programa pode cancelar um programa que não chamou, desde que, na hierarquia de chamada, o programa que executa a instrução CANCEL seja maior ou igual ao programa que está cancelando. Por exemplo:

A chama B e B chama C (quando A recebe controle, ele pode cancelar C.)
A chama B e A chama C (quando C recebe controle, pode cancelar B.)



© Copyright IBM Corp.