Translate

Mostrar mensagens com a etiqueta Operação Mainframe. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Operação Mainframe. Mostrar todas as mensagens

segunda-feira, 17 de fevereiro de 2020

🔥💣 REXX + CICS: O “CENTRO DE COMANDO SECRETO” DO z/OS — 30 LABORATÓRIOS PRÁTICOS QUE TRANSFORMAM UM ANALISTA DE PRODUÇÃO EM UM MESTRE DA AUTOMAÇÃO MAINFRAME 💣🔥

 

Bellacosa Mainframe laboratorio pratico REXX e CICS

🔥💣 REXX + CICS: O “CENTRO DE COMANDO SECRETO” DO z/OS — 30 LABORATÓRIOS PRÁTICOS QUE TRANSFORMAM UM ANALISTA DE PRODUÇÃO EM UM MESTRE DA AUTOMAÇÃO MAINFRAME 💣🔥

☕ Introdução

Existe um momento na carreira de todo Analista de Produção Senior em Mainframe em que ele percebe uma verdade brutal:

“Quem domina automação no CICS deixa de apagar incêndio… e começa a controlar o incêndio antes dele nascer.”

E é exatamente aqui que entra o velho — porém absurdamente poderoso — REXX.

Enquanto muita gente ainda usa REXX apenas para pequenos scripts no TSO, os veteranos sabem:

🔥 REXX consegue:

  • conversar com CICS
  • operar consoles
  • controlar filas
  • monitorar transações
  • automatizar recovery
  • analisar dumps
  • integrar SDSF
  • conversar com DB2
  • chamar APIs
  • acionar comandos MVS
  • gerar alertas inteligentes

Tudo isso com poucas linhas.

Este laboratório foi pensado para:

  • Analistas de Produção Senior
  • Operadores avançados
  • Especialistas z/OS
  • Equipes de automação
  • Times de observabilidade mainframe

🚀 Estrutura do Laboratório

Cada caso possui:

✅ Objetivo
✅ Cenário real
✅ Passo a passo
✅ Código exemplo
✅ Dicas de produção
✅ Curiosidades Bellacosa Mainframe
✅ Solução operacional


🔥 LAB 01 — Consultando Status de Região CICS

🎯 Objetivo

Automatizar consulta de status da região CICS.


☕ Cenário Real

O operador precisa verificar:

  • se a região está ativa
  • número de tasks
  • uso de CPU
  • mensagens de erro

🚀 Passo a Passo

1. Criar EXEC REXX

ADDRESS SDSF

"ISFEXEC ST"

DO IX = 1 TO JNAME.0

IF POS("CICS", JNAME.IX) > 0 THEN
SAY JNAME.IX STATUS.IX

END

🔥 Resultado Esperado

CICSA ACTIVE
CICSB ACTIVE

💡 Dica Senior

Nunca dependa apenas de:

  • ping
  • VTAM
  • TCP/IP

Uma região pode responder rede e estar:

  • hung
  • loopando
  • sem dispatcher

☕ Curiosidade

Grandes bancos possuem robôs REXX monitorando CICS desde os anos 90.

Muita automação “moderna” apenas reinventou isso.


🔥 LAB 02 — Derrubando Transações Presas

🎯 Objetivo

Cancelar transações em loop.


🚀 Comando CICS

CEMT SET TASK(12345) PURGE

🚀 Automação REXX

ADDRESS TSO

TASK = 12345

CMD = "F CICSPROD,CEMT SET TASK("TASK") PURGE"

"CONSOLE "CMD

💡 Dica Senior

Sempre validar:

  • tempo de execução
  • CPU
  • enqueue
  • wait type

antes de purgar.


🔥 LAB 03 — Monitorando Número de Tasks

ADDRESS SDSF

"ISFEXEC ST"

TOTAL = 0

DO I = 1 TO JNAME.0

IF POS("CICS",JNAME.I) > 0 THEN
TOTAL = TOTAL + 1

END

SAY "REGIOES CICS:",TOTAL

🔥 LAB 04 — Detectando Região Travada

🎯 Estratégia

Comparar:

  • CPU baixa
  • tasks altas
  • ausência de logs

🚀 Exemplo

IF CPU < 1 & TASKS > 500 THEN
SAY "POSSIVEL HANG"

🔥 LAB 05 — Automatizando CEMT INQ TASK

ADDRESS TSO

"CONSOLE F CICSPROD,CEMT INQ TASK"

🔥 LAB 06 — Restart Automático de Região CICS

🚨 Cenário

Região caiu inesperadamente.


🚀 Fluxo

  1. Detecta DOWN
  2. Verifica horário permitido
  3. Sobe região
  4. Valida startup
  5. Gera alerta

🚀 Exemplo

"START CICSPRD"

🔥 LAB 07 — Verificando SOS (Short On Storage)

IF POS("SOS",MSG) > 0 THEN
SAY "ALERTA CRITICO"

🔥 LAB 08 — Ler JESMSGLG Automaticamente

ADDRESS SDSF
"ISFEXEC ST"

SAY "LENDO JESMSGLG..."

🔥 LAB 09 — Detectar Abend AEI9

IF POS("AEI9",LINHA) > 0 THEN
SAY "TRANSACAO INVALIDA"

🔥 LAB 10 — Automação de CEDF

🎯 Objetivo

Automatizar tracing de transações.


"CONSOLE F CICSPROD,CEDF TRANS(PGMA)"

🔥 LAB 11 — Monitor de Deadlocks

IF POS("DEADLOCK",MSG) > 0 THEN
SAY "DB2 DEADLOCK DETECTADO"

🔥 LAB 12 — Captura Automática de Dumps

"CONSOLE DUMP COMM=(CICSABEND)"

🔥 LAB 13 — Monitorando VSAM Locks

IF POS("ENQUEUE",MSG) > 0 THEN
SAY "LOCK VSAM"

🔥 LAB 14 — Robô de Health Check CICS

Checklist

✅ Tasks
✅ Storage
✅ CPU
✅ MQ
✅ DB2
✅ VTAM


🔥 LAB 15 — Integração REXX + SDSF + CICS

ADDRESS SDSF
"ISFEXEC DA"

🔥 LAB 16 — Restart Inteligente Pós-Abend

Estratégia

Nunca restartar:

  • em loop
  • acima de X falhas
  • fora da janela

🔥 LAB 17 — Monitorando Transações Long Running

IF TEMPO > 300 THEN
SAY "TRANSACAO SUSPEITA"

🔥 LAB 18 — Gerando Alertas Operacionais

SAY "ENVIANDO ALERTA PARA NOC"

🔥 LAB 19 — Detectando Storage Violation

IF POS("ASRA",MSG) > 0 THEN
SAY "POSSIVEL STORAGE VIOLATION"

🔥 LAB 20 — Operando CICS Pelo Console MVS

"CONSOLE F CICSPROD,CEMT INQ SYS"

🔥 LAB 21 — Monitorando MQ no CICS

IF POS("MQ",MSG) > 0 THEN
SAY "MQ ISSUE"

🔥 LAB 22 — Auditoria de Comandos Operacionais

QUEUE USERID DATE TIME CMD

🔥 LAB 23 — Detectando Loops de CPU

IF CPU > 90 THEN
SAY "LOOP CPU"

🔥 LAB 24 — Shutdown Controlado

"CONSOLE F CICSPROD,CEMT P SHUT"

🔥 LAB 25 — Coleta Automática de Estatísticas

SAY "GERANDO RELATORIO"

🔥 LAB 26 — Integração com DB2

ADDRESS DSNREXX

🔥 LAB 27 — Automação de Recovery

Fluxo

  1. Detecta erro
  2. Coleta dump
  3. Reinicia recurso
  4. Valida aplicação

🔥 LAB 28 — Detectando Flood de Tasks

IF TASKS > 5000 THEN
SAY "FLOOD DETECTADO"

🔥 LAB 29 — Operação Multi-CICS

DO FOREVER

Monitorando dezenas de regiões simultaneamente.


🔥 LAB 30 — Central de Automação Mainframe

🎯 Objetivo Final

Construir:

  • console inteligente
  • monitor operacional
  • auto recovery
  • observabilidade
  • automação enterprise

Tudo em REXX.


🚀 Arquitetura Recomendada

REXX
├── SDSF
├── CONSOLE
├── CICS
├── DB2
├── MQ
├── JES2
├── VTAM
└── SYSLOG

☕ Dicas de Ouro de Produção Senior

🔥 Nunca automatize sem rollback

Toda automação precisa:

  • validação
  • fallback
  • retry
  • logging
  • auditoria

🔥 REXX pode derrubar um banco inteiro

Um EXEC mal feito:

  • purga task errada
  • derruba região
  • gera storm de comandos

Produção não perdoa.


🔥 Monitore antes de agir

Senior não automatiza “ação”.

Senior automatiza:

  • decisão
  • contexto
  • diagnóstico

💣 Curiosidades Bellacosa Mainframe

☕ O REXX virou “DevOps” antes do DevOps existir

Muito antes de:

  • Ansible
  • Terraform
  • Kubernetes
  • Jenkins

o mainframe já fazia:

  • automação
  • self-healing
  • orchestration
  • monitoramento inteligente

com:

  • REXX
  • NetView
  • OPS/MVS
  • System Automation

🚀 Missão Final do Curso

Ao terminar estes 30 laboratórios você será capaz de:

✅ Automatizar CICS
✅ Criar robôs operacionais
✅ Detectar incidentes automaticamente
✅ Fazer self-healing
✅ Integrar múltiplos subsistemas
✅ Construir observabilidade real no z/OS
✅ Reduzir MTTR
✅ Operar ambientes enterprise críticos


🔥 Frase Final Bellacosa Mainframe

“No mundo distribuído o operador reage ao problema.

No Mainframe automatizado o problema já foi resolvido antes do telefone tocar.” 🚀☕

 

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.

segunda-feira, 22 de janeiro de 2007

Como Submeter JOBs no Mainframe z/OS

 

Bellacosa Mainframe em como submeter jobs no Mainframe

Como Submeter JOBs no Mainframe z/OS

Depois de aprender:

  • JCL;

  • JOB;

  • JES2;

  • SDSF;

chega uma das etapas mais importantes do mundo mainframe:

submeter um JOB.

É nesse momento que o processamento batch realmente começa.


O que significa “submeter”?

Submeter significa:

enviar um JOB para execução.

Quando fazemos isso:

  • o JES2 recebe o JCL;

  • valida sintaxe;

  • coloca o JOB na fila;

  • inicia processamento batch.


Analogia simples

Imagine enviar uma ordem de produção para uma fábrica.

O JOB seria:

a ordem de serviço.

Submeter significa:

entregar essa ordem para a central operacional.


O que é necessário antes?

Você precisa ter:

  • um JCL;

  • acesso TSO/ISPF;

  • autorização RACF;

  • datasets corretos.


Exemplo simples de JCL

//MEUJOB JOB CLASS=A,MSGCLASS=X
//STEP1  EXEC PGM=IEFBR14

O que esse JOB faz?

Executa:

IEFBR14

Programa muito usado para testes simples.


Onde criar o JCL?

Normalmente em:

  • PDS;

  • PDSE.


Exemplo de biblioteca

USUARIO.JCL

Exemplo de membro

USUARIO.JCL(TESTE)

Como editar?

No ISPF:

opção 2 (EDIT)

ou:

EDIT 'USUARIO.JCL(TESTE)'

Como submeter um JOB?

Existem várias formas.


Método mais comum: comando SUBMIT

Dentro do editor ISPF:

SUBMIT

ou simplesmente:

SUB

O que acontece depois?

O sistema responde algo parecido com:

IKJ56250I JOB MEUJOB(JOB12345) SUBMITTED

O que significa isso?


MEUJOB

Nome do JOB.


JOB12345

JOBID.

Identificador único.


O JOB foi para o JES2

Agora ele:

  • entra na fila;

  • aguarda recursos;

  • executa;

  • gera spool.


Como acompanhar o JOB?

Usando:

SDSF


Entrando no SDSF

Digite:

SDSF

Painel principal

Mais usado:

ST


O que aparece?

NP JOBNAME JOBID OWNER STATUS

Como visualizar resultado?

Digite:

?

ou:

S

ao lado do JOB.


O que aparece?

Arquivos do spool:

  • JESJCL;

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT.


Arquivos importantes


JESJCL

JCL interpretado.


JESMSGLG

Mensagens JES2.


JESYSMSG

Mensagens do sistema.


SYSOUT

Saída do programa.


O que é RC?

Return Code

Código de retorno do JOB.


Exemplo

CC 0000

Significa:

sucesso.


Outros exemplos

CC 0004

Warning.

CC 0012

Erro.


O que é ABEND?

Erro anormal de execução.

Exemplo:

  • dataset inexistente;

  • erro COBOL;

  • problema JCL.


Fluxo completo do JOB

USUÁRIO
   ↓
SUBMIT
   ↓
JES2
   ↓
FILA
   ↓
INITIATOR
   ↓
EXECUÇÃO
   ↓
SPOOL
   ↓
SDSF

O que é initiator?

Processo responsável por:

executar JOBs.


O que é spool?

Área temporária onde ficam:

  • logs;

  • mensagens;

  • SYSOUT;

  • relatórios.


Como cancelar JOB?

No SDSF:

C

Como colocar HOLD?

H

Como liberar HOLD?

A

Como apagar spool?

P

O que é HOLD?

JOB fica aguardando liberação.


O que é CLASS?

Classe do JOB.

Exemplo:

CLASS=A

Define:

  • prioridade;

  • fila;

  • política batch.


O que é MSGCLASS?

Classe das mensagens do spool.


Exemplo

MSGCLASS=X

Como submeter fora do editor?

Também é possível:

SUBMIT 'USUARIO.JCL(TESTE)'

Isso é muito usado em TSO


Como programadores usam JOBs?

Para:

  • executar COBOL;

  • rodar SORT;

  • acessar DB2;

  • gerar relatórios;

  • integração batch.


Como operadores usam JOBs?

Para:

  • monitorar batch;

  • verificar falhas;

  • analisar spool;

  • controlar produção.


Curiosidades incríveis

1. Grandes bancos submetem milhões de JOBs diariamente


2. Alguns batchs noturnos processam bilhões de registros


3. O conceito de JOB existe há décadas

E continua extremamente relevante.


4. O JES2 consegue gerenciar enormes volumes batch simultaneamente


Erros comuns de iniciantes


1. Dataset inexistente

Erro clássico.


2. Esquecer permissões RACF


3. Ignorar RC

Pode esconder falhas.


4. Não verificar JESMSGLG

Muitas mensagens importantes ficam ali.


Dicas importantes

Sempre confira:

  • RC;

  • JESMSGLG;

  • JESYSMSG.


Use IEFBR14 para testes simples


Aprenda SDSF junto com JCL


Leia mensagens $HASP

Elas mostram:

  • início;

  • fim;

  • status do JOB.


Exemplo clássico

$HASP373 JOB STARTED
$HASP395 JOB ENDED

Por que aprender submissão de JOB?

Porque isso é:

o coração do processamento batch no z/OS.

Quem domina submissão de JOB entende:

  • JCL;

  • JES2;

  • SDSF;

  • spool;

  • operações mainframe.


Resumo rápido

ConceitoSignificado
SUBMITEnviar JOB
JES2Gerencia JOB
SDSFMonitora JOB
RCReturn Code
SPOOLÁrea de saída
JOBIDIdentificador
INITIATORExecuta JOB

Conclusão

Submeter JOBs é uma das atividades mais importantes do ambiente mainframe IBM Z.

É através desse processo que o z/OS executa tarefas batch corporativas críticas, controlando programas, datasets e processamento automatizado de forma extremamente confiável e eficiente.


domingo, 21 de janeiro de 2007

Introdução ao JCL

 

Bellacosa Mainframe e a introdução ao JCL

Introdução ao JCL

Quando alguém começa a estudar mainframe IBM, rapidamente encontra uma sigla extremamente importante:

JCL

Ela é uma das bases do ambiente z/OS.

Praticamente todo processamento batch no mainframe depende dela.


O que significa JCL?

JCL significa:

Job Control Language

Em português:

Linguagem de Controle de JOBs


Definição simples

O JCL é a linguagem usada para:

  • executar programas;

  • controlar JOBs;

  • manipular datasets;

  • definir arquivos;

  • organizar processamento batch no z/OS.


Uma analogia fácil

Imagine uma cozinha industrial.

O cozinheiro seria:

o programa COBOL.

O JCL seria:

a folha de instruções da cozinha.

Ela informa:

  • o que executar;

  • quais ingredientes usar;

  • onde buscar arquivos;

  • onde gravar resultados;

  • ordem das etapas.


O JCL é uma linguagem de programação?

Não exatamente.

Ele é:

uma linguagem de controle.

O JCL não faz cálculos como COBOL.

Ele:

  • organiza execução;

  • controla recursos;

  • conversa com o sistema operacional.


O que o JCL controla?


Programas

COBOL, SORT, DB2, utilitários.


Datasets

Arquivos de entrada e saída.


Recursos

Disco, spool, memória.


Execução batch

Processamento automático.


Estrutura básica de um JCL

Um JCL normalmente possui:

  • JOB

  • EXEC

  • DD


Exemplo simples

//MEUJOB JOB CLASS=A,MSGCLASS=X
//STEP1  EXEC PGM=IEFBR14
//ARQ1   DD DSN=USUARIO.TESTE,
//       DISP=SHR

Entendendo linha por linha


JOB

Define o JOB.


EXEC

Executa programa.


DD

Define datasets e arquivos.


O que significa "//"?

Cada instrução JCL começa com:

//

Isso identifica comandos para o z/OS.


O que é JOB?

Primeira instrução do JCL.

Exemplo:

//PAYROLL JOB CLASS=A

Ela define:

  • nome;

  • classe;

  • parâmetros batch.


O que é EXEC?

Executa programas.

Exemplo:

//STEP1 EXEC PGM=COBOLPG

PGM significa:

Program


O que é DD?

DD significa:

Data Definition

Define arquivos usados pelo programa.


Exemplo

//INPUT DD DSN=CLIENTES.ARQ,
//      DISP=SHR

O que é DSN?

Dataset Name

Nome do dataset.


O que é DISP?

Define status do dataset.


DISP=SHR

Compartilhado.


DISP=OLD

Uso exclusivo.


DISP=NEW

Novo dataset.


O que é STEP?

Etapa do JOB.

Um JOB pode possuir vários STEPs.


Exemplo

//STEP1 EXEC PGM=SORT
//STEP2 EXEC PGM=COBOLPG
//STEP3 EXEC PGM=IDCAMS

Fluxo simplificado

JCL
 ↓
JES2
 ↓
FILA
 ↓
EXECUÇÃO
 ↓
SPOOL
 ↓
SDSF

O que é JES2?

Subsistema que controla:

  • JOBs;

  • spool;

  • filas batch.


O que é spool?

Área temporária onde ficam:

  • logs;

  • SYSOUT;

  • relatórios.


Como executar JCL?

No ISPF:

SUBMIT

O que acontece depois?

O JES2:

  • valida;

  • agenda;

  • executa;

  • gera spool.


Onde ver resultado?

Normalmente no:

SDSF.


Arquivos importantes do spool


JESJCL

Mostra JCL interpretado.


JESMSGLG

Mensagens JES2.


JESYSMSG

Mensagens do sistema.


SYSOUT

Saída do programa.


O que é SYSOUT?

Saída gerada pelo JOB.

Exemplo:

//SYSOUT DD SYSOUT=*

O que é CLASS?

Classe do JOB.

Controla:

  • prioridade;

  • tratamento;

  • execução.


O que é MSGCLASS?

Classe das mensagens do spool.


O que é COND?

Controla execução condicional.


Exemplo

COND=(0,NE)

O que é PROC?

Procedure.

JCL reutilizável.

Muito usado em produção.


O que é utility?

Programas utilitários do z/OS:

  • IEBGENER;

  • SORT;

  • IDCAMS;

  • IEHLIST.


Exemplo famoso: IEFBR14

Programa “dummy” muito usado para:

  • criar;

  • deletar;

  • testar datasets.


Exemplo clássico

//STEP1 EXEC PGM=IEFBR14

O JCL ainda é usado hoje?

Muito.

Principalmente em:

  • bancos;

  • seguradoras;

  • governos;

  • processamento financeiro.


Curiosidades incríveis

1. Muitos JCLs possuem décadas de existência


2. Grandes bancos executam milhões de JOBs JCL diariamente


3. O conceito de batch continua extremamente importante


4. O JCL influenciou vários schedulers modernos


Erros comuns de iniciantes


1. Esquecer "//"

Erro clássico.


2. Dataset inexistente

Muito comum.


3. DISP errado

Pode causar falha ou lock.


4. Ignorar SYSOUT

Ali ficam mensagens importantes.


O que é ABEND?

Erro anormal de execução.

Muito comum em:

  • JCL;

  • datasets;

  • COBOL.


Como JCL aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • backups;

  • integração;

  • automação;

  • batch.


Mensagens famosas


$HASP373

JOB iniciado.


$HASP395

JOB finalizado.


Exemplo

$HASP373 PAYROLL STARTED
$HASP395 PAYROLL ENDED

Por que aprender JCL?

Porque ele é:

a espinha dorsal do processamento batch no z/OS.

Quem domina JCL entende:

  • JOBs;

  • spool;

  • JES2;

  • datasets;

  • operações mainframe.


Resumo rápido

ConceitoSignificado
JCLLinguagem de controle
JOBProcessamento batch
EXECExecuta programa
DDDefine datasets
JES2Gerencia JOBs
SDSFMonitora spool
SYSOUTSaída do JOB

Conclusão

O JCL é uma das tecnologias mais importantes do ambiente mainframe IBM Z.

Ele controla a execução de JOBs batch, organiza programas e datasets, e permite automatizar o processamento corporativo crítico dentro do z/OS.


sábado, 20 de janeiro de 2007

O que é JOB?

 

Bellacosa Mainframe o que é job

O que é JOB?

Quando alguém começa a estudar mainframe, uma das primeiras palavras que aparecem é:

JOB

Ele é um dos conceitos mais importantes do ambiente z/OS.

Praticamente todo processamento batch no mainframe acontece através de JOBs.


Definição simples

JOB é:

um conjunto de instruções que o z/OS executa em modo batch.

Essas instruções dizem ao sistema:

  • qual programa executar;

  • quais arquivos usar;

  • quais recursos alocar;

  • o que fazer durante o processamento.


Uma analogia fácil

Imagine um cozinheiro em uma cozinha industrial.

O JOB seria:

a receita completa.

Ela informa:

  • ingredientes;

  • ordem das etapas;

  • tempo;

  • resultado esperado.

O z/OS segue essa “receita” automaticamente.


O que significa batch?

Batch significa:

processamento em lote.

Ou seja:
tarefas executadas automaticamente, sem interação constante do usuário.


Exemplos de JOBs

  • folha salarial;

  • fechamento bancário;

  • backup;

  • geração de relatórios;

  • processamento de cartões;

  • integração de sistemas.


O JOB é um programa?

Não exatamente.

O JOB é:

um container de execução.

Dentro dele podem existir:

  • programas COBOL;

  • SORT;

  • utilitários;

  • DB2;

  • scripts;

  • procedures.


Como um JOB é escrito?

Usando:

JCL


O que é JCL?

JCL significa:

Job Control Language

É a linguagem usada para criar JOBs no z/OS.


Exemplo simples de JOB

//MEUJOB JOB CLASS=A,MSGCLASS=X
//STEP1  EXEC PGM=IEFBR14

Entendendo linha por linha


//MEUJOB JOB

Define:

  • nome do JOB;

  • informações de controle.


CLASS=A

Classe do JOB.

Define prioridade e tratamento.


MSGCLASS=X

Classe das mensagens e spool.


STEP1

Nome do passo.


EXEC PGM=IEFBR14

Executa um programa.


O que é STEP?

JOB é dividido em:

etapas.

Cada etapa é chamada:

STEP.


Um JOB pode ter vários STEPs

Exemplo:

//STEP1 EXEC PGM=SORT
//STEP2 EXEC PGM=COBOLPGM
//STEP3 EXEC PGM=IDCAMS

Fluxo de um JOB

USUÁRIO
   ↓
SUBMIT
   ↓
JES2
   ↓
FILA
   ↓
EXECUÇÃO
   ↓
SPOOL
   ↓
RESULTADO

Como executar um JOB?

No ISPF:
digitar:

SUBMIT

O que acontece depois?

O JES2:

  • recebe;

  • valida;

  • coloca em fila;

  • executa;

  • gera spool.


O que é spool?

Área temporária onde ficam:

  • logs;

  • SYSOUT;

  • relatórios;

  • mensagens.


Onde visualizar resultado?

Normalmente no:

SDSF.


O que aparece no SDSF?

  • JOBID;

  • status;

  • spool;

  • SYSOUT;

  • RC;

  • mensagens.


O que é JOBID?

Identificador único do JOB.

Exemplo:

JOB12345

O que é RC?

Return Code

Código de retorno.


Exemplo

CC 0000

Indica:

sucesso.


Outros exemplos

CC 0004

Warning.

CC 0012

Erro.


O que é ABEND?

Erro anormal de execução.

Muito comum em:

  • COBOL;

  • JCL;

  • datasets;

  • DB2.


O que é initiator?

Processo do z/OS que executa JOBs.


O JES2 executa JOB?

Não diretamente.

Ele:

  • controla;

  • agenda;

  • gerencia filas.

Quem executa é:

initiator.


O que um JOB pode fazer?

Praticamente tudo:

  • executar COBOL;

  • ordenar arquivos;

  • copiar datasets;

  • acessar DB2;

  • gerar relatórios;

  • backups;

  • integração.


JOB online existe?

Normalmente JOB é:

batch.

Online geralmente usa:

  • CICS;

  • IMS;

  • aplicações interativas.


O que é JOB batch noturno?

Grandes empresas executam milhares de JOBs durante a madrugada.

Exemplo:

  • fechamento bancário;

  • faturamento;

  • PIX;

  • cartões;

  • folha salarial.


Curiosidades incríveis

1. Bancos executam milhões de JOBs diariamente


2. Muitos JOBs existem há décadas


3. O processamento batch continua extremamente importante

Mesmo na era cloud.


4. O conceito de JOB influenciou schedulers modernos


Erros comuns de iniciantes


1. Confundir JOB com programa

JOB executa programas.


2. Ignorar spool

Ali ficam mensagens fundamentais.


3. Não verificar RC

Pode esconder erros importantes.


4. Esquecer datasets no JCL

Erro clássico de iniciantes.


O que é scheduler?

Ferramenta que agenda JOBs automaticamente.

Exemplos:

  • Control-M;

  • CA7;

  • OPC/TWS.


Como JOB aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • backups;

  • relatórios;

  • integração;

  • automação.


Mensagens famosas de JOB


$HASP373

JOB iniciado.


$HASP395

JOB finalizado.


Exemplo

$HASP373 PAYROLL STARTED
$HASP395 PAYROLL ENDED

Por que aprender JOB?

Porque ele é:

a base do processamento batch no z/OS.

Quem entende JOB entende:

  • JCL;

  • JES2;

  • spool;

  • batch;

  • operações mainframe.


Resumo rápido

ConceitoSignificado
JOBProcessamento batch
JCLLinguagem de controle
STEPEtapa do JOB
JES2Gerencia JOBs
SDSFMonitora JOBs
RCReturn Code
SpoolÁrea de saída

Conclusão

JOB é o mecanismo central de processamento batch no ambiente mainframe IBM Z.

Ele permite executar programas, manipular datasets e automatizar tarefas corporativas críticas através do JCL, sendo peça fundamental do funcionamento do z/OS moderno.

terça-feira, 16 de janeiro de 2007

O que é JES2?

 

Bellacosa Mainframe e o que é jes2

O que é JES2?

Quando alguém começa a estudar mainframe, rapidamente encontra nomes como:

  • JOB;

  • spool;

  • batch;

  • SDSF;

  • JES2.

E logo surge a pergunta:

Quem controla os JOBs no z/OS?

A resposta normalmente é:

JES2

Ele é um dos componentes mais importantes do ambiente mainframe.


O que significa JES2?

JES2 significa:

Job Entry Subsystem 2

Em português:

Subsistema de Entrada de Jobs


Definição simples

O JES2 é o componente do z/OS responsável por:

  • receber JOBs;

  • controlar execução batch;

  • gerenciar spool;

  • controlar impressões;

  • organizar filas de processamento.


Uma analogia fácil

Imagine um grande aeroporto.

Existem:

  • aviões;

  • filas;

  • pistas;

  • autorização de decolagem;

  • controle de tráfego.

O JES2 funciona como:

a torre de controle dos JOBs do mainframe.

Ele decide:

  • quem entra;

  • quem espera;

  • quem executa;

  • quem terminou.


O que é um JOB?

JOB é um processamento batch.

Exemplo:

  • folha salarial;

  • fechamento bancário;

  • relatórios;

  • backup;

  • processamento financeiro.


O que o JES2 faz?


1. Recebe JOBs

Quando o usuário executa:

SUBMIT

o JOB vai para o JES2.


2. Coloca em fila

O JES2 organiza:

  • prioridade;

  • classe;

  • recursos;

  • ordem de execução.


3. Controla spool

Armazena:

  • SYSOUT;

  • logs;

  • relatórios;

  • mensagens.


4. Inicia execução

Quando recursos ficam disponíveis:
o JES2 libera o JOB.


5. Finaliza processamento

Depois:

  • guarda saída;

  • libera recursos;

  • mantém logs.


O que é spool?

Spool significa:

Simultaneous Peripheral Operations Online

É uma área temporária onde ficam:

  • saídas;

  • relatórios;

  • SYSOUT;

  • mensagens batch.


Analogia simples

Imagine:

uma fila de impressão gigante.

O JES2 organiza tudo antes da saída final.


Fluxo simplificado do JES2

USUÁRIO
   ↓
SUBMIT
   ↓
JES2
   ↓
FILA
   ↓
EXECUÇÃO
   ↓
SPOOL
   ↓
OUTPUT

O JES2 executa o JOB?

Não diretamente.

Quem executa é:

o initiator.

O JES2:

  • controla;

  • agenda;

  • organiza.


O que é initiator?

Processo que executa JOBs batch.

O JES2 entrega JOBs para ele.


O que é classe no JES2?

Os JOBs podem possuir:

  • classes;

  • prioridades;

  • políticas.

Exemplo:

//JOBNAME JOB CLASS=A

Isso ajuda o sistema a organizar workload

Por exemplo:

  • jobs rápidos;

  • jobs pesados;

  • produção;

  • testes.


O que é SYSOUT?

Saída gerada pelo JOB.

Exemplo:

  • relatórios;

  • mensagens;

  • logs COBOL.


Onde visualizar JOBs?

Principalmente via:

SDSF


Painéis famosos do SDSF


ST

Status dos JOBs.


DA

Jobs ativos.


O

Output.


H

Held output.


Como um JOB entra no JES2?

Exemplo simples:

//MEUJOB JOB ...
//STEP1 EXEC PGM=IEFBR14

Usuário executa:

SUBMIT

O JES2 recebe o JOB.


O que é HOLD?

JOB fica parado aguardando liberação.


O que é CANCEL?

Cancela JOB.


O que é purge?

Remove JOB do spool.


O que é output class?

Classe da saída SYSOUT.

Exemplo:

//SYSOUT=A

O JES2 controla impressoras?

Historicamente:
sim.

Hoje também controla:

  • saída eletrônica;

  • spool digital;

  • relatórios.


JES2 vs JES3

Existem dois grandes subsistemas históricos:


JES2

Mais popular.

Mais simples e distribuído.


JES3

Controle mais centralizado.

Hoje JES2 domina a maioria dos ambientes.


O JES2 ainda é usado?

Muito.

Principalmente em:

  • bancos;

  • seguradoras;

  • governos;

  • processamento financeiro.


Curiosidades incríveis

1. O JES2 existe há décadas

E continua essencial.


2. Bilhões de JOBs passam pelo JES2

Todos os anos.


3. Grande parte do sistema financeiro depende dele

Principalmente batch noturno.


4. O spool é uma das áreas mais críticas do z/OS

Sem spool o batch praticamente para.


O que iniciantes costumam confundir?


1. Pensar que JES2 executa programas diretamente

Quem executa é o initiator.


2. Confundir JES2 com SDSF

JES2 = subsistema
SDSF = interface de monitoramento.


3. Ignorar classes

Elas afetam:

  • prioridade;

  • execução;

  • workload.


4. Confundir spool com dataset comum

Spool possui gerenciamento especial.


Como o JES2 aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • batch;

  • SORT;

  • backups;

  • DB2;

  • relatórios;

  • automação.


Mensagens famosas do JES2


$HASP

Prefixo clássico do JES2.

Exemplo:

$HASP373 JOB STARTED

$HASP395

JOB finalizado.


Essas mensagens são lendárias no mundo mainframe


Por que aprender JES2?

Porque ele é:

o coração do processamento batch do z/OS.

Quem entende JES2 entende:

  • batch;

  • spool;

  • execução de JOBs;

  • operação mainframe.


Resumo rápido

ConceitoSignificado
JES2Gerenciador de JOBs
JOBProcessamento batch
SpoolÁrea de saída temporária
SYSOUTSaída do JOB
InitiatorExecuta JOB
SDSFInterface de monitoramento
CLASSPrioridade/categoria

Conclusão

O JES2 é um dos componentes mais importantes do z/OS.

Ele funciona como a central de controle do processamento batch, organizando JOBs, spool, filas e execução dentro do ambiente mainframe IBM Z.

Mesmo após décadas de existência, continua sendo peça fundamental da computação corporativa moderna.