Translate

quarta-feira, 28 de fevereiro de 2007

O que é a Cláusula END nos Comandos COBOL?

 

Bellacosa Mainframe e a clausula END no COBOL

O que é a Cláusula END nos Comandos COBOL?

A cláusula END foi introduzida nas versões modernas do COBOL para indicar explicitamente o fim de um comando ou estrutura lógica.

Ela torna os programas:

✅ Mais legíveis

✅ Mais seguros

✅ Mais fáceis de manter

✅ Menos sujeitos a erros de aninhamento


Antes do END

Nas versões antigas do COBOL era comum encontrar:

IF SALDO > 0

   DISPLAY 'SALDO POSITIVO'

ELSE

   DISPLAY 'SALDO NEGATIVO'.

Em estruturas complexas, ficava difícil saber onde terminava cada comando.


Com END

IF SALDO > 0

   DISPLAY 'SALDO POSITIVO'

ELSE

   DISPLAY 'SALDO NEGATIVO'

END-IF.

Agora o término fica explícito.


Por que a IBM criou os ENDs?

Imagine:

IF A = 1

   IF B = 2

      IF C = 3

         DISPLAY 'OK'

      ELSE

         DISPLAY 'ERRO'

Pergunta:

O ELSE pertence a qual IF?

Nem sempre é fácil responder.


Com ENDs:

IF A = 1

   IF B = 2

      IF C = 3

         DISPLAY 'OK'

      ELSE

         DISPLAY 'ERRO'

      END-IF

   END-IF

END-IF.

Não existe dúvida.


Principais Comandos com END


END-IF

Finaliza IF.

IF WS-SALDO > 0

   DISPLAY 'OK'

END-IF.

END-PERFORM

Finaliza PERFORM inline.

PERFORM

   DISPLAY 'PROCESSANDO'

END-PERFORM.

END-READ

Finaliza READ.

READ ARQCLI

   AT END

      MOVE 'S' TO FIM-ARQ

END-READ.

END-WRITE

Finaliza WRITE.

WRITE REG-SAIDA

END-WRITE.

END-REWRITE

Finaliza REWRITE.

REWRITE REG-CLIENTE

END-REWRITE.

END-DELETE

Finaliza DELETE.

DELETE ARQCLI

END-DELETE.

END-SEARCH

Finaliza SEARCH.

SEARCH TAB-CLIENTES

   WHEN CODIGO = 100

      DISPLAY 'ACHOU'

END-SEARCH.

END-EVALUATE

Finaliza EVALUATE.

EVALUATE TRUE

   WHEN SALDO > 0

      DISPLAY 'POSITIVO'

   WHEN OTHER

      DISPLAY 'ZERO'

END-EVALUATE.

END-STRING

Finaliza STRING.

STRING

   NOME
   SOBRENOME

   INTO WS-NOME

END-STRING.

END-UNSTRING

Finaliza UNSTRING.

UNSTRING WS-DADOS

   DELIMITED BY ';'

   INTO CAMPO1
        CAMPO2

END-UNSTRING.

END-COMPUTE

Finaliza COMPUTE.

COMPUTE WS-TOTAL = A + B

END-COMPUTE.

END-CALL

Finaliza CALL.

CALL 'CALCULA'

   USING WS-VALOR

END-CALL.

END-START

Finaliza START.

START ARQVSAM

   KEY >= WS-CHAVE

END-START.

END-ACCEPT

Finaliza ACCEPT.

ACCEPT WS-DATA

END-ACCEPT.

END-DISPLAY

Finaliza DISPLAY.

DISPLAY 'TESTE'

END-DISPLAY.

END-ADD

Finaliza ADD.

ADD 10 TO WS-TOTAL

END-ADD.

END-SUBTRACT

Finaliza SUBTRACT.

SUBTRACT 5 FROM WS-TOTAL

END-SUBTRACT.

END-MULTIPLY

Finaliza MULTIPLY.

MULTIPLY A BY B

END-MULTIPLY.

END-DIVIDE

Finaliza DIVIDE.

DIVIDE A INTO B

END-DIVIDE.

END-JSON

Usado em COBOL moderno.

JSON GENERATE WS-JSON

   FROM CLIENTE

END-JSON.

END-XML

Também muito comum.

XML GENERATE WS-XML

   FROM CLIENTE

END-XML.

END-EXEC

Muito utilizado em DB2 e CICS.


DB2

EXEC SQL

   SELECT NOME

   INTO :WS-NOME

   FROM CLIENTES

END-EXEC.

CICS

EXEC CICS

   SEND MAP('TELA1')

END-EXEC.

END-EXEC é Especial

Porque:

EXEC SQL

e

EXEC CICS

não são comandos COBOL puros.

São pré-processados antes da compilação.


Exemplo Completo

IF WS-SALDO > 0

   PERFORM

      DISPLAY 'SALDO POSITIVO'

   END-PERFORM

ELSE

   DISPLAY 'SEM SALDO'

END-IF.

Benefícios

✅ Legibilidade

✅ Menos erros

✅ Melhor manutenção

✅ Facilita debug

✅ Facilita revisões de código


Padrão Corporativo

Hoje a maioria das empresas exige:

END-IF
END-PERFORM
END-EVALUATE
END-READ
END-EXEC

mesmo quando opcionais.


Erros Comuns

Esquecer END-IF

IF A = 1

   DISPLAY 'OK'

Pode gerar erro de compilação.


Misturar ENDs

IF A = 1

   PERFORM

      DISPLAY 'OK'

END-IF

Compilador detecta inconsistência.


Curiosidade

Nas décadas de 1970 e 1980 muitos programas COBOL eram escritos sem ENDs, utilizando apenas pontos finais (.) para encerrar blocos. Em aplicações modernas, os ENDs são considerados uma das melhores práticas de programação COBOL.


Resumo Rápido

ComandoTerminador
IFEND-IF
PERFORMEND-PERFORM
READEND-READ
EVALUATEEND-EVALUATE
SEARCHEND-SEARCH
STRINGEND-STRING
UNSTRINGEND-UNSTRING
CALLEND-CALL
JSONEND-JSON
XMLEND-XML
EXEC SQLEND-EXEC
EXEC CICSEND-EXEC

Conclusão

A cláusula END em COBOL serve para indicar explicitamente o término de comandos e blocos lógicos. Ela melhora a legibilidade, reduz ambiguidades, facilita a manutenção e é considerada uma prática obrigatória em praticamente todos os projetos COBOL modernos, especialmente em ambientes IBM Z, CICS, IMS, DB2, XML e JSON.


terça-feira, 27 de fevereiro de 2007

Chamando Subprogramas em COBOL – Tipos de comandos CALL

 

Bellacosa Mainframe e o comando CALL e subprogramas em COBOL

Chamando Subprogramas em COBOL – Tipos de comandos CALL

Um dos recursos mais importantes do COBOL é a capacidade de dividir uma aplicação em vários módulos menores chamados:

Subprogramas

Isso permite reutilização de código, manutenção mais simples e melhor organização das aplicações Mainframe.


O que é um Subprograma?

É um programa COBOL que é chamado por outro programa.


Estrutura

Programa Principal
        ↓
     CALL
        ↓
   Subprograma
        ↓
     GOBACK
        ↓
Programa Principal

Exemplo Simples

Programa Principal:

CALL 'CALCULA'.

Subprograma:

IDENTIFICATION DIVISION.
PROGRAM-ID. CALCULA.

PROCEDURE DIVISION.

DISPLAY 'ENTREI NO SUBPROGRAMA'.

GOBACK.

Resultado:

ENTREI NO SUBPROGRAMA

Tipos de CALL

Existem vários tipos de chamada.


1. CALL Estático

O nome do programa é conhecido durante a compilação.

CALL 'CALCULA'

Características:

✅ Mais rápido

✅ Verificação na Linkedição

✅ Muito usado em Batch


Fluxo:

MAIN
 ↓
CALL 'CALCULA'
 ↓
CALCULA

2. CALL Dinâmico

O nome do programa está em uma variável.

01 WS-PGM PIC X(8).

MOVE 'CALCULA' TO WS-PGM.

CALL WS-PGM.

Características:

✅ Flexibilidade

✅ Escolha em tempo de execução

✅ Muito usado em frameworks


Fluxo:

WS-PGM
   ↓
CALCULA
VALIDA
CONSULTA

Exemplo

IF TIPO = 'A'

   MOVE 'CALCA' TO WS-PGM

ELSE

   MOVE 'CALCB' TO WS-PGM

END-IF

CALL WS-PGM

3. Nested Program Call

Programa interno chamando outro.

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.

PROCEDURE DIVISION.

CALL 'SUB1'.

PROGRAM-ID. SUB1.

CALL 'SUB2'.

Fluxo:

MAIN
 ↓
SUB1
 ↓
SUB2

4. CALL Recursivo

Um programa chama ele próprio.

Necessário:

RECURSIVE PROGRAM

Exemplo:

IDENTIFICATION DIVISION.
PROGRAM-ID. FATORIAL
RECURSIVE.

Fluxo:

FATORIAL
    ↓
FATORIAL
    ↓
FATORIAL

5. CALL para Módulos LE

Chamada de rotinas do Language Environment.

Exemplo:

CALL 'CEE3ABD'

Usado para:

  • ABEND controlado

  • Datas

  • Hora

  • Serviços LE


6. CALL para Rotinas Assembler

Muito comum em Mainframe.

CALL 'ROTASM01'

Fluxo:

COBOL
 ↓
ASSEMBLER
 ↓
COBOL

7. CALL para CICS

Em CICS normalmente usamos:

EXEC CICS LINK
     PROGRAM('PROG2')
END-EXEC.

Ou

EXEC CICS XCTL
     PROGRAM('PROG2')
END-EXEC.

LINK x XCTL

LINK

Retorna ao chamador.

PROG1
 ↓
LINK
 ↓
PROG2
 ↓
Retorna

XCTL

Não retorna.

PROG1
 ↓
XCTL
 ↓
PROG2

Passagem de Parâmetros

O mais comum.


Programa Principal

CALL 'CALCULA'
USING WS-VALOR.

Subprograma

LINKAGE SECTION.

01 LK-VALOR PIC 9(5).

PROCEDURE DIVISION USING LK-VALOR.

Fluxo

MAIN
 ↓
USING
 ↓
LINKAGE

Múltiplos Parâmetros

Programa Principal:

CALL 'CALCULA'

USING

   WS-NOME
   WS-SALDO
   WS-DATA.

Subprograma:

PROCEDURE DIVISION USING

   LK-NOME
   LK-SALDO
   LK-DATA.

BY REFERENCE

Padrão do COBOL.

Passa endereço.

CALL 'PROG1'

USING BY REFERENCE WS-NOME.

Pode alterar o valor original.


BY CONTENT

Passa cópia.

CALL 'PROG1'

USING BY CONTENT WS-NOME.

Não altera a variável original.


BY VALUE

Passa valor diretamente.

Muito usado em integração com C.

CALL 'PROG1'

USING BY VALUE WS-CODIGO.

Exemplo

MOVE 100 TO WS-VALOR

CALL 'TESTE'

USING BY CONTENT WS-VALOR

Subprograma altera:

MOVE 500 TO LK-VALOR

Resultado:

WS-VALOR = 100

CANCEL

Remove programa da memória.

CANCEL 'CALCULA'

Muito usado após CALL dinâmico.


Fluxo

CALL
 ↓
Executa
 ↓
CANCEL
 ↓
Memória liberada

CALL e Load Modules

O programa chamado precisa estar:

STEPLIB
JOBLIB
LINKLIST
LPA

Erros Comuns

S806

Programa não encontrado.

S806

U4038

Erro interno.


S0C4

Parâmetro incorreto.


Boas Práticas

✅ Usar GOBACK nos subprogramas

✅ Validar parâmetros recebidos

✅ Documentar USING

✅ Evitar excesso de níveis CALL

✅ Utilizar COPYBOOK para parâmetros


Exemplo Corporativo

MAIN
 │
 ├── VALIDA
 │
 ├── CONSULTA-DB2
 │
 ├── CALCULA-JUROS
 │
 ├── GERA-ARQUIVO
 │
 └── LOG-ERRO

Cada módulo é um subprograma especializado.


Resumo Rápido

TipoCaracterística
CALL EstáticoNome fixo
CALL DinâmicoNome variável
NestedPrograma dentro de programa
RecursivoChama a si próprio
LINK CICSRetorna
XCTL CICSNão retorna
BY REFERENCEPassa endereço
BY CONTENTPassa cópia
BY VALUEPassa valor
CANCELRemove da memória

Conclusão

O comando CALL é o mecanismo que permite a modularização das aplicações COBOL. Através dele, programas podem compartilhar regras de negócio, reutilizar código e organizar grandes sistemas corporativos em componentes menores. Dominar CALL estático, dinâmico, parâmetros USING, BY REFERENCE, BY CONTENT, BY VALUE, LINK, XCTL e CANCEL é essencial para qualquer programador COBOL que deseje atuar em ambientes Mainframe modernos.

segunda-feira, 26 de fevereiro de 2007

O que é o comando GOBACK em COBOL?

 

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.

GOBACKSTOP RUN
Retorna ao chamadorFinaliza tudo
Seguro para subprogramasPerigoso em subprogramas
Recomendado atualmenteUso tradicional
Funciona em programas chamadosEncerra 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

ComandoFunção
EXIT PROGRAMRetorna ao chamador
GOBACKRetorna ou termina
STOP RUNFinaliza 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

ConceitoFunção
GOBACKRetorna ao chamador ou termina
STOP RUNFinaliza toda aplicação
EXIT PROGRAMRetorna ao chamador
CALLChama subprograma
RETURN-CODECódigo retorno
LELanguage Environment
BatchUso comum
SubprogramaComando 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.

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.

sábado, 24 de fevereiro de 2007

O que é COBOL Bug Trap e Captura de ABEND?

Bellacosa Mainframe o que é Bug Trap em Cobol


O que é COBOL Bug Trap e Captura de ABEND?

Em ambientes Mainframe, especialmente em aplicações críticas, um dos maiores desafios é descobrir rapidamente:

Por que o programa falhou?
Onde ocorreu o erro?
Qual variável causou o problema?

Para isso existem mecanismos conhecidos como:

Bug Trap

e

Captura de ABEND


O que é um ABEND?

ABEND significa:

Abnormal End

Ou seja:

Finalização Anormal

O programa termina devido a um erro.


Exemplos de ABENDs comuns

ABENDCausa
S0C7Erro de dados numéricos
S0C4Violação de memória
S806Programa não encontrado
SB37Falta de espaço
U4038Erro definido pela aplicação
ASRAExceção em CICS

Exemplo de S0C7

MOVE 'ABC' TO WS-VALOR-NUM
ADD 1 TO WS-VALOR-NUM

Resultado:

S0C7

O Problema

Sem diagnóstico adequado você recebe apenas:

JOB ABENDED

e precisa descobrir:

Qual campo?
Qual linha?
Qual programa?

O que é Bug Trap?

Bug Trap é uma técnica ou ferramenta que captura informações detalhadas antes do programa terminar.

Objetivo:

Transformar um ABEND misterioso
em um erro fácil de analisar

O que o Bug Trap captura?

  • Nome do programa

  • Data e hora

  • Parágrafo COBOL

  • Variáveis

  • SQLCODE

  • CICS EIBRESP

  • Chave VSAM

  • Dados recebidos

  • Stack de chamadas


Fluxo Simplificado

Erro
 ↓
Bug Trap
 ↓
Captura informações
 ↓
Gera relatório
 ↓
ABEND

Exemplo

Sem Bug Trap:

S0C7

Com Bug Trap:

PROGRAMA = FIN001

PARAGRAFO = CALCULA-JUROS

CAMPO = WS-SALDO

VALOR = ABCDEF

ABEND = S0C7

Captura de ABEND no COBOL

Uma prática comum é criar rotinas padronizadas.


Exemplo

IF SQLCODE NOT = 0

   PERFORM TRATA-ERRO

END-IF

Rotina de Tratamento

TRATA-ERRO.

DISPLAY 'ERRO SQL'

DISPLAY SQLCODE

MOVE 16 TO RETURN-CODE

STOP RUN.

Capturando FILE STATUS

Muito comum em arquivos.


READ ARQCLIENTE

IF WS-FS NOT = '00'

   DISPLAY 'ERRO LEITURA'

   DISPLAY WS-FS

END-IF

Captura de SQLCODE

Programas DB2.


EXEC SQL

   SELECT ...

END-EXEC

IF SQLCODE NOT = 0

   DISPLAY SQLCODE

END-IF

Captura de CICS

Programas online.


EXEC CICS

   READ FILE(...)

   RESP(WS-RESP)

END-EXEC

IF WS-RESP NOT = DFHRESP(NORMAL)

   DISPLAY WS-RESP

END-IF

Uso de Declaratives

COBOL possui tratamento nativo.


DECLARATIVES.

ARQ-ERROR SECTION.

USE AFTER STANDARD ERROR PROCEDURE
ON ARQCLIENTE.

DISPLAY 'ERRO ARQUIVO'.

END DECLARATIVES.

LE Condition Handler

No ambiente IBM Language Environment (LE).


Pode interceptar:

S0C7
S0C4
Overflow
Underflow

Ferramentas modernas utilizam LE para coletar:

  • Call Stack

  • Variáveis

  • Offset

  • PSW


Ferramentas Comerciais


IBM Fault Analyzer

Uma das mais utilizadas.

Captura automaticamente:

  • ABEND

  • Variáveis

  • Fonte COBOL

  • Call Stack


IBM Application Performance Analyzer

Auxilia análise de execução.


Abend-AID

Muito popular em bancos.

Produz relatórios detalhados.


Xpediter

Debug e análise de falhas.


Exemplo Fault Analyzer

Após um S0C7:

ABEND S0C7

PROGRAMA:
FIN001

PARAGRAFO:
CALCULA-PARCELA

CAMPO:
WS-VALOR

CONTEUDO:
ABC123

Exemplo Abend-AID

Mostra:

Linha COBOL

Variáveis

Offsets

Call Stack

Storage

Captura Manual (Estilo Bellacosa)

Uma prática comum é criar um copybook corporativo.


COPY LOGERRO.

Sempre que ocorrer erro:

PERFORM REGISTRA-ERRO

Grava:

Programa

Parágrafo

Usuário

Data

Hora

SQLCODE

File Status

Mensagem

Exemplo de Log

PROGRAMA=FIN001

PARAGRAFO=ATUALIZA-SALDO

SQLCODE=-911

USUARIO=BELLA01

DATA=20260801

HORA=14:35:21

Captura de Call Stack

Especialmente importante em:

CALL
CALL
CALL
CALL

Exemplo:

MAIN
 ↓
CALCULO
 ↓
JUROS
 ↓
VALIDA

Erro ocorreu em:

VALIDA

Captura de Dumps

Ferramentas analisam:

SYSUDUMP
SYSABEND
CEEDUMP

CEEDUMP

Muito usado com Language Environment.

Contém:

  • variáveis;

  • registradores;

  • call stack;

  • offsets.


Boas Práticas

✅ Sempre verificar FILE STATUS

✅ Sempre verificar SQLCODE

✅ Tratar RESP em CICS

✅ Gerar logs padronizados

✅ Produzir CEEDUMP

✅ Utilizar Fault Analyzer ou Abend-AID

✅ Registrar contexto do erro


Curiosidade

Em muitos bancos, mais de 90% dos incidentes COBOL são resolvidos sem abrir um dump completo porque as rotinas de Bug Trap já registram:

Programa
Parágrafo
Campo
Valor inválido
Usuário
Transação

permitindo localizar a causa raiz em poucos minutos.


Resumo Rápido

ConceitoFunção
ABENDFinalização anormal
S0C7Erro numérico
S0C4Violação memória
Bug TrapCaptura contexto do erro
CEEDUMPDump do LE
SYSUDUMPDump sistema
SQLCODEErro DB2
FILE STATUSErro arquivo
RESPErro CICS
Fault AnalyzerDiagnóstico IBM
Abend-AIDDiagnóstico avançado
XpediterDebug

Conclusão

Bug Trap é o conjunto de técnicas e ferramentas utilizadas para capturar informações detalhadas antes ou durante um ABEND. Em ambientes COBOL corporativos, ele é essencial para acelerar a análise de incidentes, identificar a causa raiz e reduzir drasticamente o tempo de diagnóstico de erros em aplicações Batch, CICS, IMS e DB2.


sexta-feira, 23 de fevereiro de 2007

Como se Usa JSON em COBOL?

 

Bellacosa Mainframe e o Json no COBOL

Como se Usa JSON em COBOL?

Nos últimos anos, o JSON (JavaScript Object Notation) tornou-se o formato mais utilizado para integração entre aplicações modernas, APIs REST, Mobile, Cloud e Mainframe.

Hoje é comum um programa COBOL:

  • receber JSON de uma API;

  • gerar JSON para sistemas externos;

  • integrar com z/OS Connect;

  • consumir serviços REST;

  • trocar informações com Java, .NET, Python e Node.js.


O que é JSON?

JSON significa:

JavaScript Object Notation

É um formato leve para troca de dados.

Exemplo:

{
   "id":1001,
   "nome":"JOAO SILVA",
   "saldo":5000.00
}

Por que JSON se tornou popular?

Comparado ao XML:

✅ Mais simples

✅ Menor tamanho

✅ Mais rápido

✅ Fácil leitura

✅ Ideal para APIs REST


JSON no Enterprise COBOL

As versões modernas do Enterprise COBOL possuem suporte nativo através dos comandos:

JSON GENERATE

Converte COBOL → JSON

JSON PARSE

Converte JSON → COBOL


JSON GENERATE

Transforma uma estrutura COBOL em JSON.


Estrutura COBOL

01 CLIENTE.
   05 ID-CLI      PIC 9(5).
   05 NOME-CLI    PIC X(30).
   05 SALDO-CLI   PIC 9(7)V99.

Dados

MOVE 1001 TO ID-CLI.
MOVE 'JOAO SILVA' TO NOME-CLI.
MOVE 5000 TO SALDO-CLI.

Geração JSON

01 WS-JSON PIC X(5000).

JSON GENERATE WS-JSON
   FROM CLIENTE
END-JSON.

Resultado

{
   "ID-CLI":1001,
   "NOME-CLI":"JOAO SILVA",
   "SALDO-CLI":5000
}

JSON PARSE

Faz o processo inverso.

JSON → COBOL


JSON Recebido

{
   "id":1001,
   "nome":"JOAO SILVA"
}

Estrutura COBOL

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

Parsing

JSON PARSE WS-JSON
   INTO CLIENTE
END-JSON.

Resultado

ID-CLI    = 1001
NOME-CLI  = JOAO SILVA

Tratamento de Erros

Após JSON GENERATE ou JSON PARSE:

IF JSON-CODE NOT = 0
   DISPLAY 'ERRO JSON'
END-IF

JSON-CODE

Variável especial do COBOL.

0 = Sucesso
≠0 = Erro

Exemplo Completo

WORKING-STORAGE SECTION.

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

01 WS-JSON PIC X(500).

PROCEDURE DIVISION.

MOVE 1001 TO ID-CLI.
MOVE 'JOAO SILVA' TO NOME-CLI.

JSON GENERATE WS-JSON
   FROM CLIENTE
END-JSON.

DISPLAY WS-JSON.

STOP RUN.

JSON e APIs REST

Arquitetura típica:

Mobile App
      ↓
REST API
      ↓
JSON
      ↓
z/OS Connect
      ↓
COBOL
      ↓
DB2

JSON e z/OS Connect

O z/OS Connect permite expor programas COBOL como APIs REST.

Fluxo:

JSON
  ↓
REST
  ↓
z/OS Connect
  ↓
Copybook COBOL
  ↓
Programa COBOL

Exemplo API

Requisição:

{
   "conta":"12345"
}

Resposta:

{
   "saldo":1500.75
}

JSON e CICS

CICS pode consumir APIs REST utilizando:

  • CICS Web Services

  • CICS TG

  • URIMAP

  • PIPELINE

  • z/OS Connect


JSON e DB2

Dados do DB2 podem ser convertidos para JSON.

Exemplo:

SELECT NOME,
       SALDO
FROM CLIENTES

{
   "nome":"JOAO",
   "saldo":5000
}

JSON x XML

XML

<nome>JOAO</nome>

JSON

{
  "nome":"JOAO"
}

Comparação

CaracterísticaJSONXML
TamanhoMenorMaior
LeituraSimplesMais complexa
APIs RESTExcelentePouco usado
SOAPNãoSim
PerformanceMelhorMenor

Copybook e JSON

Muito comum:

COPY CLIENTE.

JSON PARSE
JSON GENERATE

API REST

Casos de Uso Reais

Bancos

  • PIX

  • Open Finance

  • Mobile Banking


Seguradoras

  • Cotações

  • Apólices


Governo

  • APIs fiscais

  • Integrações


E-commerce

  • Pedidos

  • Pagamentos


Benefícios

✅ Integração moderna

✅ APIs REST

✅ Cloud

✅ Mobile

✅ Menor volume de dados

✅ Suporte nativo COBOL


Cuidados

❌ Nomes JSON devem coincidir com estruturas COBOL

❌ Tratar JSON-CODE

❌ Validar campos obrigatórios

❌ Considerar conversão de formatos numéricos


Resumo Rápido

ComandoFunção
JSON GENERATECOBOL → JSON
JSON PARSEJSON → COBOL
JSON-CODECódigo retorno
z/OS ConnectREST para COBOL
API RESTComunicação moderna
CopybookEstrutura dados
DB2Fonte dos dados

Dica para Mainframe Moderno

Hoje, o caminho mais comum em grandes bancos é:

Aplicativo Mobile
        ↓
API REST
        ↓
JSON
        ↓
z/OS Connect
        ↓
COBOL
        ↓
DB2

Dominar JSON GENERATE, JSON PARSE, Copybooks, z/OS Connect e APIs REST é uma das habilidades mais valiosas para o programador COBOL moderno que deseja integrar aplicações Mainframe ao mundo digital atual.


quinta-feira, 22 de fevereiro de 2007

Como se Usa XML em COBOL?

 

Bellacosa Mainframe e o XML no COBOL

Como se Usa XML em COBOL?

O XML tornou-se muito importante no mundo Mainframe quando bancos, seguradoras e governos passaram a integrar aplicações COBOL com sistemas Web, Java, .NET, APIs e serviços externos.

Hoje é comum um programa COBOL:

  • receber XML;

  • gerar XML;

  • consumir Web Services;

  • integrar com CICS Web Services;

  • integrar com z/OS Connect;

  • trocar mensagens SOAP.


O que é XML?

XML significa:

eXtensible Markup Language

É um formato textual para troca de informações.

Exemplo:

<cliente>
   <id>1001</id>
   <nome>JOAO SILVA</nome>
   <saldo>5000.00</saldo>
</cliente>

Por que XML foi importante no Mainframe?

Antes do XML, a troca de dados era normalmente feita através de:

Arquivos Flat
QSAM
VSAM
Copybooks

O XML permitiu integração entre plataformas diferentes.


XML no COBOL Moderno

O Enterprise COBOL possui dois comandos especiais:

XML GENERATE

Gera XML.

XML PARSE

Lê XML.


XML GENERATE

Transforma uma estrutura COBOL em XML.


Exemplo COBOL

01 CLIENTE.
   05 ID-CLI      PIC 9(5).
   05 NOME-CLI    PIC X(30).
   05 SALDO-CLI   PIC 9(7)V99.

Dados

MOVE 1001 TO ID-CLI
MOVE 'JOAO SILVA' TO NOME-CLI
MOVE 5000 TO SALDO-CLI

Geração XML

XML GENERATE XML-SAIDA
   FROM CLIENTE
END-XML

Resultado

<CLIENTE>
   <ID-CLI>1001</ID-CLI>
   <NOME-CLI>JOAO SILVA</NOME-CLI>
   <SALDO-CLI>5000</SALDO-CLI>
</CLIENTE>

Estrutura Completa

01 XML-SAIDA PIC X(5000).

XML GENERATE XML-SAIDA
   FROM CLIENTE
END-XML.

XML PARSE

Faz o caminho inverso.

Transforma XML em dados COBOL.


XML Recebido

<CLIENTE>
   <ID>1001</ID>
   <NOME>JOAO</NOME>
</CLIENTE>

Comando

XML PARSE XML-ENTRADA

   PROCESSING PROCEDURE IS PROC-XML

END-XML

Processing Procedure

A cada tag encontrada o COBOL chama um parágrafo.


Exemplo

PROC-XML.

DISPLAY XML-EVENT
DISPLAY XML-TEXT.

Variáveis Automáticas

Durante o PARSE:

XML-CODE
XML-EVENT
XML-TEXT

são preenchidas automaticamente.


XML-CODE

Retorno da operação.

0 = OK

XML-EVENT

Evento encontrado.

Exemplo:

START-OF-ELEMENT
END-OF-ELEMENT
CONTENT-CHARACTERS

XML-TEXT

Conteúdo da tag.


Exemplo Prático

XML:

<NOME>JOAO</NOME>

Durante o PARSE:

EVENT = CONTENT-CHARACTERS
TEXT  = JOAO

XML e CICS

Muito utilizado em Web Services.

Fluxo:

Cliente
   ↓
SOAP XML
   ↓
CICS
   ↓
Programa COBOL

Exemplo SOAP

<soap:Envelope>
   <soap:Body>

      <ConsultaSaldo>

         <Conta>12345</Conta>

      </ConsultaSaldo>

   </soap:Body>
</soap:Envelope>

CICS Web Services

O CICS pode:

✅ Receber XML

✅ Converter XML para COBOL

✅ Converter COBOL para XML

automaticamente.


DFHWS2LS

Ferramenta CICS.

Converte:

XML
 ↓
COBOL Copybook

DFHLS2WS

Faz o inverso.

Copybook
 ↓
XML

XML e z/OS Connect

Hoje muitas empresas utilizam:

REST API
       ↓
JSON
       ↓
z/OS Connect
       ↓
COBOL

Mas internamente ainda existem muitos serviços XML.


XML e DB2

Dados DB2 podem ser transformados em XML.


Exemplo

SELECT *
FROM CLIENTES

<CLIENTE>
...
</CLIENTE>

XML Schema (XSD)

Define regras para XML.


Exemplo

<xs:element name="CLIENTE"/>

Benefícios do XML

✅ Padronização

✅ Interoperabilidade

✅ Legibilidade

✅ Integração entre plataformas

✅ Suporte nativo no COBOL


Desvantagens

❌ Verboso

❌ Arquivos grandes

❌ Parsing mais lento que JSON


XML x JSON

XML:

<NOME>JOAO</NOME>

JSON:

{
  "nome":"JOAO"
}

Hoje JSON é mais comum em APIs REST.

Mas XML continua muito presente em:

  • SOAP

  • Bancos

  • Governo

  • Seguros

  • Mainframe legado


Exemplo Completo XML GENERATE

WORKING-STORAGE SECTION.

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

01 XML-SAIDA PIC X(1000).

PROCEDURE DIVISION.

MOVE 1001 TO ID-CLI
MOVE 'JOAO SILVA' TO NOME-CLI

XML GENERATE XML-SAIDA
   FROM CLIENTE
END-XML

DISPLAY XML-SAIDA

STOP RUN.

Resumo Rápido

ComandoFunção
XML GENERATECOBOL → XML
XML PARSEXML → COBOL
XML-CODECódigo retorno
XML-EVENTEvento XML
XML-TEXTConteúdo XML
DFHWS2LSXML → Copybook
DFHLS2WSCopybook → XML
SOAPWeb Service XML
XSDSchema XML

Dica para quem estuda Mainframe

Como você já tem interesse em CICS Web Services e z/OS Connect, o próximo passo natural é montar um laboratório com:

COBOL
   ↓
COPYBOOK
   ↓
DFHLS2WS
   ↓
WSDL
   ↓
SOAP XML
   ↓
CICS Web Services

Esse é exatamente o caminho utilizado em muitos bancos para expor programas COBOL como serviços consumidos por aplicações Java, .NET, Mobile e APIs corporativas.

quarta-feira, 21 de fevereiro de 2007

Introdução à Segurança no z/OS

 

Bellacosa Mainframe introdução a segurança no Z/os

Introdução à Segurança no z/OS

A segurança é um dos pilares fundamentais do ambiente IBM Z e z/OS. Todos os dias, bancos, seguradoras, governos e grandes corporações processam bilhões de transações que dependem de mecanismos robustos de autenticação, autorização, auditoria e proteção de dados.

Sem segurança adequada, qualquer usuário poderia acessar informações sigilosas, executar comandos críticos ou alterar dados corporativos.

Por isso, o z/OS foi projetado com segurança integrada desde sua concepção.


O que é Segurança no z/OS?

Segurança no z/OS é o conjunto de mecanismos que garante:

✅ Confidencialidade dos dados

✅ Integridade das informações

✅ Disponibilidade dos serviços

✅ Auditoria das operações

✅ Controle de acesso aos recursos


Os Três Pilares da Segurança

Confidencialidade

Somente pessoas autorizadas acessam informações.

Exemplo:

Folha salarial
Dados bancários
Informações médicas

Integridade

Os dados não podem ser alterados indevidamente.

Exemplo:

Saldo bancário
Contratos
Registros fiscais

Disponibilidade

Os sistemas devem estar acessíveis quando necessários.

Exemplo:

Internet Banking
PIX
Cartões
Caixas eletrônicos

Arquitetura de Segurança

Usuário
    ↓
Logon
    ↓
RACF
    ↓
Validação
    ↓
Autorização
    ↓
Recurso

Componentes de Segurança

RACF

Resource Access Control Facility

Principal software de segurança da IBM.

Controla:

  • usuários;

  • grupos;

  • permissões;

  • datasets;

  • CICS;

  • DB2;

  • JES2;

  • recursos do sistema.


ACF2

Solução alternativa de segurança da Broadcom.


Top Secret

Outra solução de segurança da Broadcom.


Autenticação

Processo de verificar:

Quem é você?

Normalmente usando:

  • usuário;

  • senha;

  • certificado digital;

  • token MFA.


Autorização

Processo de verificar:

O que você pode fazer?

Exemplo:

Usuário JOAO
↓
Pode ler dataset
↓
Não pode alterar

Auditoria

Processo de registrar eventos de segurança.

Exemplos:

  • Logon

  • Logoff

  • Alteração de perfil

  • Tentativas de acesso

  • Falhas de autenticação


SMF

System Management Facility

Responsável pelo armazenamento de registros de auditoria.


Proteção de Datasets

Um dos recursos mais protegidos do z/OS.

Exemplo:

BANCO.CLIENTES
BANCO.SALARIOS
BANCO.CARTOES

O RACF controla quem pode:

  • Ler

  • Atualizar

  • Excluir

  • Administrar


Níveis de Acesso

PermissãoDescrição
NONESem acesso
READLeitura
UPDATEAlteração
CONTROLControle avançado
ALTERControle total

Segurança no TSO/ISPF

Ao executar:

LOGON

o RACF valida:

  • usuário;

  • senha;

  • grupo;

  • privilégios.


Segurança no CICS

Controla:

  • transações;

  • menus;

  • telas;

  • programas.

Exemplo:

SALD
PIX1
PAGT

Nem todos os usuários podem executar todas as transações.


Segurança no DB2

Controla:

  • tabelas;

  • views;

  • packages;

  • plans;

  • comandos administrativos.


Segurança no JES2

Controla:

  • SUBMIT de Jobs;

  • CANCEL;

  • HOLD;

  • OUTPUT;

  • acesso ao spool.


Criptografia no IBM Z

O IBM Z possui recursos avançados de criptografia em hardware.


Dados em Repouso

Proteção de datasets armazenados.


Dados em Trânsito

Proteção de comunicações:

TLS
SSL
AT-TLS

Criptografia Pervasiva

Recurso moderno do IBM Z que permite criptografar grandes volumes de dados com baixo impacto de desempenho.


Multifactor Authentication (MFA)

Além da senha:

Usuário
+
Token
+
Aplicativo
+
Certificado

Single Sign-On (SSO)

Permite autenticação única para múltiplas aplicações.


Segurança de Rede

Ferramentas comuns:

  • TCP/IP Security

  • AT-TLS

  • IPSec

  • Firewalls


Segurança Operacional

Proteção de comandos como:

START
STOP
CANCEL
VARY

Apenas operadores autorizados podem executá-los.


Conceito de Menor Privilégio

Boa prática fundamental:

Dar apenas o acesso necessário

Nem mais, nem menos.


Segregação de Funções

Exemplo:

PerfilFunção
OperadorOperação
SysprogSistema
DBABanco
SegurançaRACF
DesenvolvedorAplicações

Principais Ameaças

  • Senhas fracas

  • Acessos indevidos

  • Engenharia social

  • Privilégios excessivos

  • Falta de auditoria

  • Configurações incorretas


Boas Práticas

✅ Usar MFA

✅ Revisar acessos periodicamente

✅ Auditar eventos críticos

✅ Aplicar princípio do menor privilégio

✅ Segregar funções

✅ Proteger datasets sensíveis

✅ Monitorar logs SMF


Curiosidades

1. O RACF existe desde 1976

2. O IBM Z é considerado uma das plataformas mais seguras do mundo

3. Bancos globais processam trilhões de dólares utilizando z/OS

4. Recursos modernos incluem MFA, TLS 1.3 e criptografia pervasiva

5. Grande parte das transações financeiras mundiais passa por sistemas protegidos por RACF


Resumo Rápido

ConceitoFunção
RACFControle de acesso
AutenticaçãoQuem é você
AutorizaçãoO que pode fazer
AuditoriaRegistro de eventos
SMFLogs de segurança
MFAMúltiplos fatores
CriptografiaProteção dos dados
Dataset SecurityProteção de arquivos
CICS SecurityProteção transacional
DB2 SecurityProteção de dados

Conclusão

A segurança no z/OS é um conjunto abrangente de tecnologias, processos e controles que protegem usuários, aplicações, bancos de dados e datasets corporativos. Utilizando ferramentas como RACF, criptografia avançada, MFA e auditoria SMF, o IBM Z mantém um dos ambientes computacionais mais seguros, confiáveis e resilientes do mundo.


terça-feira, 20 de fevereiro de 2007

O que é RACF?

 

Bellacosa Mainframe o que é RACF


O que é RACF?

RACF significa:

Resource Access Control Facility

É o principal sistema de segurança do ambiente IBM Mainframe desenvolvido pela IBM.

O RACF controla:

  • usuários;

  • senhas;

  • grupos;

  • datasets;

  • transações CICS;

  • recursos do sistema;

  • comandos operacionais;

  • aplicações.

Em resumo:

RACF é o "porteiro" do Mainframe.


Definição Simples

Sempre que alguém tenta acessar:

TSO
CICS
IMS
DB2
Dataset
JES2
Console

o RACF verifica:

Quem é você?
O que pode fazer?
Você tem autorização?

Se a resposta for não:

ACESSO NEGADO

Analogia Simples

Imagine um prédio corporativo.

O RACF seria:

  • recepção;

  • crachá;

  • catraca;

  • segurança.

Sem autorização ninguém entra.


Arquitetura Simplificada

Usuário
    ↓
Login
    ↓
RACF
    ↓
Validação
    ↓
Sistema

O que o RACF protege?

Usuários

USERID

Datasets

BANCO.CLIENTES

Transações CICS

SALD
PAGT
PIX1

Planos DB2

PLAN
PACKAGE

Comandos Operacionais

CANCEL
START
STOP

Conceitos Fundamentais

USER

Usuário do sistema.

Exemplo:

VBELLA01

GROUP

Grupo de usuários.

Exemplo:

DESENV
OPERACAO
SEGURANCA

RESOURCE

Recurso protegido.

Exemplo:

DATASET
CICS
DB2
JES

Estrutura RACF

GROUP
   ↓
USER
   ↓
PERMISSÕES

Exemplo

GRUPO: DESENV

USUÁRIO:
JOAO
MARIA
CARLOS

Classe de Recursos

O RACF organiza recursos em classes.


DATASET

Protege arquivos.

DATASET

CICS

Protege transações.

TCICSTRN

JES

Protege Jobs.

JESSPOOL

OPERCMDS

Protege comandos.

OPERCMDS

Como Funciona?

Usuário tenta acessar:

BANCO.CLIENTES

RACF verifica:

Existe usuário?
      ↓
Possui permissão?
      ↓
Liberar ou negar

Níveis de Permissão

NONE

Sem acesso.


READ

Somente leitura.


UPDATE

Alteração.


CONTROL

Controle avançado.


ALTER

Controle total.


Exemplo

DATASET

BANCO.CLIENTES

READ

Pode apenas consultar.


Comandos RACF Mais Conhecidos

ADDUSER

Criar usuário.

ADDUSER JOAO

ALTUSER

Alterar usuário.

ALTUSER JOAO

DELUSER

Excluir usuário.

DELUSER JOAO

ADDGROUP

Criar grupo.

ADDGROUP DESENV

CONNECT

Associar usuário ao grupo.

CONNECT JOAO
GROUP(DESENV)

LISTUSER

Consultar usuário.

LISTUSER JOAO

Perfil de Dataset

Exemplo:

BANCO.**

Protege todos os datasets:

BANCO.CLIENTES
BANCO.CONTAS
BANCO.EXTRATOS

Máscaras RACF

*

Um nível.

BANCO.*

**

Todos os níveis.

BANCO.**

Exemplo

BANCO.CLIENTES
BANCO.CLIENTES.TESTE
BANCO.CLIENTES.HIST

RACF e TSO

Ao entrar no TSO:

LOGON

o RACF valida:

  • usuário;

  • senha;

  • grupo;

  • privilégios.


RACF e CICS

Quando uma transação é executada:

SALD

RACF verifica:

Usuário autorizado?

RACF e DB2

Controla:

  • tabelas;

  • packages;

  • plans;

  • comandos administrativos.


RACF e JES2

Controla:

  • SUBMIT;

  • CANCEL;

  • HOLD;

  • OUTPUT.


Auditoria

O RACF registra eventos.


Exemplos

Login
Logoff
Falha senha
Tentativa acesso
Alteração perfil

SMF

As auditorias normalmente são gravadas em:

SMF

(System Management Facility)


Multifactor Authentication

Versões modernas suportam:

  • Token

  • Certificado Digital

  • MFA

  • OTP


Comandos de Consulta

LISTUSER

LISTUSER JOAO

SEARCH

SEARCH CLASS(DATASET)

RLIST

RLIST DATASET

Curiosidades

1. O RACF existe desde 1976

2. É um dos sistemas de segurança mais confiáveis do mundo

3. Protege bilhões de transações diariamente

4. Continua evoluindo com suporte a MFA e certificados digitais

5. É amplamente utilizado por bancos e governos


RACF x ACF2 x Top Secret

ProdutoFabricante
RACFIBM
ACF2Broadcom
Top SecretBroadcom

Todos possuem funções semelhantes.


Resumo Rápido

ConceitoFunção
RACFSegurança Mainframe
USERUsuário
GROUPGrupo
RESOURCERecurso protegido
DATASETArquivo
READLeitura
UPDATEAlteração
ALTERControle total
ADDUSERCria usuário
LISTUSERConsulta usuário
SMFAuditoria
MFAAutenticação forte

Conclusão

O RACF (Resource Access Control Facility) é o principal sistema de segurança do Mainframe IBM Z. Ele controla autenticação, autorização e auditoria de usuários, protegendo datasets, aplicações CICS, bancos DB2, jobs JES2 e recursos críticos do sistema, garantindo que apenas pessoas autorizadas tenham acesso aos dados corporativos.


 


segunda-feira, 19 de fevereiro de 2007

O que é Database IMS em Mainframe?

 

Bellacosa Mainframe o que é database IMS

O que é IMS em Mainframe?

IMS significa:

Information Management System

É um dos softwares mais importantes da história da IBM e um dos pilares do ambiente Mainframe.

Criado em 1968 para apoiar o programa Apollo da NASA, o IMS continua em produção em milhares de empresas ao redor do mundo.


Definição Simples

O IMS é uma plataforma que fornece:

✅ Banco de Dados (IMS DB)

✅ Processamento de Transações (IMS TM)

Em outras palavras:

IMS = Banco de Dados + Monitor Transacional

História Curiosa

A IBM desenvolveu o IMS para ajudar a NASA a controlar milhões de componentes do foguete Saturno V usado nas missões Apollo.

Por isso, o IMS é frequentemente chamado de:

O banco de dados que ajudou a levar o homem à Lua


Componentes Principais

IMS DB

Banco de dados hierárquico.


IMS TM

Transaction Manager.

Responsável pelo processamento online.


Arquitetura Simplificada

Usuário
    ↓
IMS TM
    ↓
Programa COBOL
    ↓
IMS DB
    ↓
Resposta

O que é IMS DB?

É um banco de dados hierárquico.

Diferente do DB2, que é relacional.


Exemplo DB2

Tabela CLIENTES

IDNOME
1JOÃO
2MARIA

Exemplo IMS

EMPRESA
   │
   ├── CLIENTE
   │      │
   │      ├── CONTA
   │      │      │
   │      │      ├── MOVIMENTO
   │      │      ├── MOVIMENTO
   │
   └── CLIENTE

Conceito de Segmento

No IMS os registros são chamados de:

Segmentos


Exemplo

CLIENTE

Segmento Pai


CONTA

Segmento Filho


MOVIMENTO

Segmento Neto


Estrutura Hierárquica

CLIENTE
   ↓
CONTA
   ↓
MOVIMENTO

O que é DL/I?

Data Language I.

É a linguagem utilizada para acessar bancos IMS.

Equivale ao SQL do DB2.


Comandos DL/I

GU

Get Unique

Busca um segmento específico.


GN

Get Next

Busca próximo segmento.


GNP

Get Next Within Parent

Busca próximo filho.


ISRT

Insert

Inclui segmento.


REPL

Replace

Atualiza segmento.


DLET

Delete

Remove segmento.


Exemplo DL/I

CALL 'CBLTDLI'

USING
      GU
      PCB
      AREA
      SSA.

O que é PCB?

Program Communication Block.

Define como o programa acessa o banco.


O que é PSB?

Program Specification Block.

Define:

  • bancos acessados;

  • permissões;

  • PCBs.


O que é DBD?

Database Description.

Descreve:

  • segmentos;

  • relacionamentos;

  • estrutura física.


Estrutura IMS DB

DBD
 ↓
PSB
 ↓
PCB
 ↓
Programa COBOL

O que é IMS TM?

Transaction Manager.

Funciona de forma semelhante ao CICS.


Responsabilidades

  • receber transações;

  • controlar usuários;

  • chamar programas;

  • gerenciar filas;

  • garantir integridade.


Fluxo Online

Terminal
   ↓
IMS TM
   ↓
Programa COBOL
   ↓
IMS DB
   ↓
Resposta

Exemplo de Transação

Usuário digita:

CONS

IMS executa:

CONS
  ↓
Programa COBOL
  ↓
Consulta IMS
  ↓
Resposta

IMS x CICS

IMS TMCICS
IBMIBM
TransacionalTransacional
Muito usado em bancosMuito usado em bancos
Integração IMS DBIntegração DB2
Altíssimo desempenhoAltíssimo desempenho

IMS x DB2

IMS

Hierárquico

CLIENTE
 ↓
CONTA
 ↓
MOVIMENTO

DB2

Relacional

CLIENTES
CONTAS
MOVIMENTOS

Relacionadas por chaves.


Linguagens Utilizadas

  • COBOL

  • PL/I

  • Assembler

  • Java


IMS e COBOL

Combinação clássica.


Exemplo

CALL 'CBLTDLI'

Praticamente todo programa IMS utiliza esse comando.


Vantagens do IMS

✅ Altíssima performance

✅ Excelente escalabilidade

✅ Segurança

✅ Baixo consumo de recursos

✅ Confiabilidade extrema


Onde é Utilizado?

  • Bancos

  • Cartões

  • Seguradoras

  • Governo

  • Telecomunicações

  • Companhias aéreas


Curiosidades

1. O IMS foi criado para o Projeto Apollo

2. Continua sendo utilizado mais de 50 anos depois

3. Alguns dos maiores bancos do mundo usam IMS

4. Processa bilhões de transações diariamente

5. É considerado um dos sistemas mais confiáveis já criados


Principais Objetos IMS

ObjetoFunção
DBDDescrição do Banco
PSBEspecificação Programa
PCBComunicação Programa
SegmentoRegistro IMS
SSACritério Pesquisa
DL/ILinguagem de acesso
IMS DBBanco Hierárquico
IMS TMGerenciador Transacional

Resumo Rápido

IMS
 │
 ├── IMS DB
 │      ↓
 │ Banco Hierárquico
 │
 └── IMS TM
        ↓
     Transações Online

Conclusão

O IMS (Information Management System) é uma plataforma da IBM composta por um poderoso banco de dados hierárquico (IMS DB) e um monitor transacional (IMS TM). Presente em grandes bancos, seguradoras e órgãos governamentais, ele continua sendo uma das tecnologias mais robustas e confiáveis do ecossistema Mainframe IBM Z, processando milhões de transações críticas todos os dias.


domingo, 18 de fevereiro de 2007

O que é CICS?

 

Bellacosa Mainframe e o que é CICS

O que é CICS?

CICS significa:

Customer Information Control System

É o principal monitor transacional do ambiente Mainframe IBM Z e um dos softwares mais importantes da história da computação corporativa.

Criado pela IBM em 1968, o CICS é responsável por executar milhões de transações online em bancos, seguradoras, governos, companhias aéreas e grandes empresas.


Definição Simples

O CICS é:

um gerenciador de transações online.

Ele permite que milhares de usuários acessem simultaneamente aplicações COBOL, PL/I, C e Java executadas no Mainframe.


Analogia Simples

Imagine um restaurante.

  • O cliente faz o pedido.

  • O garçom recebe.

  • A cozinha prepara.

  • O prato é entregue.

No Mainframe:

Usuário
   ↓
CICS
   ↓
Programa COBOL
   ↓
DB2 / VSAM
   ↓
Resposta

O CICS é o "garçom" que coordena tudo.


Por que o CICS existe?

Sem o CICS, cada usuário precisaria executar diretamente um programa no sistema operacional.

Isso consumiria muitos recursos.

O CICS resolve esse problema:

✅ Compartilhando recursos

✅ Controlando usuários

✅ Gerenciando transações

✅ Controlando memória

✅ Gerenciando comunicação


Onde o CICS é usado?

Praticamente em:

  • Bancos

  • PIX

  • TED

  • Cartões de crédito

  • Internet Banking

  • Seguradoras

  • Governo

  • Telecomunicações

  • Companhias aéreas


Arquitetura Simplificada

Terminal
    ↓
CICS
    ↓
Programa COBOL
    ↓
DB2
    ↓
Resposta

Exemplo Real

Cliente consulta saldo:

ATM
 ↓
CICS
 ↓
COBOL
 ↓
DB2
 ↓
Saldo exibido

Tudo acontece em poucos milissegundos.


O que é uma Transação CICS?

É uma operação identificada por um código de 4 caracteres.


Exemplos

CUST
SALD
PIX1
PAGT

Fluxo

Usuário digita:

SALD

O CICS:

Localiza programa
       ↓
Executa COBOL
       ↓
Retorna resultado

Programas CICS

Normalmente escritos em:

  • COBOL

  • PL/I

  • C

  • Java


Exemplo COBOL CICS

Recebendo dados:

EXEC CICS RECEIVE
     MAP('TELA1')
END-EXEC.

Enviando dados

EXEC CICS SEND
     MAP('TELA2')
END-EXEC.

O que é uma MAP?

Tela utilizada pelo usuário.


Exemplo

+----------------------+
| CONSULTA CLIENTE     |
| CONTA: ________      |
| SALDO: ________      |
+----------------------+

BMS

Basic Mapping Support.

Ferramenta usada para criar telas CICS.


COMMAREA

Área usada para passar dados entre programas.


Exemplo

Programa A:

EXEC CICS LINK
     PROGRAM('PROG2')
     COMMAREA(WS-AREA)
END-EXEC.

Programa B

Recebe os dados pela COMMAREA.


Principais Comandos CICS

LINK

Chama outro programa.

EXEC CICS LINK
END-EXEC

XCTL

Transfere controle sem retorno.

EXEC CICS XCTL
END-EXEC

RETURN

Finaliza transação.

EXEC CICS RETURN
END-EXEC

SEND

Envia tela.

EXEC CICS SEND
END-EXEC

RECEIVE

Recebe dados.

EXEC CICS RECEIVE
END-EXEC

CICS e DB2

Integração extremamente comum.


Exemplo

EXEC SQL

   SELECT SALDO
   INTO :WS-SALDO

   FROM CLIENTES

END-EXEC.

CICS e VSAM

Também muito utilizado.


Exemplo

READ ARQCLI

CICS e Segurança

Normalmente integrado ao:

  • RACF

  • ACF2

  • Top Secret


Regiões CICS

O CICS executa dentro de uma região.


Exemplos

CICSA
CICSPRD
CICSTST

O que é uma Região?

Ambiente onde as transações executam.


Monitoramento

Comandos comuns:

CEMT
CEDA
CEDF
CECI

CEMT

Monitor operacional.


Exemplo

CEMT I TASK

Mostra tarefas ativas.


CEDA

Administração de recursos.


CEDF

Debug interativo.


CECI

Executa comandos CICS manualmente.


Erros Comuns (ABENDs CICS)

AICA

Timeout.


AEI0

Programa não encontrado.


AEIV

Erro COMMAREA.


ASRA

Exceção de programa.

Equivalente a:

S0C7
S0C4

Conceito de Transação

Uma transação deve obedecer:

ACID


Atomicidade

Tudo ou nada.


Consistência

Dados válidos.


Isolamento

Transações independentes.


Durabilidade

Dados persistem após COMMIT.


Curiosidades

1. O CICS existe desde 1968

2. Processa bilhões de transações diariamente

3. É considerado o maior monitor transacional do mundo

4. Grande parte dos sistemas bancários utiliza CICS

5. Muitas transações PIX passam por aplicações COBOL/CICS


Resumo Rápido

ConceitoFunção
CICSMonitor transacional
TransaçãoOperação online
MAPTela usuário
BMSCriação de telas
COMMAREAPassagem de dados
LINKChama programa
XCTLTransfere controle
SENDEnvia tela
RECEIVERecebe dados
CEMTAdministração
CEDADefinição recursos
CEDFDebug
CECITestes

Conclusão

O CICS (Customer Information Control System) é o principal monitor de processamento online do Mainframe IBM Z. Ele gerencia transações, usuários, programas COBOL, acesso a DB2 e VSAM, permitindo que milhões de operações críticas sejam executadas com segurança, desempenho e alta disponibilidade em tempo real.


sábado, 17 de fevereiro de 2007

O que é Processamento Online em Mainframe?

 

Bellacosa Mainframe o que é processamento mainframe

O que é Processamento Online em Mainframe?

O processamento Online é o modelo de execução em que o usuário interage diretamente com a aplicação e recebe uma resposta quase imediata.

Enquanto o Batch processa grandes volumes de dados em lote, o Online processa uma transação por vez, em tempo real.


Definição Simples

Processamento Online é:

a execução interativa de transações em tempo real.

Sempre que um usuário:

  • consulta saldo;

  • realiza um PIX;

  • faz uma compra no cartão;

  • acessa Internet Banking;

  • emite um boleto;

há um processamento online acontecendo.


Analogia Simples

Batch

100.000 registros
        ↓
Processa tudo junto
        ↓
Resultado

Online

Usuário solicita
        ↓
Sistema responde
        ↓
Fim da transação

Exemplos do Dia a Dia

Caixa Eletrônico

Cliente consulta saldo
        ↓
CICS
        ↓
DB2
        ↓
Resposta em segundos

PIX

Cliente envia PIX
        ↓
Validação
        ↓
Atualização DB2
        ↓
Confirmação

Cartão de Crédito

Compra realizada
        ↓
Autorização
        ↓
Resposta

Arquitetura Online no Mainframe

Usuário
    ↓
Terminal / Web / Mobile
    ↓
CICS ou IMS TM
    ↓
Programa COBOL
    ↓
DB2 / VSAM
    ↓
Resposta

Principais Componentes

CICS

Customer Information Control System

Principal monitor transacional do mundo Mainframe.

Gerencia:

  • transações;

  • usuários;

  • telas;

  • comunicação.


IMS TM

IMS Transaction Manager.

Alternativa ao CICS.

Muito usado em:

  • bancos;

  • telecom;

  • governo.


COBOL

Contém as regras de negócio.


DB2

Banco de dados relacional.


VSAM

Arquivos indexados.


Fluxo de uma Transação CICS

Terminal
    ↓
Transação
    ↓
Programa COBOL
    ↓
DB2
    ↓
Resposta

Exemplo de Transação

Código digitado:

CONS

ou

SALD

O CICS:

Recebe
 ↓
Localiza programa
 ↓
Executa
 ↓
Retorna tela

Exemplo COBOL Online

EXEC CICS RECEIVE
     MAP('TELA1')
END-EXEC.

Recebe dados da tela.


Consulta DB2

EXEC SQL

   SELECT SALDO
   INTO :WS-SALDO

   FROM CLIENTES

   WHERE CONTA = :WS-CONTA

END-EXEC.

Retorno ao Usuário

EXEC CICS SEND
     MAP('TELA2')
END-EXEC.

Características do Online

✅ Tempo real

✅ Resposta imediata

✅ Interação usuário

✅ Pequeno volume por transação

✅ Alta disponibilidade


Online x Batch

OnlineBatch
Tempo realEm lote
InterativoNão interativo
Usuário presenteUsuário ausente
Resposta imediataProcessamento agendado
CICS/IMSJCL/COBOL

O que é uma Transação?

Unidade lógica de trabalho.

Exemplo:

Consultar saldo

ou

Transferir dinheiro

Conceito ACID

Transações online devem garantir:

Atomicidade

Tudo ou nada.


Consistência

Dados válidos.


Isolamento

Usuários não interferem.


Durabilidade

Dados persistem.


COMMIT

Confirma a transação.

COMMIT;

ROLLBACK

Desfaz alterações.

ROLLBACK;

Exemplo

PIX enviado
     ↓
Erro
     ↓
ROLLBACK

Nenhum valor é debitado.


Desempenho

Transações online normalmente precisam responder em:

Menos de 1 segundo

ou

2 segundos

Dependendo da aplicação.


Segurança

Ambientes online usam:

  • RACF

  • ACF2

  • Top Secret

para controlar acessos.


Disponibilidade

Muitos sistemas online operam:

24x7

Sem interrupção.


Exemplos Reais

Bancos

  • PIX

  • TED

  • Consulta saldo

  • Investimentos


Seguradoras

  • Apólices

  • Sinistros


Governo

  • Receita Federal

  • Previdência


Varejo

  • Cartões

  • E-commerce


Erros Comuns

Deadlock DB2

SQLCODE -911

Programa não encontrado

AEI0

Erro de COMMAREA

AEIV

Timeout

AICA

Curiosidades

1. O CICS processa bilhões de transações por dia no mundo

2. Muitas operações de cartão passam por Mainframes IBM Z

3. Um único CICS pode suportar milhares de usuários simultâneos

4. Grande parte dos PIX bancários passa por aplicações COBOL online


Resumo Rápido

ConceitoFunção
OnlineProcessamento em tempo real
CICSMonitor transacional
IMS TMGerenciador de transações
COBOLRegras de negócio
DB2Banco de dados
VSAMArquivo indexado
COMMITConfirma
ROLLBACKDesfaz
ACIDIntegridade transacional
RACFSegurança

Conclusão

O processamento Online é o responsável pelas transações em tempo real no ambiente IBM Z. Utilizando tecnologias como CICS, IMS TM, COBOL, DB2 e VSAM, ele permite que milhões de usuários realizem consultas, pagamentos, transferências e operações críticas com rapidez, segurança e alta disponibilidade, tornando-se um dos pilares da computação corporativa moderna.


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.