domingo, 15 de agosto de 2010

SMP/E for z/OS Workshop : BUILDMCS, LINK MODULE e LINK LMODS

 

Bellacosa Mainframe apresenta SMP/E buildmcs link lmods e module

SMP/E for z/OS Workshop

BUILDMCS, LINK MODULE e LINK LMODS

Quando o SMP/E deixa de ser manutenção e vira engenharia de produto

Até agora, no mundo SMP/E, falamos muito de rotina operacional:
RECEIVE, APPLY, ACCEPT, RESTORE.
O famoso arroz com feijão do dia a dia.

Mas existe um outro SMP/E.
Menos usado.
Mais poderoso.
Mais perigoso se mal compreendido.

Hoje entramos no território de product build, onde aparecem três comandos que não são para iniciantes:

  • BUILDMCS

  • LINK MODULE

  • LINK LMODS

Aqui o SMP/E deixa de ser só manutenção e passa a ser engenharia reversa, migração e reconstrução de produtos.


SMP/E e a visão estrutural do z/OS

O SMP/E enxerga o z/OS como uma hierarquia:

  • 🔹 Elementos simples (SRC, MAC, MOD, PARM)

  • 🔹 Objetos intermediários (OBJ, módulos)

  • 🔹 Estruturas complexas (LMODs)

  • 🔹 Bibliotecas do sistema (target libraries)

Tanto o APPLY quanto os processos de geração de produto fazem a mesma coisa no fundo:

Pegam módulos, macros, source e dados
e combinam tudo para gerar load modules e bibliotecas executáveis

O segredo está em como o SMP/E entende essa estrutura:
👉 entries e subentries no CSI


Revisão rápida das principais subentries (a base de tudo)

🔹 DISTLIB=

Aponta para a distribution library
(cópia oficial, aceita, segura)

🔹 FMID=

Define o nível funcional

Quem é o dono original do elemento

🔹 RMID / UMID=

Definem o nível de serviço

Última substituição e atualizações

🔹 SYSLIB=

Usado por SRC, MAC, DATA, HFS
Define o DDNAME da target library

🔹 LMOD=

Usado em MODULE entries
Direciona o SMP/E para a estrutura do load module

Sem entender isso, BUILDMCS vira magia negra.


Distribution Zone: conteúdo sem estrutura

Um ponto crítico que muita gente erra:

Na DZONE não existe estrutura de LMOD

Na distribution zone:

  • Existem MOD entries

  • Não existem LMOD= subentries

  • O foco é conteúdo, não link-edit

A estrutura só nasce no target, durante APPLY, GENERATE ou LINK.


BUILDMCS – o “clonar produto” do SMP/E

O que é o BUILDMCS?

O BUILDMCS analisa um target zone ou distribution zone
e gera um SYSMOD funcional completo, contendo:

  • ++FUNCTION

  • ++MOD, ++MAC, ++SRC, ++PARM, ++HFS

  • ++JCLIN completo

  • FROMDS apontando para as DLIBs

📦 Resultado:

Um SYSMOD portátil, capaz de reinstalar um produto inteiro em outro ambiente SMP/E


Para que isso existe no mundo real?

Cenários clássicos:

  • Migração de produto entre ambientes

  • Criação de novo CSI

  • Consolidação de sistemas

  • Produto sem mais mídia oficial

  • Ambientes isolados (sem internet, sem Shopz)

BUILDMCS cria uma imagem funcional completa do produto, incluindo:

  • Função

  • Serviço

  • Usermods já aplicados


O que o BUILDMCS NÃO faz

🚫 Não altera o ambiente original
🚫 Não aplica nem aceita nada
🚫 Não “adivinha” dependências externas

Ele fotografa o estado atual do produto.


Como o BUILDMCS funciona por dentro

1️⃣ Analisa o zone (T ou D)
2️⃣ Reconstrói MCS a partir do CSI
3️⃣ Usa FROMDS para apontar para DLIBs
4️⃣ Gera SYSMOD superseding
5️⃣ Grava tudo no SMPPUNCH

Depois disso:

RECEIVE APPLY ACCEPT

em outro ambiente.


Relatórios gerados pelo BUILDMCS

BUILDMCS não é silencioso. Ele gera:

📄 Function Summary Report

  • FMIDs processados

  • SYSMODs substituídos

📄 Entry Summary Report

  • Todos os elementos do FMID

  • MODs, LMODs, DDDEFs

📄 Subentry Summary Report

  • Detalhe fino de cada entry

Se você não leu esses relatórios, você não sabe o que copiou.


⚠️ Restrições do BUILDMCS (a parte que cai em produção)

BUILDMCS não é para todo produto.

Problemas aparecem quando existem:

❌ Load modules compartilhados

Um LMOD com módulos de mais de um produto

❌ Elementos comuns

Mesmo nome e tipo fornecido por produtos diferentes

❌ VERSION, ASSEM, PREFIX

Essas operações não são recriadas

❌ Informações ausentes no Target Zone

  • LEPARM

  • ALIAS

  • DALIAS

Resultado?
👉 SYSMOD gerado incompleto ou incorreto


LINK MODULE – resolvendo dependência entre target zones

Agora imagine isso:

  • Produto A em TZONE1

  • Produto B em TZONE2

  • Um LMOD precisa de módulos dos dois

Sem reinstalar nada.

👉 LINK MODULE resolve isso


O que o LINK MODULE faz?

  • Reexecuta o link-edit

  • Inclui módulos faltantes

  • Atualiza ambos os target zones

  • Cria relacionamento cruzado (TIEDTO)

Tudo isso sem APPLY, sem ACCEPT.


Como o SMP/E documenta isso?

Após o LINK MODULE:

  • XZMODP no LMOD que foi relinkado

  • XZLMODP nos módulos envolvidos

  • TIEDTO nos dois target zones

Isso garante que o SMP/E:

  • Saiba da dependência

  • Avise (ou relinke automaticamente) no futuro


XZLINK – avisar ou agir?

No TIEDTO ZONE:

  • XZLINK(DEFERRED)
    👉 Apenas avisa possível inconsistência

  • XZLINK(AUTOMATIC)
    👉 SMP/E relinka automaticamente

Escolha errada aqui = surpresa em manutenção futura.


LINK LMODS – o REPORT CALLIBS que deu certo

O LINK LMODS substitui o antigo REPORT CALLIBS.

Ele:

  • Identifica LMODs por nome ou CALLIBS

  • Localiza todos os módulos

  • Executa link-edit direto nas target libraries

  • Tem CHECK mode

  • Tenta recuperação automática (compress + retry)

É APPLY sem SYSMOD.


Resumo Bellacosa Mainframe

ComandoPapel
BUILDMCSClona um produto
LINK MODULEResolve dependência entre zones
LINK LMODSRelinka LMODs diretamente

Frase final (estilo Bellacosa)

RECEIVE instala mídia.
APPLY constrói código.
ACCEPT oficializa.
RESTORE ensina humildade.
BUILDMCS revela quem realmente entende SMP/E.

No próximo módulo, entramos em LIST e REPORT — onde o SMP/E finalmente começa a contar a verdade sobre o seu sistema.

sábado, 14 de agosto de 2010

☕🔥 JCL & Produção Batch Mainframe — a engenharia silenciosa que move bilhões

 

Bellacosa Mainframe apresenta JCL Job Control Language


☕🔥 JCL & Produção Batch Mainframe — a engenharia silenciosa que move bilhões 


Se você já otimizou STEP para caber na janela, já analisou RC 0004 com cara de 0012, já salvou processamento crítico com um COND= bem colocado, então este texto não é introdutório.
É JCL raiz, técnico, com cheiro de CPD, café requentado e responsabilidade financeira.


🕰️ Origem & História — por que o JCL ainda governa o mundo

O JCL (Job Control Language) nasce junto com o conceito de processamento em lote nos grandes centros de dados, quando:

  • Processar tudo “online” era inviável

  • O custo de CPU precisava ser controlado

  • O erro precisava ser detectável, tratável e auditável

Enquanto linguagens vêm e vão, o JCL ficou porque:

  • É determinístico

  • É declarativo

  • É governável

  • É auditável

Verdade histórica:

Toda fintech moderna ainda depende de batch — só não admite.


🏦 Por que bancos, telecom e gigantes globais usam Mainframe

Empresas que processam milhões de transações críticas exigem:

  • Alta disponibilidade (24x7)

  • Integridade absoluta

  • Escalabilidade previsível

  • Segurança nativa

  • Throughput sob pico

A Plataforma IBM Mainframe entrega:

  • Sysplex

  • Parallel Sysplex

  • z/OS

  • DB2, CICS, MQ

  • RACF, SMF, RMF

🔥 El Jefe truth:

Cloud escala. Mainframe sustenta.


🧠 JCL não é script — é contrato operacional

JCL define:

  • O que roda

  • Quando roda

  • Com quais recursos

  • Com quais dados

  • O que acontece se falhar

Ele não executa lógica de negócio.
Ele orquestra o sistema operacional.

📌 Exemplo clássico:

//STEP01 EXEC PGM=PROG01,COND=(4,LT)
//DD01  DD DSN=BASE.DADOS.ENTRADA,DISP=SHR

Comentário ácido:

JCL errado não falha — impacta.


⚙️ Funcionamento do Processamento Batch

Fluxo real:

  1. Job submetido

  2. JES valida sintaxe

  3. Initiator seleciona

  4. Recursos alocados

  5. Programas executam

  6. RC avaliados

  7. Próximo STEP decide

  8. Output gerado

  9. SLA confirmado ou perdido

🔥 Veterano sabe:

O problema raramente está no STEP que abendou.


🧩 Ecossistema Operacional — as ferramentas de poder

🧑‍💻 TSO — o shell do z/OS

  • Execução direta

  • Diagnóstico rápido

  • REXX, CLIST, comandos

Curiosidade:

Quem domina TSO resolve problema sem ticket.


🗂️ ISPF/PDF — produtividade industrial

  • Editor poderoso

  • Gestão de datasets

  • Browse inteligente

  • Macros

🔥 Easter egg:

PF7 e PF8 são memória muscular.


📊 SDSF — o raio-X da produção

  • Jobs

  • STCs

  • Spool

  • Syslog

  • Comandos

📌 Uso clássico:

SDSF DA / ST / H

Verdade dura:

SDSF é onde a verdade aparece.


🧪 JCL na prática — decisões de veterano

COND vs IF/THEN/ELSE

  • COND = simples e perigoso

  • IF/THEN = legível e controlável

🔥 Regra de produção:

COND errado roda STEP que não deveria.


Alocação de Recursos

  • DISP

  • SPACE

  • UNIT

  • VOL

Fofoquice técnica:

DISP=SHR mal usado já derrubou banco.


Tratamento de Erros

  • RC esperado ≠ sucesso

  • RC aceitável ≠ erro

  • Abend ≠ falha total

📌 Exemplo:

// IF (STEP01.RC <= 4) THEN

🛠️ Utilitários do Sistema — os bastidores

  • IEBGENER

  • IDCAMS

  • SORT / ICETOOL

  • IEBCOPY

  • DFSORT

🔥 Veterano:

Quem domina utilitário domina batch.


🧠 Lógica Estruturada aplicada ao Batch

Mesmo sem “programar”:

  • Sequência

  • Decisão

  • Repetição (simulada)

  • Modularização por STEP

Comentário ácido:

JCL ruim é código espaguete sem goto.


🧨 Atividades Operacionais & de Análise

Produção batch exige:

  • Leitura de mensagens

  • Análise de dumps

  • Correlação entre jobs

  • Impacto em cadeia

  • Comunicação com negócio

🔥 Verdade cruel:

Produção não tem replay.


🥚 Easter Eggs & Curiosidades do Batch

  • Todo ambiente tem um job “imortal”

  • Sempre existe um dataset “temporário” de 10 anos

  • O maior medo é:

    “Rodou fora da janela…”

  • RC 0000 nem sempre é vitória


☕🔥 Conclusão — Manifesto El Jefe Batch

JCL não é:

  • Legado morto

  • Linguagem simples

  • Detalhe operacional

JCL é:

  • Coluna vertebral do processamento corporativo

  • Contrato de execução

  • Instrumento de controle de risco

☕🔥 Quem domina JCL,
não escreve jobs —
governa o processamento de dados.

Se quiser, posso:

  • Criar labs de produção real

  • Montar checklist de análise de jobs

  • Criar guia JCL para veteranos

  • Produzir versão acadêmica ou institucional

  • Montar trilha Batch + JCL + SDSF + RACF

É só chamar.

sexta-feira, 13 de agosto de 2010

☕ Lei da Responsabilidade

 

Bellacosa Mainframe e a lei da responsabilidade

Lei da Responsabilidade

ou: quem deu o SUBMIT é dono do JOB

Vou falar em primeira pessoa, porque essa lei eu não aprendi em livro — eu aprendi na marra, entre JCL mal formatado, JOB em ABEND e decisões da vida que também não tinham //SYSOUT=* pra revisar depois.


📜 Origem – de onde vem essa lei?

A Lei da Responsabilidade nasce da mesma matriz que:

  • o estoicismo (assuma o que depende de você),

  • a ética clássica,

  • e o famoso “cada ação gera consequência”.

No Japão, ela conversa muito bem com conceitos como giri (dever moral), sekinin (責任 – responsabilidade) e até com o mottainai: não desperdiçar oportunidades nem ações.

No mainframe?
Ela está implícita desde o primeiro dia:

“Quem submeteu o JOB é responsável pelo resultado.”

Simples. Brutal. Justo.


🧠 O que essa lei significa?

Significa entender que:

  • escolhas têm efeitos,

  • omissões também são escolhas,

  • e não existe rollback da vida.

Na TI e na vida:

  • Se deu certo → mérito.

  • Se deu errado → aprendizado (ou ABEND).

Culpar:

  • o sistema,

  • o colega,

  • o tempo,

  • o governo,

  • Mercúrio retrógrado,

é só uma forma elegante de rodar em WAIT indefinido.


🖥️ Tradução Bellacosa Mainframe

  • Você escreveu o JCL → você testa.

  • Você abriu a regra no RACF → você responde.

  • Você fez o DEPLOY sexta à noite → você não some.

Na vida:

  • Escolheu o caminho → sustente.

  • Falou → arque.

  • Prometeu → cumpra.

Responsabilidade é ownership, não culpa.


🛠️ Como praticar no dia a dia

  • Pare de terceirizar decisões.

  • Pare de dizer “não tive escolha”.

  • Tenha coragem de dizer: “fui eu”.

Dica prática:

Antes de qualquer decisão, pergunte:
“Eu topo lidar com a consequência disso?”

Se a resposta for não, não submeta o JOB.


🥚 Easter eggs & curiosidades

  • Em japonês corporativo, assumir erro rápido aumenta confiança, não diminui.

  • Em times maduros, quem assume falhas vira referência.

  • No mainframe, os melhores profissionais são os que dizem:
    “deixa comigo” — e ficam até resolver.


☕ Fofoquices do El Jefe

Já vi muito “senior” desaparecer quando o batch estourou.
E já vi muito “junior” crescer porque ficou até o último IEC999I virar sucesso.

Responsabilidade constrói reputação silenciosamente.


🧭 Como entender de verdade

Não confunda responsabilidade com peso.
Ela é liberdade com consciência.

Quando você assume:

  • ganha autonomia,

  • ganha respeito,

  • ganha paz.


🌏 Importância para a vida (e para o Japão)

No Japão, responsabilidade mantém:

  • confiança social,

  • eficiência coletiva,

  • harmonia (wa).

Na vida:

  • ela te tira do modo vítima,

  • te coloca no modo autor da própria história.


🧠 Conclusão Bellacosa

A Lei da Responsabilidade é simples:

Você é o operador do seu próprio sistema.
Se der ABEND, analisa, corrige e segue.

Sem drama.
Sem desculpa.
Sem RESET.


E agora me diga…
você anda assumindo seus JOBs ou só reclamando do spool?

quinta-feira, 12 de agosto de 2010

Uma tarde passeando por Leiria


Estamos passeando por um parque delicioso, aproveitando as margens deste ribeirão cheio de patinhos, como bom maníaco por fotos. Nao podia deixar de capturar este pequeno momento.



Esta cidade tem muitos encantos a serem descobertos, possui um  castelo, uma antiga fabrica de papel (parece que foi a primeira de Portugal), um parque com aviao militar, roda d'agua e o patinhos. Muitos patinhos nadando tranquilamente pela ribeira.