A instrução STOP RUN
no COBOL é usada para finalizar a execução do programa principal. Ela encerra a unidade de execução atual, fecha todos os arquivos abertos e devolve o controle ao ambiente que iniciou o programa.
📌 Para que serve
-
Encerrar um programa COBOL principal.
-
Finalizar a execução da aplicação (normalmente o programa raiz).
-
Garantir que todos os arquivos sejam corretamente fechados.
-
Liberar recursos e retornar ao sistema operacional ou chamador.
🧾 Sintaxe básica
STOP RUN.
✅ Exemplo prático
DISPLAY "Início do programa".
PERFORM PROCESSA-DADOS.
DISPLAY "Fim do programa".
STOP RUN.
⚙️ Como funciona internamente
Comando | Comportamento |
---|---|
STOP RUN |
Finaliza toda a unidade de execução. Fecha todos os arquivos abertos. Não retorna controle a subprogramas. |
GOBACK (em programa principal) |
Mesmo comportamento que STOP RUN . Encerra tudo. |
GOBACK (em subprograma) |
Retorna para o programa chamador. Não fecha arquivos, a menos que o programa seja INITIAL . |
EXIT PROGRAM |
Retorna ao chamador sem fechar arquivos. Usado em subprogramas. |
CANCEL |
Reinicializa o programa especificado, fecha arquivos abertos, e libera a memória. |
⚠️ Regras importantes
-
Somente o programa principal pode usar
STOP RUN
. -
Em subprogramas, use preferencialmente
GOBACK
ouEXIT PROGRAM
. -
Arquivos abertos são automaticamente fechados ao usar
STOP RUN
. -
Se o programa tiver o atributo
INITIAL
, arquivos internos também serão fechados porGOBACK
ouEXIT PROGRAM
.
🧠 Dicas práticas
-
Use
STOP RUN
somente no programa principal. -
Se você estiver criando subprogramas reutilizáveis, prefira
GOBACK
ouEXIT PROGRAM
para não encerrar toda a aplicação acidentalmente. -
Em programas que produzem relatórios com
REPORT WRITER
, useTERMINATE
para encerrar relatórios, nãoSTOP RUN
.
✅ Conclusão
A instrução STOP RUN
é simples, direta e essencial para encerrar corretamente a execução de um programa COBOL principal. Seu uso garante o fechamento adequado de arquivos e o retorno ao ambiente chamador. Embora poderosa, deve ser usada com cuidado para não interferir em estruturas de programas compostos por subprogramas.