Translate

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.

terça-feira, 23 de janeiro de 2007

Como Ler, Entender e Analisar as Mensagens no Spool

Bellacosa Mainframe como ler e entender o spool do sdsf


Como Ler, Entender e Analisar as Mensagens no Spool

Uma das habilidades mais importantes no mundo mainframe é aprender a:

  • interpretar spool;

  • entender mensagens JES2;

  • analisar erros;

  • identificar ABENDs;

  • descobrir por que um JOB falhou.

Quem domina spool consegue:

  • resolver problemas rapidamente;

  • entender processamento batch;

  • analisar COBOL;

  • trabalhar com operações z/OS.


Primeiro: o que é spool?

Spool é a área onde ficam armazenados:

  • logs;

  • SYSOUT;

  • mensagens;

  • relatórios;

  • saídas batch.

Tudo que acontece em um JOB normalmente aparece no:

spool.


Onde visualizar o spool?

Principalmente no:

SDSF.


Entrando no SDSF

Digite:

SDSF

Painel mais usado

ST

Mostra:

  • JOBs;

  • status;

  • JOBID;

  • RC.


Exemplo típico

NP JOBNAME JOBID OWNER STATUS

Como abrir spool do JOB?

Digite:

?

ou:

S

ao lado do JOB.


O que aparece dentro do spool?

Arquivos importantes:

  • JESJCL;

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT;

  • CEEDUMP.


A ordem correta de análise

Iniciantes costumam se perder.

O ideal é seguir esta sequência:


1. Verificar RC

Return Code


Exemplo

CC 0000

Indica:

sucesso.


Outros exemplos

CC 0004

Warning.

CC 0008

Erro moderado.

CC 0012

Erro grave.


Se houver ABEND

Exemplo:

S0C7

ou:

U4038

Então existe erro anormal.


2. Ler JESMSGLG

Um dos arquivos mais importantes.

Ele mostra:

  • mensagens JES2;

  • início do JOB;

  • fim do JOB;

  • alocação;

  • spool;

  • status batch.


Mensagens clássicas

$HASP373 JOB STARTED

JOB iniciado.


$HASP395 JOB ENDED

JOB finalizado.


O que procurar?

  • dataset não encontrado;

  • problemas de autorização;

  • falhas JCL;

  • mensagens system.


3. Ler JESJCL

Mostra:

como o sistema interpretou o JCL.


Muito útil para encontrar:

  • erros de sintaxe;

  • parâmetros inválidos;

  • datasets errados.


Exemplo comum

JCL ERROR

4. Ler JESYSMSG

Mostra mensagens do:

z/OS.

Muito importante para:

  • alocação;

  • datasets;

  • ABENDs;

  • execução.


Mensagens clássicas


Dataset não encontrado

DATA SET NOT FOUND

Falta de espaço

SPACE NOT AVAILABLE

Dataset em uso

DATA SET IN USE

5. Ler SYSOUT

Aqui normalmente aparece:

  • saída COBOL;

  • relatórios;

  • DISPLAY;

  • resultados do programa.


Exemplo COBOL

DISPLAY 'PROCESSAMENTO OK'

Aparece no SYSOUT.


Como identificar erros COBOL?

Procurar:

  • FILE STATUS;

  • SQLCODE;

  • ABEND;

  • mensagens LE.


O que é ABEND?

Abnormal End

Erro anormal de execução.


ABENDs famosos


S0C7

Erro de dados numéricos.

Muito comum em COBOL.


S0C4

Violação de memória.


S806

Programa não encontrado.


SB37

Falta de espaço em disco.


O que é CEEDUMP?

Dump gerado pelo:

Language Environment (LE).

Ajuda debugging COBOL.


Como analisar spool corretamente?


Comece pelo fim

Muitos erros aparecem perto do final.


Procure palavras-chave

  • ERROR

  • ABEND

  • IEC

  • IEF

  • SQLCODE

  • NOT FOUND


Observe mensagens $HASP

Elas mostram:

  • início;

  • fim;

  • status.


Exemplo completo de análise


Passo 1

RC:

CC 0012

Problema detectado.


Passo 2

JESMSGLG mostra:

IEF212I DATA SET NOT FOUND

Passo 3

Identificar dataset incorreto no JCL.


Resultado

Erro encontrado.


Como operadores analisam spool?

Eles verificam:

  • falhas batch;

  • tempo de execução;

  • filas;

  • spool;

  • mensagens críticas.


Como programadores analisam spool?

Eles procuram:

  • ABEND;

  • SQLCODE;

  • DISPLAY;

  • SYSOUT;

  • retorno COBOL.


Curiosidades incríveis

1. Operadores passam horas analisando spool diariamente


2. Grandes bancos geram milhões de linhas de spool


3. Muitas falhas críticas são descobertas apenas lendo spool


4. Saber interpretar mensagens é habilidade extremamente valorizada


Erros comuns de iniciantes


1. Ignorar RC

Primeira coisa que deveria ser verificada.


2. Ler apenas SYSOUT

Muitas falhas aparecem no JESMSGLG.


3. Não entender ABEND

ABEND indica erro sério.


4. Procurar erro no começo do spool

Frequentemente está no final.


Dicas extremamente importantes

Sempre leia:

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT.


Aprenda mensagens IEC e IEF

São muito comuns.


Memorize principais ABENDs

Isso acelera troubleshooting.


Use FIND no SDSF

Exemplo:

F ERROR

Como isso aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • batch;

  • automação;

  • operações;

  • suporte.


Fluxo mental ideal

RC
 ↓
JESMSGLG
 ↓
JESYSMSG
 ↓
SYSOUT
 ↓
ABEND
 ↓
CORREÇÃO

Por que aprender análise de spool?

Porque isso é:

uma das habilidades mais importantes do z/OS.

Quem domina spool domina:

  • troubleshooting;

  • batch;

  • operações;

  • COBOL;

  • JES2;

  • SDSF.


Resumo rápido

ArquivoFunção
JESJCLJCL interpretado
JESMSGLGMensagens JES2
JESYSMSGMensagens do sistema
SYSOUTSaída da aplicação
CEEDUMPDump COBOL/LE

Conclusão

Aprender a ler e interpretar mensagens no spool é fundamental para qualquer profissional mainframe.

O spool contém todas as informações necessárias para entender o comportamento dos JOBs, identificar erros, analisar ABENDs e realizar troubleshooting eficiente no ambiente z/OS 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.

sexta-feira, 19 de janeiro de 2007

A Origem das Mensagens $HASP no Mainframe

 

Bellacosa Mainframe e as origem das mensagens Hasp

A Origem das Mensagens $HASP no Mainframe

Quem trabalha com:

  • JES2;

  • SDSF;

  • operações z/OS;

  • processamento batch;

rapidamente encontra mensagens como:

$HASP373 JOB12345 STARTED

ou:

$HASP395 JOB12345 ENDED

Essas mensagens são extremamente famosas no mundo mainframe.

Mas pouca gente conhece sua verdadeira origem histórica.


O que significa $HASP?

HASP significa:

Houston Automatic Spooling Priority


Origem histórica

O HASP nasceu nos anos 1960.

Naquela época, os mainframes IBM começaram a enfrentar um grande problema:

  • muitas impressoras;

  • leitores de cartão;

  • filas batch;

  • dispositivos lentos;

  • grande volume de JOBs.

Era necessário criar um sistema que organizasse:

  • spool;

  • prioridades;

  • entrada e saída batch.


Então surgiu o HASP

O sistema foi desenvolvido originalmente pela:

Universidade de Houston

Por isso:

Houston Automatic Spooling Priority.


O objetivo inicial

Melhorar:

  • gerenciamento de filas;

  • uso de impressoras;

  • throughput batch;

  • desempenho operacional.


O que o HASP fazia?

Ele controlava:

  • spool;

  • impressão;

  • leitores de cartão;

  • execução batch;

  • prioridades.


A IBM gostou tanto da ideia…

…que incorporou o HASP ao sistema operacional.

Com o tempo ele evoluiu para:

JES2.


Relação entre HASP e JES2

Historicamente:

HASP
   ↓
HASP II
   ↓
JES2

Então JES2 veio do HASP?

Sim.

O JES2 é descendente direto do antigo HASP.

Por isso até hoje as mensagens continuam usando:

$HASP


O que significa o símbolo "$"?

No JES2:

"$"

normalmente indica:

  • comandos;

  • mensagens do subsistema.


Exemplo clássico

$HASP100

Mensagem do JES2/HASP.


Mensagens famosas do HASP


$HASP373

JOB iniciado.

Exemplo:

$HASP373 MEUJOB STARTED

$HASP395

JOB finalizado.

Exemplo:

$HASP395 MEUJOB ENDED

$HASP250

JOB aguardando execução.


$HASP099

Mensagens gerais do JES2.


Por que as mensagens continuaram?

Compatibilidade histórica.

O mainframe IBM possui uma característica lendária:

preservar compatibilidade por décadas.

Então:

  • programas antigos;

  • automações;

  • operadores;

  • documentações;

continuaram usando:

$HASP.


Isso virou tradição no mainframe

Hoje:

  • operadores reconhecem mensagens HASP instantaneamente;

  • automações monitoram $HASP;

  • sistemas batch dependem delas.


O que as mensagens HASP informam?

Elas mostram:

  • início de JOB;

  • fim de JOB;

  • status batch;

  • spool;

  • erros;

  • filas;

  • impressoras;

  • initiators.


Onde aparecem?

Principalmente em:

  • SDSF;

  • JESMSGLG;

  • consoles z/OS;

  • logs operacionais.


Exemplo real no SDSF

$HASP373 PAYROLL STARTED
$HASP395 PAYROLL ENDED - RC=0000

O que é RC?

Return Code.

Indica:

  • sucesso;

  • warning;

  • erro.


As mensagens HASP ainda são usadas?

Muito.

Praticamente todos os ambientes JES2 modernos continuam exibindo:

$HASP.


O HASP existia antes do z/OS?

Sim.

Muito antes.

Ele surgiu ainda na era:

  • OS/360;

  • cartões perfurados;

  • impressoras line printer.


O que era spool naquela época?

Os JOBs eram enviados por:

  • cartões;

  • leitores físicos;

  • impressoras gigantes.

O HASP ajudava a organizar tudo.


Curiosidade histórica incrível

Antes do HASP…

muitos sistemas processavam tarefas quase manualmente.

O HASP revolucionou:

automação batch.


O que é HASP II?

Evolução do HASP original.

Mais avançado e mais eficiente.

Foi a base direta do:

JES2.


JES2 ainda usa conceitos do HASP?

Sim.

Muitos conceitos continuam:

  • spool;

  • filas;

  • classes;

  • prioridades;

  • mensagens.


Curiosidades incríveis

1. HASP nasceu em universidade

E virou padrão mundial.


2. O prefixo $HASP sobrevive há décadas

Mesmo após várias gerações do z/OS.


3. Operadores experientes decoram códigos HASP


4. Muitas automações monitoram mensagens HASP em tempo real


O que iniciantes costumam confundir?


1. Pensar que HASP é produto separado

Hoje ele está incorporado ao JES2.


2. Achar que mensagens $HASP são erros

Muitas são apenas status normais.


3. Confundir JES2 com HASP

JES2 é evolução do HASP.


4. Ignorar mensagens JESMSGLG

Ali ficam muitas mensagens HASP importantes.


Como isso aparece no dia a dia?

Em praticamente toda operação batch:

  • submit;

  • spool;

  • execução;

  • término;

  • cancelamento.


Exemplo clássico de fluxo

SUBMIT
   ↓
$HASP100
   ↓
$HASP373
   ↓
EXECUÇÃO
   ↓
$HASP395

Por que aprender isso?

Porque entender HASP ajuda a compreender:

  • origem do JES2;

  • spool;

  • batch;

  • história do z/OS;

  • evolução operacional do mainframe.


Resumo rápido

ConceitoSignificado
HASPHouston Automatic Spooling Priority
OrigemUniversidade de Houston
Evoluiu paraJES2
$HASP373JOB started
$HASP395JOB ended
SpoolGerenciamento batch
JES2Descendente do HASP

Conclusão

As mensagens $HASP são herança direta de um dos sistemas mais importantes da história do mainframe.

Criado originalmente na Universidade de Houston, o HASP revolucionou o gerenciamento batch e evoluiu para o JES2 moderno, mantendo até hoje suas mensagens clássicas dentro do ambiente z/OS IBM Z.


quinta-feira, 18 de janeiro de 2007

O que é Spool?

 

Bellacosa Mainframe o que é spool

O que é Spool?

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

  • JES2;

  • SDSF;

  • SYSOUT;

  • batch;

  • spool.

E normalmente surge a pergunta:

O que exatamente é spool?

A resposta é simples:

spool é uma área temporária usada para armazenar saídas e entradas de JOBs.

Mas por trás disso existe um dos mecanismos mais importantes do z/OS.


O que significa Spool?

Spool significa:

Simultaneous Peripheral Operations Online


Definição simples

O spool funciona como:

uma área intermediária de armazenamento temporário.

Ele guarda:

  • relatórios;

  • SYSOUT;

  • logs;

  • mensagens;

  • saídas batch;

  • arquivos de impressão.


Uma analogia fácil

Imagine uma impressora de escritório.

Várias pessoas enviam documentos ao mesmo tempo.

A impressora não imprime tudo imediatamente.

Então existe:

uma fila temporária.

O spool funciona exatamente assim.


O que o spool faz?

Ele:

  • recebe saídas dos JOBs;

  • organiza filas;

  • armazena temporariamente;

  • libera saída quando necessário.


Onde o spool é usado?

Principalmente em:

  • JES2;

  • JES3;

  • SDSF;

  • processamento batch.


Fluxo simples do spool

JOB
 ↓
EXECUÇÃO
 ↓
SYSOUT
 ↓
SPOOL
 ↓
SDSF
 ↓
USUÁRIO

O que fica armazenado no spool?


SYSOUT

Saída do JOB.


Logs

Mensagens do sistema.


Relatórios

Resultados batch.


Mensagens JES2

Status e execução.


Dumps

Informações de erro e ABEND.


O que é SYSOUT?

SYSOUT significa:

saída do sistema.

Exemplo:

//SYSOUT DD SYSOUT=*

O que acontece quando um JOB termina?

O resultado normalmente vai para:

spool.

Depois o usuário visualiza via:

SDSF.


O spool é um dataset?

Internamente o spool usa estruturas especiais do sistema.

Ele não funciona como um dataset comum.


Quem controla o spool?

Normalmente:

JES2

ou:

JES3.


O SDSF acessa o spool

Ele permite:

  • visualizar;

  • pesquisar;

  • administrar saídas.


Como visualizar spool?

No SDSF:

  • ST;

  • O;

  • H;

  • LOG.


Exemplo no SDSF

NP JOBNAME JOBID OWNER STATUS

Selecionando o JOB aparecem:

  • JESMSGLG;

  • JESJCL;

  • JESYSMSG;

  • SYSOUT.


Arquivos clássicos do spool


JESJCL

JCL interpretado.


JESMSGLG

Mensagens JES2.


JESYSMSG

Mensagens do sistema.


SYSOUT

Relatórios da aplicação.


CEEDUMP

Dump em caso de erro.


O que é HOLD?

Saída pode ficar:

retida no spool.

Aguardando:

  • análise;

  • impressão;

  • liberação.


O que é purge?

Remover saída do spool.


O spool ocupa disco?

Sim.

O spool utiliza armazenamento DASD.


Por que o spool é importante?

Porque praticamente todo processamento batch depende dele.

Sem spool:

  • JOBs falham;

  • relatórios somem;

  • impressão para;

  • operações batch quebram.


O que é spool full?

Quando o espaço do spool acaba.

Isso pode causar:

  • paralisação batch;

  • falha de JOBs;

  • problemas críticos.


Operadores monitoram spool constantemente

Especialmente em:

  • bancos;

  • processamento noturno;

  • grandes batchs.


Como o spool ajuda performance?

Ele desacopla:

  • execução;

  • impressão;

  • leitura;

  • saída.

Tudo pode acontecer em momentos diferentes.


Analogia simples

Sem spool:

  • JOB teria de esperar impressora.

Com spool:

  • JOB termina rapidamente;

  • impressão acontece depois.


O spool ainda é usado hoje?

Muito.

Mesmo com:

  • PDFs;

  • relatórios digitais;

  • cloud;

  • automação.

O conceito continua essencial.


O que é spool dataset?

Área interna usada pelo JES2 para armazenar spool.


O que é spool offload?

Transferência do spool para:

  • backup;

  • arquivamento;

  • retenção.


O que é output class?

Classe de saída.

Exemplo:

//SYSOUT=A

Define:

  • prioridade;

  • destino;

  • tratamento da saída.


O que é writer?

Processo responsável por:

  • imprimir;

  • transferir;

  • processar saídas spool.


Curiosidades incríveis

1. O spool existe desde os primeiros mainframes


2. O conceito influenciou sistemas modernos de fila


3. Grandes bancos geram milhões de páginas de spool diariamente


4. Muitos problemas operacionais começam por spool cheio


Erros comuns de iniciantes


1. Confundir spool com dataset comum

Spool possui gerenciamento especial.


2. Apagar spool importante

Pode remover logs críticos.


3. Ignorar SYSOUT

Ali ficam mensagens fundamentais.


4. Não monitorar espaço spool

Isso pode derrubar batchs.


Como o spool aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • JCL;

  • batch;

  • relatórios;

  • DB2;

  • SORT;

  • automação.


Exemplo real

Programa COBOL:

DISPLAY 'PROCESSAMENTO OK'

Mensagem aparece no:

spool.


Como acessar rapidamente?

No SDSF:

ST

Selecionar JOB:

?

Por que aprender spool?

Porque ele é:

uma das bases do processamento batch no z/OS.

Quem entende spool entende:

  • JES2;

  • SDSF;

  • SYSOUT;

  • operações;

  • troubleshooting.


Resumo rápido

ConceitoSignificado
SpoolÁrea temporária batch
SYSOUTSaída do JOB
JES2Gerencia spool
SDSFVisualiza spool
HOLDRetém saída
PURGERemove spool
Output ClassClasse de saída

Conclusão

O spool é um dos mecanismos mais importantes do ambiente mainframe IBM Z.

Ele permite armazenar, organizar e controlar entradas e saídas de JOBs batch com eficiência, garantindo que o processamento no z/OS aconteça de forma rápida, organizada e confiável.