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
GOBACKouEXIT 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 porGOBACKouEXIT PROGRAM.
🧠 Dicas práticas
-
Use
STOP RUNsomente no programa principal. -
Se você estiver criando subprogramas reutilizáveis, prefira
GOBACKouEXIT PROGRAMpara não encerrar toda a aplicação acidentalmente. -
Em programas que produzem relatórios com
REPORT WRITER, useTERMINATEpara 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.