| Bellacosa Mainframe e o comando Goback em Cobol |
O que é o comando GOBACK em COBOL?
O comando GOBACK é utilizado para encerrar a execução de um programa ou retornar o controle para o programa chamador.
Ele é considerado uma das instruções mais importantes do COBOL moderno e, em muitos ambientes, substitui o uso de STOP RUN.
Definição Simples
O GOBACK significa:
Volte para quem me chamou
ou, se não existir programa chamador:
Termine a execução
Sintaxe
GOBACK.
Exemplo Simples
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.
PROCEDURE DIVISION.
DISPLAY 'OLA MUNDO'.
GOBACK.
Resultado:
OLA MUNDO
Programa finalizado.
Como Funciona?
O comportamento depende da forma como o programa foi executado.
Programa Principal
Executado por JCL:
//STEP1 EXEC PGM=PROG1
Fluxo:
JCL
↓
PROG1
↓
GOBACK
↓
Fim da execução
Subprograma
Programa principal:
CALL 'SUBROT1'.
Subprograma:
DISPLAY 'ENTREI'.
GOBACK.
Fluxo:
MAIN
↓
CALL SUBROT1
↓
GOBACK
↓
MAIN continua
Exemplo Completo
Programa Principal:
IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.
PROCEDURE DIVISION.
DISPLAY 'ANTES'.
CALL 'SUB1'.
DISPLAY 'DEPOIS'.
GOBACK.
Subprograma:
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB1.
PROCEDURE DIVISION.
DISPLAY 'SUBPROGRAMA'.
GOBACK.
Saída:
ANTES
SUBPROGRAMA
DEPOIS
GOBACK x STOP RUN
Essa é a comparação mais importante.
| GOBACK | STOP RUN |
|---|---|
| Retorna ao chamador | Finaliza tudo |
| Seguro para subprogramas | Perigoso em subprogramas |
| Recomendado atualmente | Uso tradicional |
| Funciona em programas chamados | Encerra toda aplicação |
Exemplo Visual
GOBACK
MAIN
↓
SUB1
↓
GOBACK
↓
MAIN continua
STOP RUN
MAIN
↓
SUB1
↓
STOP RUN
↓
Tudo termina
Uso em Batch
Muito comum.
OPEN INPUT ARQCLI
PERFORM PROCESSA
CLOSE ARQCLI
GOBACK.
Uso em Subprogramas
É a principal recomendação.
CALL 'CALCULO'
CALL 'VALIDA'
GOBACK.
Uso em Programas DB2
Também é amplamente utilizado.
IF SQLCODE NOT = 0
DISPLAY SQLCODE
GOBACK
END-IF.
GOBACK e Return Code
Pode ser combinado com:
MOVE 8 TO RETURN-CODE.
GOBACK.
Resultado:
CC=0008
GOBACK e Language Environment
No ambiente LE (Language Environment), o GOBACK é tratado de forma inteligente.
Se existir chamador:
Retorna ao chamador
Se não existir:
Finaliza execução
EXIT PROGRAM x GOBACK
Outro comando relacionado.
EXIT PROGRAM
EXIT PROGRAM.
Retorna apenas ao chamador.
GOBACK
GOBACK.
Retorna ao chamador ou termina a aplicação.
Comparação
| Comando | Função |
|---|---|
| EXIT PROGRAM | Retorna ao chamador |
| GOBACK | Retorna ou termina |
| STOP RUN | Finaliza tudo |
Exemplo com EXIT PROGRAM
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB1.
PROCEDURE DIVISION.
DISPLAY 'SUB'.
EXIT PROGRAM.
Boas Práticas
✅ Utilize GOBACK em subprogramas
✅ Utilize GOBACK em programas novos
✅ Defina RETURN-CODE quando necessário
✅ Evite STOP RUN em módulos chamados
✅ Padronize o encerramento dos programas
Erros Comuns
STOP RUN em subprograma
CALL 'SUB1'
SUB1:
STOP RUN.
Resultado:
Aplicação inteira termina
Não retornar código
GOBACK.
Sem:
MOVE 8 TO RETURN-CODE
Pode dificultar automação.
Curiosidades
1. O GOBACK foi introduzido para simplificar o retorno de programas chamados
2. É amplamente recomendado pela IBM para novos desenvolvimentos
3. Funciona perfeitamente com Language Environment (LE)
4. É um dos comandos mais encontrados em aplicações COBOL modernas
5. Em muitos padrões corporativos, STOP RUN é proibido em subprogramas
Resumo Rápido
| Conceito | Função |
|---|---|
| GOBACK | Retorna ao chamador ou termina |
| STOP RUN | Finaliza toda aplicação |
| EXIT PROGRAM | Retorna ao chamador |
| CALL | Chama subprograma |
| RETURN-CODE | Código retorno |
| LE | Language Environment |
| Batch | Uso comum |
| Subprograma | Comando recomendado |
Conclusão
O GOBACK é o comando de encerramento mais flexível do COBOL moderno. Ele permite que um subprograma retorne ao programa chamador sem interromper toda a aplicação e, quando executado em um programa principal, encerra normalmente a execução. Por isso, é considerado a melhor prática para o desenvolvimento COBOL em ambientes z/OS, CICS, IMS e DB2.
Sem comentários:
Enviar um comentário