Translate

Mostrar mensagens com a etiqueta COBOL batch. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta COBOL batch. 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.

sexta-feira, 16 de fevereiro de 2007

O que é Processamento Batch em Mainframe?

 

Bellacosa Mainframe o que é processamento batch em Mainframe

O que é Processamento Batch em Mainframe?

O processamento Batch é uma das tecnologias mais importantes da história da computação corporativa e continua sendo responsável por processar bilhões de transações diariamente em bancos, seguradoras, governos e grandes empresas.

Batch significa:

Processamento em Lote

Ou seja, um conjunto de dados é processado automaticamente, sem interação direta do usuário durante a execução.


Definição Simples

Imagine que uma empresa precisa:

  • calcular salários;

  • gerar extratos;

  • processar PIX;

  • atualizar saldos;

  • emitir boletos.

Em vez de fazer isso um registro por vez, o sistema reúne milhares ou milhões de registros e processa tudo em lote.

Isso é Batch.


Analogia Simples

Imagine uma lavanderia industrial.

Processamento Online

Roupa entra
↓
Lavagem imediata
↓
Entrega

Processamento Batch

1000 roupas chegam
↓
Acumula tudo
↓
Processa em lote
↓
Entrega

Batch x Online

BatchOnline
Sem usuárioCom usuário
Processamento em loteTempo real
Grande volumePequeno volume
Horários programadosSob demanda
Alta performanceBaixa latência

Exemplo Online

Cliente consulta saldo:

ATM
↓
CICS
↓
DB2
↓
Resposta

Tudo acontece em segundos.


Exemplo Batch

Fim do dia:

Milhões de contas
↓
Atualizar juros
↓
Gerar extratos
↓
Criar relatórios

Arquitetura Batch no Mainframe

JCL
 ↓
Scheduler
 ↓
JOB
 ↓
Programa COBOL
 ↓
QSAM / VSAM / DB2
 ↓
Relatórios

Componentes Principais

JCL

Job Control Language

Controla a execução.


COBOL

Executa as regras de negócio.


Dataset

Contém os dados.


Scheduler

Agenda a execução.


JES2/JES3

Gerencia filas e spool.


Como um Batch Funciona?

Fluxo típico:

Entrada
 ↓
Leitura
 ↓
Validação
 ↓
Processamento
 ↓
Gravação
 ↓
Relatórios

Exemplo Real

Banco processando pagamentos:

Arquivo PIX
 ↓
COBOL
 ↓
Validação
 ↓
Atualização DB2
 ↓
Relatório

Exemplo de JCL

//PAGTO JOB ...

//STEP1 EXEC PGM=PAGPIX

//ENTRADA DD DSN=BANCO.PIX.INPUT

//SAIDA   DD DSN=BANCO.PIX.OUTPUT

O que acontece?

O z/OS:

  1. Aloca datasets

  2. Carrega programa

  3. Executa COBOL

  4. Gera SYSOUT

  5. Finaliza Job


Ciclo de Vida de um Job Batch

SUBMIT
  ↓
INPUT QUEUE
  ↓
EXECUTION QUEUE
  ↓
RUNNING
  ↓
OUTPUT QUEUE
  ↓
PURGE

Onde vemos isso?

No SDSF:

ST
DA
I
H
O

Horário de Batch

Tradicionalmente:

22:00
 ↓
06:00

Conhecido como:

Janela Batch


Por que à noite?

Menos usuários online.

Mais recursos disponíveis.


Tipos de Batch


Batch Sequencial

Processa arquivo inteiro.

Registro 1
Registro 2
Registro 3

Batch DB2

Processa tabelas.

SELECT
UPDATE
INSERT
DELETE

Batch VSAM

Processa registros indexados.


Batch ETL

Extrai, transforma e carrega dados.

Muito usado em Data Warehouse.


Schedulers Mais Conhecidos


IBM Workload Scheduler (IWS)

Antigo OPC/TWS.


Control-M

Muito usado em bancos.


CA-7

Broadcom.


ESP

Scheduler corporativo.


Automic

Ambientes distribuídos e Mainframe.


Dependências Batch

Um Job pode depender de outro.


Exemplo

JOB-A
 ↓
JOB-B
 ↓
JOB-C

JOB-B só executa se:

JOB-A RC=0000

Return Code (RC)

Código de retorno do Job.


Exemplos

RCSignificado
0000Sucesso
0004Aviso
0008Erro
0012Erro grave
0016Falha crítica

ABEND em Batch

Se ocorrer:

S0C7
S806
SB37

O Job pode parar.


Logs do Batch

Disponíveis no:

SYSOUT
JESMSGLG
JESJCL
JESYSMSG

Exemplo de Fluxo Bancário

PIX RECEBIDOS
        ↓
JOB BATCH
        ↓
ATUALIZA DB2
        ↓
GERA EXTRATO
        ↓
ENVIA RELATÓRIO

Vantagens do Batch

✅ Processa milhões de registros

✅ Excelente performance

✅ Automatização

✅ Baixo custo operacional

✅ Alta confiabilidade


Desvantagens

❌ Não é tempo real

❌ Dependência de janelas

❌ Recuperação pode ser complexa


Curiosidades

1. Alguns bancos processam mais de 10 bilhões de registros por noite

2. Muitos batchs executam há mais de 30 anos sem interrupção

3. O conceito de processamento em lote existe desde a era dos cartões perfurados

4. Grande parte do fechamento bancário mundial ainda depende de batchs COBOL


Erros Comuns de Iniciantes

Confundir Batch com Online


Ignorar Return Codes


Não analisar SYSOUT


Não tratar ABENDs


Não entender dependências do Scheduler


Resumo Rápido

ConceitoFunção
BatchProcessamento em lote
JCLControle execução
COBOLRegras negócio
DatasetDados
SchedulerAgendamento
RCCódigo retorno
SYSOUTLogs
JES2Gerência filas
IWSScheduler IBM
Control-MScheduler corporativo

Conclusão

O processamento Batch é o coração operacional de muitas empresas que utilizam Mainframe IBM Z. Ele permite processar enormes volumes de dados de forma automatizada, segura e eficiente, sendo responsável por atividades críticas como fechamento bancário, folha de pagamento, faturamento, conciliações financeiras e geração de relatórios corporativos.


domingo, 11 de fevereiro de 2007

O que é Dataset QSAM?

 

Bellacosa Mainframe o q é dataset QSAM

O que é Dataset QSAM?

QSAM significa:

Queued Sequential Access Method

É um dos métodos de acesso a arquivos mais antigos, importantes e utilizados da história do mainframe.

Praticamente todo programador COBOL batch trabalha com QSAM em algum momento.


Definição simples

QSAM é:

o método de acesso usado para ler e gravar arquivos sequenciais no z/OS.

Quando falamos de um dataset sequencial (PS), normalmente estamos falando de um arquivo acessado através do QSAM.


Analogia simples

Imagine uma fita cassete.

Você precisa ouvir:

Música 1
 ↓
Música 2
 ↓
Música 3
 ↓
Música 4

Não pode pular diretamente para a música 4.

O QSAM funciona da mesma forma.


Fluxo QSAM

Registro 1
    ↓
Registro 2
    ↓
Registro 3
    ↓
Registro 4

Leitura sequencial.


Onde o QSAM é usado?

Principalmente em:

  • COBOL Batch

  • PL/I

  • Assembler

  • Easytrieve

  • SORT

  • Syncsort

  • DFSORT

  • JCL


Tipo de Dataset

Normalmente:

PS (Physical Sequential)

Exemplo de Dataset QSAM

BANCO.CLIENTES.ARQ

Conteúdo:

00001JOAO SILVA
00002MARIA SOUZA
00003CARLOS LIMA

Como o COBOL acessa?

Na ENVIRONMENT DIVISION:

SELECT ARQCLI
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Na FILE SECTION

FD ARQCLI.

01 REG-CLIENTE.
   05 CLI-ID    PIC 9(5).
   05 CLI-NOME  PIC X(30).

Leitura QSAM

READ ARQCLI

A cada READ:

Registro 1
 ↓
Registro 2
 ↓
Registro 3

Escrita QSAM

WRITE REG-CLIENTE

O novo registro é gravado no final do arquivo.


Operações principais

OPEN

OPEN INPUT ARQCLI

READ

READ ARQCLI

WRITE

WRITE REG-CLIENTE

CLOSE

CLOSE ARQCLI

Como o JCL participa?

//CLIENTE DD DSN=BANCO.CLIENTES.ARQ,
//            DISP=SHR

Fluxo:

JCL
 ↓
DDNAME
 ↓
QSAM
 ↓
COBOL

O que é Buffering?

O QSAM utiliza buffers em memória.

Em vez de ler um registro por vez:

Disco
 ↓
Buffer
 ↓
Programa

Isso melhora muito a performance.


O que significa "Queued"?

O sistema mantém uma fila de registros em memória.

Por isso o nome:

Queued Sequential Access Method

QSAM x BSAM

QSAM

Mais simples.

O sistema controla os buffers.

Programa
 ↓
QSAM
 ↓
Disco

BSAM

Mais baixo nível.

O programador controla os buffers.

Programa
 ↓
Buffer Manual
 ↓
Disco

QSAM x VSAM

QSAM

Acesso sequencial.

1
↓
2
↓
3
↓
4

VSAM KSDS

Acesso por chave.

PROCURA CHAVE 00003
       ↓
Registro encontrado

Vantagens do QSAM

✅ Simples

✅ Excelente para batch

✅ Muito rápido

✅ Fácil programação COBOL

✅ Baixo consumo de recursos


Desvantagens

❌ Não possui índice

❌ Não acessa diretamente um registro específico

❌ Necessita percorrer registros anteriores


Casos de uso clássicos

Folha salarial

Funcionário 1
Funcionário 2
Funcionário 3
...

Relatórios

Cliente 1
Cliente 2
Cliente 3
...

Processamento bancário

Transação 1
Transação 2
Transação 3
...

Exemplo Batch Completo

OPEN INPUT ARQCLI

PERFORM UNTIL EOF = 'S'

   READ ARQCLI
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSAR

   END-READ

END-PERFORM

CLOSE ARQCLI

Curiosidades

1. Grande parte dos batchs do mundo ainda utiliza QSAM

2. O QSAM existe desde os primeiros sistemas OS/360

3. Muitos bancos processam bilhões de registros QSAM diariamente

4. DFSORT e Syncsort trabalham intensamente com datasets QSAM


Erros comuns de iniciantes

Esquecer OPEN


Não tratar EOF


Layout incompatível


DDNAME diferente do ASSIGN


Não verificar FILE STATUS


Resumo rápido

ConceitoSignificado
QSAMQueued Sequential Access Method
Tipo de ArquivoSequencial (PS)
AcessoSequencial
Comando COBOLREAD / WRITE
PerformanceAlta
ÍndiceNão
Uso PrincipalBatch
BufferAutomático

Conclusão

O QSAM é o método de acesso padrão para datasets sequenciais no z/OS. Ele utiliza buffers automáticos e acesso sequencial aos registros, sendo a base de grande parte dos programas COBOL batch executados diariamente nos ambientes IBM Z.