Translate

terça-feira, 30 de janeiro de 2007

O que é Lógica de Programação em Mainframe?

 

Bellacosa Mainframe e a logica de programação mainframe

O que é Lógica de Programação em Mainframe?

Quando alguém começa a estudar:

  • COBOL;

  • JCL;

  • REXX;

  • Assembler;

  • DB2;

  • programação no z/OS;

existe um conceito que aparece antes de qualquer linguagem:

lógica de programação.

Muitos iniciantes pensam que programar é:

decorar comandos.

Mas na verdade:
programar significa:

resolver problemas usando lógica.


Definição simples

Lógica de programação é:

a forma organizada de pensar para criar soluções computacionais.

Ela ensina:

  • sequência;

  • decisão;

  • repetição;

  • organização;

  • fluxo de processamento.


O que muda no mainframe?

No ambiente mainframe:

a lógica normalmente processa enormes volumes de dados.

Exemplo:

  • milhões de contas bancárias;

  • bilhões de transações PIX;

  • folhas salariais;

  • cartões de crédito;

  • faturamento.


Analogia simples

Imagine ensinar alguém a fazer café.

Você precisa explicar:

  1. pegar água;

  2. ferver;

  3. colocar pó;

  4. filtrar;

  5. servir.

Isso é:

lógica.

O computador funciona exatamente assim:

seguindo passos organizados.


A lógica existe antes da linguagem

Antes de aprender:

  • COBOL;

  • Java;

  • Python;

  • Assembler;

é importante entender:

como pensar como programador.


O que a lógica ensina?


Sequência

Ordem correta das ações.


Decisão

Escolher caminhos.


Repetição

Executar várias vezes.


Variáveis

Guardar informações.


Fluxo

Controlar execução.


Exemplo simples de lógica

LER SALARIO
SE SALARIO > 5000
   MOSTRAR "IMPOSTO MAIOR"
SENAO
   MOSTRAR "IMPOSTO MENOR"

Isso é lógica

Ainda não importa qual linguagem será usada.


Como isso aparece no COBOL?


Exemplo COBOL simples

IF SALARIO > 5000
   DISPLAY 'IMPOSTO MAIOR'
ELSE
   DISPLAY 'IMPOSTO MENOR'
END-IF

A lógica continua igual

Apenas muda a sintaxe.


Principais conceitos da lógica


Entrada

Dados recebidos.

Exemplo:

  • arquivo;

  • teclado;

  • banco DB2.


Processamento

Regras executadas.


Saída

Resultado final.


Fluxo clássico

ENTRADA
   ↓
PROCESSAMENTO
   ↓
SAÍDA

O que é algoritmo?

Algoritmo é:

sequência lógica de passos.


Exemplo algoritmo

1. Ler cliente
2. Validar saldo
3. Atualizar conta
4. Gerar relatório

O que é variável?

Espaço usado para guardar valores.


Exemplo

NOME
SALARIO
IDADE

O que é condição?

Tomada de decisão.


Exemplos

IF
ELSE
EVALUATE

O que é repetição?

Executar várias vezes.


Exemplo COBOL

PERFORM UNTIL EOF='S'

Muito usado no mainframe

Porque batch processa:

  • milhares;

  • milhões;

  • bilhões de registros.


O que é EOF?

End Of File

Fim do arquivo.


Lógica em processamento batch

Exemplo real:

LER REGISTRO
   ↓
VALIDAR
   ↓
CALCULAR
   ↓
GRAVAR
   ↓
LER PRÓXIMO

Isso é a essência do COBOL batch


O que é fluxograma?

Desenho visual da lógica.


Exemplo

INICIO
 ↓
LER ARQUIVO
 ↓
PROCESSAR
 ↓
FIM

Por que lógica é tão importante no mainframe?

Porque sistemas mainframe:

  • processam muito volume;

  • exigem precisão;

  • não podem falhar facilmente.


Um erro lógico pode causar:

  • cálculo errado;

  • perda financeira;

  • falha batch;

  • ABEND;

  • inconsistência DB2.


O que é debugging?

Analisar lógica para encontrar erros.


O que é bug?

Erro na lógica/programação.


Exemplo clássico

Programa deveria somar:

10 + 20 = 30

Mas lógica errada gera:

10 + 20 = 300

Isso é bug lógico


Como lógica aparece no COBOL?

Principalmente em:

  • IF;

  • PERFORM;

  • EVALUATE;

  • READ;

  • WRITE;

  • COMPUTE.


Exemplo real COBOL batch

READ CLIENTE
IF SALDO > 0
   WRITE RELATORIO
END-IF

Como lógica aparece no JCL?

JCL possui lógica mais operacional.

Exemplo:

COND=(0,NE)

Como lógica aparece no scheduler?

Dependências:

JOBB só executa após JOBA

Como lógica aparece no DB2?

Consultas:

SELECT
WHERE
JOIN

Curiosidades incríveis

1. COBOL foi criado para lógica de negócios


2. Grande parte do processamento bancário depende de lógica batch


3. Programadores experientes valorizam lógica mais do que sintaxe


4. A mesma lógica funciona em várias linguagens


Erros comuns de iniciantes


1. Decorar comandos sem entender lógica


2. Não visualizar fluxo do programa


3. Ignorar regras de negócio


4. Não validar dados


Dicas importantes

Aprenda lógica antes de linguagem


Desenhe fluxos


Entenda entrada → processamento → saída


Pratique algoritmos simples


Como lógica aparece no dia a dia do mainframe?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • CICS;

  • batch;

  • JCL;

  • automação;

  • integração.


Exemplo completo simplificado

LER ARQUIVO
 ↓
VALIDAR CPF
 ↓
CALCULAR SALDO
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO
 ↓
FIM

Resumo rápido

ConceitoSignificado
LógicaForma organizada de pensar
AlgoritmoSequência de passos
VariávelGuarda dados
CondiçãoDecisão
RepetiçãoLoop
BatchProcessamento em lote
DebugEncontrar erros

Conclusão

Lógica de programação é a base de todo desenvolvimento no ambiente mainframe IBM Z.

Ela permite criar algoritmos organizados para processar grandes volumes de dados com segurança, precisão e eficiência, sendo fundamental para COBOL, JCL, DB2 e todo o ecossistema z/OS.

segunda-feira, 29 de janeiro de 2007

Como Funciona um JOB Batch no Mainframe

 

Bellacosa Mainframe explica como funciona um job no processo batch

Como Funciona um JOB Batch no Mainframe

Quando falamos de:

  • bancos;

  • cartões;

  • PIX;

  • folha salarial;

  • faturamento;

  • processamento noturno;

quase tudo gira em torno de:

JOBs batch.

O processamento batch é um dos pilares do ambiente mainframe IBM Z.

E para organizar milhares de JOBs automaticamente, existem ferramentas chamadas:

schedulers.


O que é um JOB batch?

JOB batch é:

um processamento automático executado sem interação do usuário.

Ele normalmente:

  • lê arquivos;

  • processa dados;

  • atualiza bancos;

  • gera relatórios;

  • integra sistemas.


Analogia simples

Imagine uma fábrica funcionando durante a madrugada.

Existem:

  • centenas de tarefas;

  • ordem correta;

  • dependências;

  • horários;

  • prioridade.

O scheduler funciona como:

o gerente da fábrica.


Fluxo simples de um JOB batch

Scheduler
   ↓
JES2
   ↓
Fila batch
   ↓
Initiator
   ↓
Execução
   ↓
Spool
   ↓
SDSF

O que o JOB batch pode executar?

  • COBOL;

  • SORT;

  • DB2;

  • IDCAMS;

  • FTP;

  • APIs;

  • backups;

  • integrações.


O que é scheduler?

Scheduler é:

ferramenta de automação batch.

Ela:

  • agenda;

  • controla;

  • monitora;

  • encadeia JOBs.


Por que schedulers existem?

Imagine executar manualmente:

  • 20 mil JOBs por noite.

Seria impossível.

Então surgiram ferramentas de automação batch.


O que é scheduling?

Scheduling significa:

gerenciamento de execução batch.


O scheduler controla:

  • horários;

  • dependências;

  • prioridade;

  • falhas;

  • calendário;

  • SLA;

  • rerun;

  • alertas.


Exemplo real

JOB A termina
   ↓
JOB B inicia
   ↓
DB2 atualiza
   ↓
Relatório gerado

Tudo automático.


Principais schedulers do mainframe


IBM IWS

Antigo:

OPC/TWS

Hoje:

IBM Workload Scheduler.


Control-M

Muito popular em ambientes distribuídos e mainframe.


OpCon

Scheduler moderno multiplataforma.


CA-7

Scheduler clássico do mainframe.


AutoSys

Muito usado em ambientes híbridos.


ESP

Scheduler corporativo avançado.


O que é IBM IWS?

IWS significa:

IBM Workload Scheduler


Antigos nomes históricos

OPC
 ↓
TWS
 ↓
IWS

O IWS é extremamente famoso no z/OS

Muito usado em:

  • bancos;

  • seguradoras;

  • governos.


O que o IWS faz?

Ele:

  • agenda JOBs;

  • controla dependências;

  • monitora batch;

  • gerencia workload.


O que é aplicação no IWS?

Conjunto lógico de JOBs.


Exemplo

Aplicação:

FOLHA_PAGAMENTO

Contém:

  • extração;

  • cálculo;

  • DB2;

  • relatório;

  • envio.


O que é predecessor?

JOB anterior obrigatório.


Exemplo

JOBB só executa após JOBA

O que é successor?

JOB seguinte dependente.


O que é job stream?

Fluxo encadeado de JOBs.


Exemplo visual

EXTRACAO
   ↓
SORT
   ↓
COBOL
   ↓
DB2
   ↓
RELATORIO

O que é calendário batch?

Define:

  • dias úteis;

  • feriados;

  • fechamento mensal;

  • execução especial.


O que é SLA?

Service Level Agreement

Tempo esperado de conclusão.


O scheduler monitora SLA

Se atrasar:

  • gera alerta;

  • envia notificação;

  • abre incidente.


O que é rerun?

Reexecutar JOB.


Muito usado após falhas


O que é restart?

Reiniciar JOB em STEP específico.


Exemplo

RESTART=STEP3

Isso evita rerun completo


Como Control-M funciona?

Muito parecido com IWS.

Mas famoso pela integração:

  • Linux;

  • Windows;

  • cloud;

  • APIs;

  • mainframe.


O Control-M possui interface gráfica forte

Muito usado por:

  • DevOps;

  • operações híbridas.


O que o scheduler monitora?

  • RC;

  • ABEND;

  • spool;

  • tempo;

  • CPU;

  • dependências.


O que acontece se JOB falhar?

Scheduler pode:

  • parar fluxo;

  • executar contingência;

  • chamar rerun;

  • enviar alerta.


Exemplo real

S0C7 detectado
   ↓
JOB sucessor bloqueado
   ↓
Alerta enviado

O que é batch window?

Janela batch.

Período destinado ao processamento.

Exemplo:

00:00 até 06:00

O que é critical path?

Fluxo crítico do batch.

Se atrasar:

  • impacta negócio;

  • relatórios;

  • PIX;

  • fechamento bancário.


O que é workload automation?

Automação inteligente de workload.


O scheduler conversa com:

  • JES2;

  • SDSF;

  • DB2;

  • CICS;

  • FTP;

  • cloud;

  • APIs.


Como operadores usam scheduler?

Para:

  • monitorar produção;

  • resolver falhas;

  • rerun;

  • acompanhar SLA.


Como programadores usam scheduler?

Para:

  • automatizar processos;

  • integrar aplicações;

  • encadear JOBs.


Curiosidades incríveis

1. Grandes bancos executam milhões de JOBs diariamente


2. Alguns batchs noturnos duram poucas horas mas processam bilhões de registros


3. O scheduler é considerado o “cérebro” da produção batch


4. Muitas empresas possuem operação 24x7 baseada em schedulers


Erros comuns de iniciantes


1. Confundir JES2 com scheduler

JES2:
executa/controla JOB.

Scheduler:
organiza automação batch.


2. Ignorar dependências

Pode quebrar fluxo inteiro.


3. Fazer rerun incorreto

Pode duplicar processamento.


4. Não monitorar SLA

Impacta negócio.


Dicas importantes

Aprenda:

  • predecessor;

  • successor;

  • rerun;

  • restart.


Entenda critical path


Leia spool e RC


Aprenda JES2 e SDSF junto com scheduler


Como isso aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • PIX;

  • cartões;

  • faturamento;

  • folha salarial;

  • cloud híbrida.


Resumo rápido

ConceitoSignificado
SchedulerAutomação batch
IWSIBM Workload Scheduler
Control-MScheduler corporativo
PredecessorJOB anterior
SuccessorJOB seguinte
RerunReexecutar JOB
RestartReiniciar STEP

Conclusão

O processamento batch é um dos pilares do ambiente mainframe IBM Z.

Ferramentas como IWS, Control-M, CA-7 e outros schedulers permitem automatizar milhares de JOBs diariamente, controlando dependências, prioridades, falhas e SLA de forma extremamente eficiente e confiável.


domingo, 28 de janeiro de 2007

O que é um Dump em Mainframe?

 

Bellacosa Mainframe explica Dump no Mainframe

O que é um Dump em Mainframe?

Quando um JOB sofre:

  • ABEND;

  • falha COBOL;

  • erro de memória;

  • problema no sistema;

o z/OS pode gerar algo extremamente importante chamado:

DUMP

Para iniciantes, dump parece algo assustador cheio de números estranhos.

Mas na prática ele é:

uma fotografia técnica do erro.


Definição simples

Dump é:

uma captura das informações da memória no momento da falha.

Ele ajuda a descobrir:

  • o que aconteceu;

  • onde ocorreu o erro;

  • qual variável causou problema;

  • qual instrução falhou.


Analogia simples

Imagine um acidente de carro.

Os investigadores analisam:

  • posição dos veículos;

  • marcas no chão;

  • velocidade;

  • danos.

O dump funciona exatamente assim:

ele registra o estado do programa no momento do erro.


O que o dump pode conter?

  • memória;

  • registradores;

  • variáveis;

  • instruções;

  • módulos;

  • chamadas de programa;

  • status do sistema.


Quando um dump é gerado?

Normalmente durante:

  • ABEND;

  • S0C7;

  • S0C4;

  • falha COBOL;

  • erro DB2;

  • erro CICS;

  • falha sistema.


Onde o dump aparece?

Principalmente:

  • spool;

  • SYSUDUMP;

  • SYSABEND;

  • CEEDUMP;

  • datasets de dump.


O que é SYSUDUMP?

Cartão DD usado para:

gerar dump simplificado.


Exemplo

//SYSUDUMP DD SYSOUT=*

Muito usado em troubleshooting


O que é SYSABEND?

Gera:

dump mais completo e detalhado.


Exemplo

//SYSABEND DD SYSOUT=*

O que é SYSMDUMP?

Dump binário/extenso.

Muito usado por suporte avançado IBM.


Exemplo

//SYSMDUMP DD DSN=MEU.DUMP,
// DISP=(NEW,CATLG)

O que é CEEDUMP?

Dump do:

Language Environment (LE).

Muito usado em:

  • COBOL;

  • PL/I;

  • C.


Exemplo

//CEEDUMP DD SYSOUT=*

O que existe dentro de um dump?


Registradores CPU

Estado do processador.


Endereços memória

Onde ocorreu falha.


Variáveis COBOL

Conteúdo dos campos.


Call stack

Sequência de chamadas.


Instrução que falhou

Linha/instrução responsável.


Como um dump aparece?

Exemplo típico:

PSW AT TIME OF ERROR

Ou:

REGISTER CONTENTS

Ou:

SYSTEM COMPLETION CODE=0C7

O que é PSW?

Program Status Word

Mostra estado da CPU no erro.


O que são registradores?

Pequenas áreas da CPU usadas durante execução.


O que é traceback?

Sequência de chamadas do programa.

Ajuda localizar:

  • módulo;

  • parágrafo;

  • rotina.


Dumps mais comuns no COBOL


S0C7

Erro numérico.


S0C4

Violação memória.


U4038

Erro aplicação.


Como analisar dump?


1. Identificar ABEND

Exemplo:

S0C7

2. Verificar módulo

Nome do programa.


3. Ler mensagens LE

Mensagens:

  • IGZ;

  • CEE.


4. Verificar campo problemático

Muito comum em COBOL.


5. Ler traceback


Exemplo COBOL clássico

Campo esperado:

99999

Valor recebido:

12A45

Resultado:

S0C7.

O dump ajuda localizar exatamente qual campo causou problema.


Como programadores usam dumps?

Para:

  • debugging;

  • análise de falhas;

  • localizar bugs;

  • entender memória.


Como operadores usam dumps?

Para:

  • abrir incidentes;

  • analisar ABEND;

  • enviar para suporte.


Dumps são grandes?

Muito.

Alguns podem ter:

  • milhares;

  • milhões de linhas.


Por isso muitos iniciantes se assustam

Mas normalmente:

apenas pequenas partes são realmente importantes.


O que procurar primeiro?


ABEND CODE


MODULE NAME


PSW


REGISTER CONTENTS


CEE/IGZ messages


TRACEBACK


O que é IPCS?

Ferramenta avançada de análise dump no z/OS.

Usada por:

  • suporte IBM;

  • sysprog;

  • especialistas sistema.


Dumps ajudam a resolver:

  • corrupção memória;

  • erro COBOL;

  • falha DB2;

  • problemas CICS;

  • loops;

  • storage violations.


Curiosidades incríveis

1. Dumps existem desde os primeiros mainframes IBM


2. Alguns dumps possuem milhares de páginas


3. Especialistas em dump são extremamente valorizados


4. Muitos problemas críticos só podem ser resolvidos via dump


Erros comuns de iniciantes


1. Ignorar dump


2. Não incluir SYSUDUMP

Dificulta troubleshooting.


3. Assustar-se com hexadecimal

Grande parte pode ser ignorada inicialmente.


4. Ler dump inteiro

Normalmente basta:

  • mensagens;

  • traceback;

  • ABEND.


Dicas importantes

Sempre use:

//SYSUDUMP DD SYSOUT=*

durante testes.


Aprenda:

  • S0C7;

  • S0C4;

  • U4038.


Leia mensagens CEE e IGZ


Use CEEDUMP em COBOL


Como dump aparece no dia a dia?

Praticamente em:

  • COBOL;

  • DB2;

  • CICS;

  • batch;

  • produção;

  • troubleshooting.


Fluxo simplificado

ERRO
 ↓
ABEND
 ↓
DUMP
 ↓
ANÁLISE
 ↓
CORREÇÃO

Resumo rápido

TipoFunção
SYSUDUMPDump simplificado
SYSABENDDump detalhado
SYSMDUMPDump binário
CEEDUMPDump LE/COBOL
PSWEstado CPU
TracebackSequência chamadas

Conclusão

Dump é uma das ferramentas mais importantes de troubleshooting no ambiente mainframe IBM Z.

Ele registra o estado do sistema e do programa no momento da falha, permitindo analisar ABENDs, localizar erros e resolver problemas complexos no z/OS com precisão.

sábado, 27 de janeiro de 2007

Como Interpretar SYSOUT num JOB e Quais DDs Auxiliam o JCL

 

Bellacosa Mainframe explica sysout 

Como Interpretar SYSOUT num JOB e Quais DDs Auxiliam o JCL

Quando começamos a trabalhar com:

  • JCL;

  • JES2;

  • SDSF;

  • spool;

  • processamento batch;

uma das habilidades mais importantes é aprender a:

interpretar SYSOUT.

É no SYSOUT que normalmente descobrimos:

  • erros;

  • resultados;

  • mensagens;

  • ABENDs;

  • comportamento do programa.

Além disso, existem vários cartões:

DD (Data Definition)

que ajudam o JCL e o programa durante execução.


Primeiro: o que é SYSOUT?

SYSOUT significa:

System Output.

É a saída gerada durante execução do JOB.


O SYSOUT pode conter:

  • mensagens COBOL;

  • relatórios;

  • DISPLAY;

  • SQLCODE;

  • erros;

  • estatísticas;

  • logs batch.


Onde visualizar SYSOUT?

Principalmente no:

SDSF.


Como acessar?

SDSF

Depois:

ST

Selecionar JOB:

?

ou:

S

O que aparece no spool?

Arquivos como:

  • JESJCL;

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT;

  • CEEDUMP.


O SYSOUT é diferente dos outros arquivos


JESJCL

Mostra JCL interpretado.


JESMSGLG

Mensagens JES2.


JESYSMSG

Mensagens do sistema.


SYSOUT

Saída da aplicação/programa.


Exemplo simples de SYSOUT

Programa COBOL:

DISPLAY 'PROCESSAMENTO OK'

No spool aparece:

PROCESSAMENTO OK

O que analisar primeiro no SYSOUT?


1. Return Code (RC)

Exemplo:

CC 0000

Sucesso.


2. Mensagens de erro

Procurar:

  • ERROR;

  • ABEND;

  • SQLCODE;

  • FILE STATUS.


3. Quantidade processada

Exemplo:

REGISTROS LIDOS: 15000

4. Tempo de execução


5. Estatísticas batch


Exemplo de SYSOUT típico

INICIO PROCESSAMENTO
ARQUIVO ABERTO
1000 REGISTROS PROCESSADOS
FIM NORMAL

Como identificar problemas?


Mensagens COBOL

IGZ0006S

Erro COBOL.


SQLCODE

SQLCODE = -911

Problema DB2.


FILE STATUS

FILE STATUS 35

Arquivo não encontrado.


ABEND

S0C7

Erro numérico.


O que são cartões DD?

DD significa:

Data Definition.

São instruções JCL que definem:

  • arquivos;

  • SYSOUT;

  • bibliotecas;

  • parâmetros.


Exemplo básico

//SYSOUT DD SYSOUT=*

Principais cartões DD que auxiliam o JCL


SYSOUT

Define saída do spool.


SYSIN

Entrada de parâmetros/comandos.


SYSPRINT

Mensagens e relatórios do programa.


SYSUDUMP

Dump em caso de erro.


CEEDUMP

Dump do Language Environment.


STEPLIB

Bibliotecas de LOAD modules.


JOBLIB

Bibliotecas do JOB inteiro.


SORTIN

Entrada do SORT.


SORTOUT

Saída do SORT.


SYSABOUT

Dump do sistema.


SYSDBOUT

Mensagens DB2.


Explicando os principais DDs


SYSOUT DD

Muito comum:

//SYSOUT DD SYSOUT=*

Envia saída para spool.


SYSIN DD

Usado para comandos/parâmetros.

Exemplo:

//SYSIN DD *
 SORT FIELDS=COPY
/*

STEPLIB DD

Define bibliotecas de programas.

Exemplo:

//STEPLIB DD DSN=MEU.LOADLIB,
// DISP=SHR

Sem STEPLIB…

Pode ocorrer:

S806

Programa não encontrado.


SYSPRINT DD

Saída de relatórios e logs.


Exemplo

//SYSPRINT DD SYSOUT=*

SYSUDUMP DD

Gera dump para análise de ABEND.


Exemplo

//SYSUDUMP DD SYSOUT=*

Muito importante em troubleshooting


CEEDUMP DD

Dump do:

Language Environment.

Muito usado em:

  • COBOL;

  • C;

  • PL/I.


JOBLIB vs STEPLIB


JOBLIB

Vale para todo JOB.


STEPLIB

Vale apenas para STEP específico.


Exemplo JOBLIB

//JOBLIB DD DSN=EMPRESA.LOADLIB,
// DISP=SHR

Exemplo STEPLIB

//STEPLIB DD DSN=TESTE.LOADLIB,
// DISP=SHR

Como interpretar SYSOUT corretamente?


Ler começo e final


Procurar:

  • RC;

  • ERROR;

  • SQLCODE;

  • ABEND.


Verificar contadores


Conferir datasets


Observar mensagens JES2


Exemplo completo de troubleshooting


RC

CC 0012

SYSOUT mostra:

FILE STATUS 35

Conclusão

Arquivo não encontrado.


Fluxo ideal de análise

RC
 ↓
JESMSGLG
 ↓
JESYSMSG
 ↓
SYSOUT
 ↓
DUMP
 ↓
SOLUÇÃO

Curiosidades incríveis

1. Grandes batchs geram milhões de linhas de SYSOUT


2. Operadores monitoram SYSOUT constantemente


3. Muitas falhas só aparecem no SYSPRINT


4. Dumps podem ocupar enorme espaço spool


Erros comuns de iniciantes


1. Ignorar SYSOUT


2. Não usar SYSUDUMP

Dificulta troubleshooting.


3. Esquecer STEPLIB

Causa S806.


4. Não analisar SQLCODE

Muito importante em DB2.


Dicas importantes

Sempre utilize:

//SYSOUT DD SYSOUT=*

Durante testes inclua:

//SYSUDUMP DD SYSOUT=*

Aprenda FILE STATUS COBOL


Leia JESYSMSG junto com SYSOUT


Como isso aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • CICS batch;

  • automação;

  • produção.


Resumo rápido

DDFunção
SYSOUTSaída spool
SYSINEntrada comandos
SYSPRINTRelatórios/logs
SYSUDUMPDump erro
CEEDUMPDump LE
STEPLIBBiblioteca programa
JOBLIBBiblioteca JOB

Conclusão

Interpretar SYSOUT é uma das habilidades mais importantes no ambiente mainframe IBM Z.

É através dele que operadores e programadores analisam resultados, identificam erros, entendem ABENDs e realizam troubleshooting eficiente em JOBs batch no z/OS.


sexta-feira, 26 de janeiro de 2007

ABEND Explicado para Iniciantes

 

Bellacosa Mainframe explicando abend para padawan

ABEND Explicado para Iniciantes

Quando alguém começa a trabalhar com:

  • COBOL;

  • JCL;

  • SDSF;

  • JES2;

  • batch no z/OS;

rapidamente encontra uma palavra que assusta muitos iniciantes:

ABEND

E normalmente surge a pergunta:

“O que aconteceu com meu JOB?”

A resposta geralmente é:

ocorreu um ABEND.


O que significa ABEND?

ABEND significa:

Abnormal End

Em português:

término anormal.


Definição simples

ABEND acontece quando:

um JOB ou programa termina com erro inesperado.

Ou seja:
o processamento não conseguiu continuar normalmente.


Analogia simples

Imagine uma fábrica.

Tudo funciona normalmente:

  • máquinas;

  • produção;

  • esteiras.

Mas de repente:

  • falta peça;

  • quebra equipamento;

  • ocorre falha elétrica.

A produção para abruptamente.

ABEND é exatamente isso:

uma interrupção anormal do processamento.


O que acontece quando ocorre ABEND?

O z/OS:

  • interrompe execução;

  • grava mensagens;

  • gera logs;

  • salva informações para diagnóstico.

Tudo aparece no:

spool.


Onde analisar ABEND?

Principalmente:

  • SDSF;

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT;

  • CEEDUMP.


Como identificar ABEND?

No SDSF normalmente aparece:

ABEND=S0C7

ou:

ABEND=U4038

Tipos de ABEND

Existem dois grandes grupos:


System ABEND

Começa com:

S

Exemplo:

S0C7

Gerado pelo:

sistema operacional.


User ABEND

Começa com:

U

Exemplo:

U4038

Gerado pelo:

programa/aplicação.


Origem histórica do ABEND

Desde os primeiros mainframes IBM, era necessário:

  • detectar falhas;

  • proteger memória;

  • impedir corrupção de dados.

Então o sistema passou a gerar:

códigos de término anormal.

Isso evoluiu para os famosos:

ABENDs.


Como ler um ABEND?


Exemplo

S0C7

S

System ABEND.


0C7

Código específico do erro.


ABENDs mais comuns no mainframe


S0C7

Erro de dados numéricos

O mais famoso do COBOL.


O que causa?

Campo numérico inválido.


Exemplo

Programa espera:

12345

mas recebe:

12A45

Muito comum em:

  • COMP-3;

  • PACKED;

  • DISPLAY numérico.


Como resolver?

  • validar dados;

  • revisar layouts;

  • conferir FILE STATUS;

  • analisar campo inválido.


S0C4

Violação de memória

Programa tentou acessar área inválida.


Causas comuns

  • ponteiro errado;

  • tabela fora do limite;

  • endereço inválido.


Muito comum em

  • Assembler;

  • COBOL avançado;

  • CICS.


S806

Programa não encontrado


Causa

Módulo inexistente na STEPLIB/LINKLIST.


Solução

  • verificar LOADLIB;

  • conferir nome do programa;

  • validar bibliotecas.


SB37

Falta de espaço em disco


Causa

Dataset sem espaço suficiente.


Solução

Aumentar:

  • SPACE;

  • volume;

  • secondary allocation.


SD37

Sem espaço em diretório/bloco.


SE37

Extensões máximas atingidas.


S222

JOB cancelado

Normalmente por operador.


S322

Timeout

JOB excedeu tempo permitido.


U4038

Erro da aplicação

Muito comum em:

  • COBOL;

  • CICS;

  • LE.


Pode indicar

  • STOP RUN incorreto;

  • CALL inválido;

  • falha lógica.


O que é CEEDUMP?

Dump gerado pelo:

Language Environment.

Ajuda debugging:

  • COBOL;

  • C;

  • PL/I.


O que analisar primeiro?


1. RC / ABEND

No SDSF.


2. JESMSGLG

Mensagens JES2.


3. JESYSMSG

Mensagens sistema.


4. SYSOUT

Saída programa.


5. CEEDUMP

Detalhes técnicos.


Fluxo ideal de análise

ABEND
 ↓
RC
 ↓
JESMSGLG
 ↓
JESYSMSG
 ↓
SYSOUT
 ↓
CEEDUMP
 ↓
CAUSA

O que é dump?

Captura do estado da memória durante erro.


Dumps ajudam a descobrir:

  • variáveis;

  • registradores;

  • instruções;

  • falha exata.


Como operadores analisam ABEND?

Eles verificam:

  • mensagens JES2;

  • status batch;

  • spool;

  • impacto operacional.


Como programadores analisam ABEND?

Eles procuram:

  • linha COBOL;

  • SQLCODE;

  • FILE STATUS;

  • dumps;

  • variáveis.


Como ABEND aparece no spool?

Mensagens típicas:

IEC141I
IGZ0006S
CEE3207S

Mensagens importantes


IGZ

Mensagens COBOL.


IEC

Mensagens de dataset/storage.


IEF

Mensagens JCL/sistema.


CEE

Mensagens Language Environment.


Dicas importantes para iniciantes


Sempre leia o final do spool


Procure:

  • ABEND;

  • ERROR;

  • IEC;

  • SQLCODE.


Aprenda principais códigos

S0C7 salva vidas no mainframe.


Use FIND no SDSF

Exemplo:

F ABEND

Curiosidades incríveis

1. Alguns ABENDs existem há décadas


2. Operadores experientes decoram dezenas de códigos


3. S0C7 é praticamente lendário no COBOL


4. Grandes bancos possuem equipes especializadas em troubleshooting de ABEND


Erros comuns de iniciantes


1. Ignorar JESYSMSG

Ali estão muitas pistas.


2. Ler apenas SYSOUT

Erro pode estar em outro arquivo.


3. Não analisar CEEDUMP

Fundamental em COBOL.


4. Assustar-se com qualquer ABEND

Muitos são simples de resolver.


Como evitar ABEND?


Validar dados


Conferir datasets


Revisar JCL


Verificar SPACE


Testar programas


Usar tratamento de erro COBOL


Como ABEND aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • CICS;

  • SORT;

  • batch;

  • automação.


Resumo rápido

ABENDSignificado
S0C7Erro numérico
S0C4Violação memória
S806Programa não encontrado
SB37Falta espaço
S322Timeout
U4038Erro aplicação

Conclusão

ABEND é o mecanismo usado pelo z/OS para indicar falhas anormais durante execução de JOBs e programas.

Aprender a interpretar ABENDs, analisar spool e entender mensagens do sistema é uma das habilidades mais importantes para qualquer profissional mainframe IBM Z.

quinta-feira, 25 de janeiro de 2007

O que são Filas, Classes e MSGLEVEL no JCL?

 

Bellacosa Mainframe explicando em jcl o que sao filas, classes e msglevel

O que são Filas, Classes e MSGLEVEL no JCL?

Quando alguém começa a trabalhar com:

  • JOBs;

  • JES2;

  • SDSF;

  • processamento batch;

rapidamente encontra conceitos como:

  • CLASS;

  • MSGCLASS;

  • filas;

  • MSGLEVEL.

Esses parâmetros controlam:

como o JOB será tratado pelo z/OS.

Eles são fundamentais para:

  • performance;

  • organização batch;

  • prioridade;

  • análise de spool.


Primeiro: o que são filas no mainframe?

Fila significa:

JOB aguardando processamento.

O JES2 organiza JOBs em:

  • ordem;

  • prioridade;

  • categoria;

  • disponibilidade de recursos.


Analogia simples

Imagine um banco.

Existem:

  • filas prioritárias;

  • filas normais;

  • atendimento rápido;

  • atendimento demorado.

O JES2 funciona da mesma forma.


Fluxo simplificado

SUBMIT
   ↓
FILA JES2
   ↓
INITIATOR
   ↓
EXECUÇÃO
   ↓
SPOOL

O que controla essas filas?

Principalmente:

CLASS.


O que é CLASS no JCL?

CLASS define:

a categoria/prioridade do JOB.


Exemplo

//MEUJOB JOB CLASS=A

O que a CLASS influencia?

  • prioridade;

  • tipo de processamento;

  • fila batch;

  • initiators;

  • tempo de execução;

  • políticas operacionais.


Cada empresa define suas classes

Exemplo fictício:

ClasseUso
Aprodução crítica
Btestes
Crelatórios
Tdesenvolvimento
Xprocessamento pesado

Então CLASS não é padrão universal

Cada ambiente define regras próprias.


Como o JES2 usa CLASS?

Ele organiza:

  • quem executa primeiro;

  • quais initiators atendem;

  • quanto recurso usar.


O que é initiator?

Processo que executa JOBs.

Alguns initiators atendem apenas:

  • CLASS=A;

  • CLASS=B;

  • etc.


Exemplo prático

//FINANCE JOB CLASS=A

JOB prioritário.


//TESTE JOB CLASS=T

JOB menos prioritário.


O que é MSGCLASS?

MSGCLASS define:

onde e como mensagens do spool serão tratadas.


Exemplo

MSGCLASS=X

O que isso controla?

  • saída JESMSGLG;

  • JESYSMSG;

  • SYSOUT;

  • retenção spool;

  • visualização SDSF.


Analogia simples

CLASS:

fila do processamento.

MSGCLASS:

fila das mensagens.


Exemplo completo

//MEUJOB JOB CLASS=A,
// MSGCLASS=X

O que é MSGLEVEL?

MSGLEVEL controla:

quantidade de mensagens exibidas no spool.


Exemplo

MSGLEVEL=(1,1)

Estrutura

MSGLEVEL=(x,y)

Primeiro número (x)

Controla:

mensagens JCL.


Segundo número (y)

Controla:

mensagens de alocação e execução.


Valores mais comuns


MSGLEVEL=(1,1)

Mostra:

  • JCL;

  • alocação;

  • execução;

  • mensagens completas.

Muito usado para:

debugging.


MSGLEVEL=(0,0)

Reduz mensagens.

Spool menor.


MSGLEVEL=(2,1)

Mais detalhado ainda.


Exemplo profissional

//PAYROLL JOB CLASS=A,
// MSGCLASS=X,
// MSGLEVEL=(1,1)

O que aparece no spool?

Com MSGLEVEL adequado aparecem:

  • datasets;

  • allocations;

  • DDs;

  • execução;

  • mensagens JES2.


Por que MSGLEVEL é importante?

Ajuda:

  • troubleshooting;

  • análise de erro;

  • debugging;

  • suporte.


Se MSGLEVEL estiver baixo…

…mensagens importantes podem desaparecer.


Como filas aparecem no SDSF?

No painel:

ST

ou:

I

Status comuns


INPUT

JOB aguardando execução.


ACTIVE

JOB executando.


OUTPUT

JOB finalizado.


HOLD

JOB parado aguardando liberação.


O que é HOLD?

JOB fica:

retido na fila.


O que é prioridade batch?

Algumas classes executam antes de outras.


Exemplo real

Produção:

CLASS=A

Testes:

CLASS=T

Produção normalmente possui prioridade maior.


O que é TYPRUN?

Outro parâmetro relacionado.


Exemplo

TYPRUN=SCAN

Valida JCL sem executar.


Muito usado para testes


Como operadores usam classes?

Para:

  • controlar workload;

  • separar ambientes;

  • evitar overload;

  • priorizar batch crítico.


Como programadores usam MSGLEVEL?

Para:

  • analisar erros;

  • entender ABENDs;

  • verificar alocação.


Exemplo clássico completo

//MEUJOB JOB CLASS=A,
// MSGCLASS=X,
// MSGLEVEL=(1,1)

Resultado

  • JOB prioritário;

  • spool completo;

  • mensagens detalhadas.


Curiosidades incríveis

1. Grandes bancos possuem dezenas de classes JES2


2. Algumas classes executam apenas à noite


3. MSGLEVEL ajuda muito em troubleshooting COBOL


4. Controle de filas é essencial em processamento massivo


Erros comuns de iniciantes


1. Confundir CLASS com MSGCLASS

CLASS:
processamento.

MSGCLASS:
mensagens.


2. Usar MSGLEVEL baixo durante debugging

Isso esconde informações.


3. Escolher classe errada

Pode atrasar execução.


4. Ignorar filas HOLD

JOB pode nunca executar.


Dicas importantes

Durante testes use:

MSGLEVEL=(1,1)

Aprenda classes do seu ambiente


Leia JESMSGLG sempre


Verifique status no SDSF


Como isso aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • batch;

  • automação;

  • produção;

  • operações.


Resumo rápido

ConceitoSignificado
CLASSPrioridade/fila do JOB
MSGCLASSClasse das mensagens
MSGLEVELQuantidade de mensagens
HOLDJOB parado
INPUTAguardando
ACTIVEExecutando
OUTPUTFinalizado

Conclusão

Filas, classes e MSGLEVEL são componentes fundamentais do processamento batch no z/OS.

Eles controlam prioridade, organização, execução e detalhamento das mensagens dos JOBs, permitindo que o JES2 administre milhares de processamentos simultaneamente de forma eficiente dentro do ambiente mainframe IBM Z.

quarta-feira, 24 de janeiro de 2007

O que é PROC no JCL?

 

Bellacosa Mainframe o que é PROC em Job JCL

O que é PROC no JCL?

Quando começamos a trabalhar com JCL em ambientes corporativos, rapidamente encontramos algo muito importante:

PROC

Ela é uma das estruturas mais usadas em produção no z/OS.

Praticamente todo ambiente mainframe grande utiliza:

  • PROCs;

  • bibliotecas PROC;

  • variáveis simbólicas;

  • JCL reutilizável.


O que significa PROC?

PROC significa:

Procedure

Em português:

procedimento reutilizável.


Definição simples

Uma PROC é:

um JCL reutilizável.

Ela permite:

  • evitar repetição;

  • padronizar execução;

  • facilitar manutenção;

  • reutilizar STEPs.


Analogia simples

Imagine uma receita pronta.

Em vez de escrever toda a receita novamente:

  • você reutiliza o modelo;

  • apenas troca alguns ingredientes.

PROC funciona exatamente assim.


Problema que PROC resolve

Imagine uma empresa com:

  • 500 JOBs;

  • todos executando SORT;

  • DB2;

  • backup;

  • mesmas etapas.

Sem PROC:

  • muito JCL duplicado;

  • manutenção difícil;

  • alto risco operacional.


Então surgiu a PROC

Ela permite:

centralizar lógica JCL.


Exemplo sem PROC

//STEP1 EXEC PGM=SORT
//SORTIN DD ...
//SORTOUT DD ...
//SYSIN DD ...

Repetido centenas de vezes.


Exemplo com PROC

//STEP1 EXEC PROC=SORTPROC

Muito mais simples.


Onde a PROC fica?

Normalmente em:

bibliotecas PROC.

Exemplo:

SYS1.PROCLIB

ou:

USUARIO.PROCLIB

Como o sistema encontra PROC?

Usando:

JCLLIB

ou bibliotecas configuradas no JES2.


Estrutura básica de PROC


Exemplo simples

//MINHAPRC PROC
//STEP1   EXEC PGM=IEFBR14
//PEND

Entendendo


PROC

Início da procedure.


PEND

Fim da procedure.


Como usar PROC?

No JOB:

//STEP1 EXEC PROC=MINHAPRC

Fluxo simples

JOB
 ↓
EXEC PROC
 ↓
JES2 expande PROC
 ↓
EXECUÇÃO

O que significa “expandir PROC”?

O JES2 substitui:

EXEC PROC

pelo conteúdo real da PROC.


O usuário vê isso?

Sim.

No spool:

JESJCL

mostra o JCL expandido.


O que são variáveis simbólicas?

Um dos recursos mais importantes das PROCs.

Também chamadas:

symbolic parameters.


Elas funcionam como variáveis

Permitem alterar:

  • datasets;

  • programas;

  • parâmetros;

  • classes;

  • SYSOUT.

Sem alterar a PROC original.


Exemplo simples

//MINHAPRC PROC ARQ=CLIENTES
//STEP1 EXEC PGM=MEUPGM
//INPUT DD DSN=&ARQ,
//      DISP=SHR
//PEND

O que significa "&ARQ"?

Variável simbólica.


Como usar?

//STEP1 EXEC PROC=MINHAPRC,
//       ARQ=PRODUCAO.CLIENTES

Resultado expandido

//INPUT DD DSN=PRODUCAO.CLIENTES

Isso é extremamente poderoso

Porque permite:

  • reutilização;

  • flexibilidade;

  • padronização.


Variáveis mais comuns


Dataset

&DSN

Classe

&CLASS

Programa

&PGM

SYSOUT

&OUT

Exemplo profissional

//COBPROC PROC PGM=COBPGM,
//             IN=CLIENTE.ARQ,
//             OUT=RELAT.SAIDA
//STEP1 EXEC PGM=&PGM
//INPUT DD DSN=&IN,DISP=SHR
//OUTPUT DD DSN=&OUT,
// DISP=(NEW,CATLG,DELETE)
//PEND

Chamada

//STEP1 EXEC PROC=COBPROC,
// PGM=FINANCE,
// IN=FINAN.ENTRADA,
// OUT=FINAN.SAIDA

O que é PROC catalogada?

PROC armazenada em:

PROCLIB.

Mais comum em produção.


O que é PROC inline?

PROC escrita dentro do próprio JOB.


Exemplo inline

//MINHA PROC
//STEP1 EXEC PGM=IEFBR14
//PEND
//
//JOB1 EXEC MINHA

Vantagens da PROC


Reutilização


Padronização


Menos erros


Manutenção centralizada


Menos duplicação


Muito usada em produção


O que é override?

Alterar parâmetros da PROC no JOB.


Exemplo

PROC:

//STEP1 EXEC PGM=COBOL

JOB:

//STEP1.STEP1 EXEC PGM=TESTE

Isso substitui o EXEC original


O que é nested PROC?

PROC chamando outra PROC.

Muito usado em ambientes grandes.


O que é JCLLIB?

Define bibliotecas PROC.


Exemplo

//JCLLIB JCLLIB ORDER=USUARIO.PROCLIB

O que acontece se PROC não for encontrada?

Erro no JESJCL.

Exemplo:

PROC NOT FOUND

Curiosidades incríveis

1. Grandes bancos possuem milhares de PROCs


2. Muitas automações batch dependem delas


3. Algumas PROCs existem há décadas


4. PROCs ajudam muito em padronização operacional


Erros comuns de iniciantes


1. Esquecer PEND

Erro clássico.


2. Variável simbólica incorreta

Exemplo:

&ARQ

não definida.


3. PROC não encontrada

Problema de PROCLIB.


4. Override errado

Pode alterar execução sem perceber.


Dicas importantes

Sempre use nomes claros


Padronize variáveis


Leia JESJCL expandido


Use PROC para lógica repetitiva


Como PROC aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • backups;

  • produção batch;

  • automação.


Por que aprender PROC?

Porque PROC é:

uma das estruturas mais importantes do JCL corporativo.

Quem domina PROC entende:

  • automação batch;

  • reutilização JCL;

  • produção z/OS;

  • arquitetura operacional.


Resumo rápido

ConceitoSignificado
PROCJCL reutilizável
PENDFinal da PROC
Symbolic ParameterVariável JCL
PROCLIBBiblioteca de PROC
OverrideSubstituição de parâmetro
Inline PROCPROC dentro do JOB
Cataloged PROCPROC em biblioteca

Conclusão

PROC é um dos recursos mais poderosos do JCL no ambiente z/OS.

Ela permite reutilizar etapas batch, padronizar processamento e criar JOBs flexíveis usando variáveis simbólicas, sendo fundamental para operações corporativas em mainframe IBM Z.