| Bellacosa Mainframe e o comando Stop Run em Cobol |
O que é o comando STOP RUN em COBOL?
O comando STOP RUN é uma das instruções mais conhecidas da linguagem COBOL.
Sua função é:
Encerrar a execução do programa
Quando o COBOL encontra um STOP RUN, ele finaliza o programa e devolve o controle ao sistema operacional (z/OS), ao CICS, ao Job Batch ou ao ambiente que executou o programa.
Sintaxe
STOP RUN.
Exemplo Simples
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'OLA MUNDO'.
STOP RUN.
Resultado:
OLA MUNDO
O programa termina logo após o DISPLAY.
Fluxo de Execução
Início Programa
↓
Comandos COBOL
↓
STOP RUN
↓
Fim Programa
↓
Retorno ao z/OS
O que acontece internamente?
Quando executado:
STOP RUN.
o COBOL:
✅ Fecha arquivos abertos
✅ Libera memória
✅ Finaliza o Language Environment (LE)
✅ Retorna ao sistema operacional
✅ Define o Return Code
Exemplo em Batch
DISPLAY 'PROCESSAMENTO OK'.
STOP RUN.
JCL:
//STEP1 EXEC PGM=FIN001
Resultado:
CC 0000
(Job encerrado com sucesso)
STOP RUN e Return Code
Podemos definir um código de retorno.
Exemplo:
MOVE 8 TO RETURN-CODE.
STOP RUN.
Resultado:
CC 0008
No SDSF:
RC=0008
Exemplo de Erro
IF SQLCODE NOT = 0
MOVE 16 TO RETURN-CODE
STOP RUN
END-IF.
Resultado:
CC=0016
STOP RUN x GOBACK
Uma das dúvidas mais comuns.
STOP RUN
Finaliza completamente a aplicação.
STOP RUN.
GOBACK
Retorna ao programa chamador.
GOBACK.
Exemplo
Programa principal:
CALL 'SUBROT1'.
Subprograma:
GOBACK.
Retorna ao programa principal.
Se usar:
STOP RUN.
todo o processo termina.
Exemplo Visual
Com GOBACK
MAIN
↓
SUB1
↓
GOBACK
↓
MAIN continua
Com STOP RUN
MAIN
↓
SUB1
↓
STOP RUN
↓
Tudo termina
Uso em Subprogramas
Normalmente:
❌ Evita-se STOP RUN
✅ Usa-se GOBACK
Exemplo Incorreto
PROGRAM-ID. SUBROT1.
DISPLAY 'SUB'.
STOP RUN.
Se chamado por:
CALL 'SUBROT1'
todo o JOB poderá terminar.
Exemplo Correto
PROGRAM-ID. SUBROT1.
DISPLAY 'SUB'.
GOBACK.
STOP RUN em CICS
Programas CICS não devem usar:
STOP RUN
Normalmente utilizam:
EXEC CICS RETURN
END-EXEC
STOP RUN em IMS
Em IMS TM também não é recomendado.
Utilizam-se comandos específicos do ambiente.
STOP RUN em Batch
É onde aparece com maior frequência.
Exemplo:
OPEN INPUT ARQENT.
PERFORM PROCESSA-ARQUIVO.
CLOSE ARQENT.
STOP RUN.
STOP RUN e Arquivos
Antes do STOP RUN é boa prática:
CLOSE ARQENT.
CLOSE ARQSAI.
STOP RUN.
Embora...
O runtime normalmente feche os arquivos automaticamente.
STOP RUN e Language Environment
O LE (Language Environment) interpreta:
STOP RUN
como:
Fim da aplicação
Executando rotinas de limpeza.
Evolução Histórica
Nas versões antigas:
STOP RUN
era praticamente obrigatório.
Hoje:
GOBACK
é mais utilizado em muitos ambientes.
Boas Práticas
✅ Use STOP RUN em programas principais Batch
✅ Use GOBACK em subprogramas
✅ Defina RETURN-CODE quando necessário
✅ Feche arquivos antes de terminar
Erros Comuns
Usar STOP RUN em subprograma
Pode encerrar toda a aplicação.
Usar STOP RUN em CICS
Pode gerar problemas de execução.
Não definir RETURN-CODE
Dificulta automação e controle do Scheduler.
Exemplo Completo
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TOTAL PIC 9(5).
PROCEDURE DIVISION.
MOVE 100 TO WS-TOTAL.
DISPLAY 'TOTAL = ' WS-TOTAL.
MOVE 0 TO RETURN-CODE.
STOP RUN.
Curiosidades
1. STOP RUN existe desde as primeiras versões do COBOL
2. É um dos comandos mais executados do mundo corporativo
3. Milhões de JOBs Batch terminam diariamente através dele
4. Em aplicações modernas, GOBACK costuma substituir STOP RUN em muitos cenários
Resumo Rápido
| Comando | Função |
|---|---|
| STOP RUN | Finaliza o programa |
| GOBACK | Retorna ao chamador |
| RETURN-CODE | Define código de retorno |
| CLOSE | Fecha arquivos |
| EXEC CICS RETURN | Finaliza transação CICS |
| Batch | Uso comum de STOP RUN |
| Subprograma | Preferir GOBACK |
Conclusão
O STOP RUN é o comando responsável por encerrar a execução de um programa COBOL e devolver o controle ao ambiente que o executou. Em programas Batch ele é amplamente utilizado, enquanto em subprogramas normalmente é substituído por GOBACK, que retorna o controle ao programa chamador sem finalizar toda a aplicação.
Sem comentários:
Enviar um comentário