Translate

Mostrar mensagens com a etiqueta programa principal. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta programa principal. Mostrar todas as mensagens

domingo, 25 de fevereiro de 2007

O que é o comando STOP RUN em COBOL?

  

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

ComandoFunção
STOP RUNFinaliza o programa
GOBACKRetorna ao chamador
RETURN-CODEDefine código de retorno
CLOSEFecha arquivos
EXEC CICS RETURNFinaliza transação CICS
BatchUso comum de STOP RUN
SubprogramaPreferir 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.