Mostrar mensagens com a etiqueta smp. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta smp. Mostrar todas as mensagens

quinta-feira, 16 de janeiro de 2014

SMP/E na prática – SYSMOD Packaging sem medo

 

Bellacosa Mainframe apresenta smp/e sysmod packaging

SMP/E na prática – SYSMOD Packaging sem medo



🧠 Introdução – SMP/E não é bicho‑papão

Quem trabalha com z/OS cedo ou tarde se depara com ele: SMP/E. Para alguns, um monstro antigo. Para outros, um mal necessário. A verdade é simples:

SMP/E é só método, disciplina e leitura correta das MCS.

Neste post vamos direto ao ponto: SYSMOD Packaging, ou seja, como os produtos, correções e USERMODs são empacotados, entregues e entendidos pelo SMP/E.

Sem marketing. Sem misticismo. Só mainframe raiz.


📦 O que é um SYSMOD de verdade?

Todo SYSMOD é composto por duas partes inseparáveis:

  1. Conteúdo

    • módulos

    • macros

    • source

    • dados

    • HFS / JAR

  2. MCS – Modification Control Statements

    • instruções que dizem ao SMP/E como, onde e quando instalar

👉 Durante o RECEIVE, o SMP/E lê primeiro as MCS, cria as MCS entries e armazena tudo no SMPPTS.

Se as MCS estiverem erradas… não há santo que salve o APPLY.


🧾 Regras de ouro das MCS (decore isso)

  • Todas começam com ++

  • Colunas 1–2 obrigatórias

  • Terminam com ponto final (.)

  • Continuação de linha só se não houver ponto antes da coluna 73

  • Colunas 73–80 são ignoradas

📌 Erro clássico: esquecer o ponto final. Resultado? SMP/E surtando.


🪪 HEADER – identidade do SYSMOD

Toda SYSMOD começa com:

++HEADER

É aqui que o SMP/E descobre:

  • o tipo do SYSMOD

  • o SYSMOD‑ID

Tipos clássicos

  • FUNCTION – produto base

  • PTF – correção testada

  • APAR – correção de problema

  • USERMOD – correção local

Sem HEADER correto, não existe SYSMOD.


🧬 FMID – quem é o dono do código

O FMID (Function Modification ID):

  • tem 7 caracteres

  • identifica qual função é dona do elemento

  • aparece normalmente no ++VER

📌 Em FUNCTION SYSMOD, o FMID é o próprio SYSMOD‑ID.

Erro comum em prova e produção: FMID errado = APPLY recusado.


🔗 ++VER – o cérebro do SMP/E

O ++VER é obrigatório e define:

  • releases suportados

  • pré‑requisitos

  • co‑requisitos

  • supersedes

Principais operandos:

  • SREL – release do sistema

  • FMID – função dona

  • PRE – pré‑requisito

  • REQ – co‑requisito

  • SUP – supersede

👉 Sem ++VER, o SMP/E não confia em você.


🚦 ++HOLD – bloqueios controlados

Existem três HOLDs clássicos:

  • ERROR – correção com problema

  • SYSTEM – ação manual necessária

  • USER – regra local

O HOLD pode vir:

  • dentro do SYSMOD

  • ou separado em HOLDDATA

📌 HOLD não é erro. HOLD é controle.


🏗️ ++JCLIN – a planta da casa

O ++JCLIN descreve:

  • como o load module deve ser montado

  • quais objetos entram

  • qual link‑edit será usado

⚠️ JCLIN não executa JCL.

Ele apenas documenta a estrutura, permitindo RESTORE e rebuild corretos.

Sem JCLIN, o SMP/E fica cego.


🧩 MCS de elementos – o que realmente instala

Alguns exemplos:

  • ++MOD – módulo

  • ++SRC – source

  • ++MAC – macro

  • ++DATA – dados

  • ++HFS – arquivo Unix

  • ++JAR – JAR inteiro

  • ++JARUPD – update parcial

  • ++ZAP – patch binário

📌 ZAP e UPD alteram partes. DATA e HFS sempre substituem tudo.


☕ JAR no SMP/E (onde muita gente erra)

  • ++JAR → substituição total

  • ++JARUPD → update parcial

O SMP/E usa comandos do JDK para manipular o conteúdo.

Sim, Java também é mainframe.


📦 Técnicas de empacotamento SYSMOD

1️⃣ Relative File (tape)

  • clássico IBM

  • MCS em um arquivo

  • elementos em arquivos seguintes

  • usa RELFILE

Muito comum em FUNCTION SYSMOD.


2️⃣ Inline

  • MCS e conteúdo juntos

  • registros fixos de 80 bytes

  • simples e direto

⚠️ Dados variáveis exigem GIMDTS.


3️⃣ Indirect Library

  • MCS no SMPPTS

  • conteúdo fora (PDS indicado no APPLY)

  • comum em USERMOD

Flexível e perigoso se mal documentado.


4️⃣ GIMZIP Archive (Shopz / Internet)

  • entrega moderna

  • tudo compactado

  • inclui MCS, conteúdo e HOLDDATA

Base do RECEIVE FROMNETWORK.


❌ Pegadinhas clássicas (anota aí)

  • ++MOD não é o último MCS

  • Inline com RELFILE

  • FMID inexistente

  • SREL inválido

  • falta de ponto final

👉 Todas já derrubaram produção algum dia.


🧠 Conclusão – SMP/E é método

RECEIVE entende
APPLY constrói
ACCEPT congela

Quando você entende SYSMOD Packaging, o SMP/E deixa de ser mistério e vira aliado.

Mainframe não é velho.
Velho é não saber o que está rodando.


💾 Até o próximo post. Porque mainframe bom é mainframe bem documentado.

quinta-feira, 4 de novembro de 2010

🧠 SMP/E for z/OS – Uma Revisão

 

Bellacosa Mainframe apresenta um review smp/e 

🧠 SMP/E for z/OS – Uma Revisão

Revisão definitiva (com cheiro de fita, CSI alinhado e café frio ☕)

Se você acha que SMP/E é complicado, relaxa: ele só é honesto.
Honesto no sentido de que reflete exatamente a complexidade do z/OS — sem abstrações mágicas, sem “next, next, finish”.

SMP/E não é só uma ferramenta.
É memória histórica, controle cirúrgico e disciplina operacional.

Vamos revisar The Network do SMP/E for z/OS Workshop no melhor estilo Bellacosa Mainframe: com contexto, visão sistêmica e alguns easter eggs que só quem já brigou com um CSI entende 😉


🏛️ Antes do SMP/E: quando tudo era fita, suor e coragem

Nos anos 70, o mundo era simples — e perigoso.

  • O sistema vinha em DLIB tapes

  • O SYSGEN tinha Stage 1 e Stage 2

  • O programador montava tudo na unha

  • E manutenção?
    👉 Manual. Muito manual.

Resultado?

  • Instabilidade

  • Erros humanos

  • Sistemas que “funcionavam… até não funcionarem”

💾 Easter egg #1:

Quem nunca teve medo de rodar um IEP_COPY no volume errado… não viveu essa época.


🧬 A chegada do SMP (e depois SMP/E)

Nos anos 80, a IBM fez algo revolucionário:
automatizou o que não podia mais depender da memória humana.

Nascia o SMP, que depois evoluiu para SMP/E (System Modification Program / Extended).

Agora o sistema tinha:

  • Global Zone → cérebro

  • Target Zone → sistema em execução

  • Distribution Zone (DLIB) → fonte da verdade

Tudo documentado.
Tudo rastreável.
Tudo auditável.


🧠 O conceito-chave: CSI (Consolidated Software Inventory)

O CSI é o coração do SMP/E.

Ele responde perguntas críticas como:

  • O que está instalado?

  • Onde está?

  • Como foi construído?

  • Quem depende de quem?

Zonas:

  • Global Zone
    Índice mestre + opções de controle

  • Target Zone
    Reflete o que está rodando

  • Distribution Zone
    Reflete o que foi entregue

📌 Regra de ouro:

SMP/E não adivinha. Ele só faz exatamente o que o CSI diz.


📦 Tudo em SMP/E é SYSMOD

Não existe exceção.
Se entrou no SMP/E, virou SYSMOD.

Tipos clássicos:

  • FUNCTION → produto novo

  • PTF → serviço preventivo

  • APAR → correção corretiva

  • USERMOD → customização local (o famoso “aqui a gente fez diferente”)

Todos eles têm:

  • MCS (++ statements) → inteligência

  • Modification Text → o código

💾 Easter egg #2:

Viu ++HOLD? Pare. Respire. Leia o PSP antes de qualquer APPLY.


🔁 O fluxo eterno do SMP/E

O ciclo que nunca muda:

  1. RECEIVE

    • Entra no SMPPTS

    • Atualiza Global Zone

    • Nada muda no sistema ainda

  2. APPLY

    • Atualiza Target Libraries

    • Sistema pode ser testado

    • Ainda reversível

  3. RESTORE

    • Volta ao último nível aceito

    • Usa DLIB como fonte

    • Seu botão de “desfazer”

  4. ACCEPT

    • Atualiza DLIB

    • Ponto sem volta

    • Agora é história oficial

💣 Easter egg #3:

ACCEPT em produção sem teste é um pedido formal de incidente grave.


🌐 The Network: quando o SMP/E ganhou internet

Chegamos ao ponto alto do módulo: entrega eletrônica.

Com Shopz / JustShopz, tudo mudou:

  • Menos fita

  • Mais automação

  • Menos transporte físico

  • Mais rastreabilidade

Opções modernas:

  • ServerPac → replace completo

  • CBPDO → produto ou serviço incremental

  • Internet Delivery

    • RECEIVE FROMNETWORK

    • RECEIVE FROMNTS

    • RECEIVE ORDER

📦 Tudo chegando direto no HFS/zFS, validado por hash, protegido por certificado X.509.

🔐 Easter egg #4:

Se o RACDCERT não reconhece seu certificado, o SMP/E também não vai.


🧾 Shopz, pedidos e abas que importam

Depois de submeter o pedido:

  • Ele aparece como Open

  • Depois Submitted ou Order Center

  • E você acompanha em:
    👉 In Progress

Quando muda para Download
🎉 chegou a hora.

📬 E-mail da IBM
🔗 Link direto
⏳ 14 dias de validade


🧠 SMP/E moderno não é só manutenção

Hoje o SMP/E também:

  • Ordena PTF automaticamente

  • Agenda serviço

  • Controla origem dos fixes (SourceID)

  • Centraliza histórico

Tudo isso com:

  • RECEIVE ORDER

  • ORDER Management (Option 7)

  • Java ou ICSF

  • FTPS + Hash SHA-1


🧪 Planejamento: onde bons sysprogs se diferenciam

Antes de qualquer INSTALL:

  • Clone do sistema

  • Program Directory

  • PSP Buckets

  • Espaço em Target, DLIB e SMP/E datasets

  • IVP depois

  • Testes reais

  • Migração controlada

🧠 Easter egg final:

O melhor sysprog não é o que instala rápido.
É o que dorme tranquilo depois do IPL.


🏁 Conclusão

SMP/E não é moda.
Não é hype.
Não é simples.

Ele é engenharia de software em estado puro, aplicada a um dos ambientes mais críticos do planeta.

E se você chegou até aqui entendendo tudo isso…
👉 Parabéns: você fala fluentemente Mainframe.


segunda-feira, 4 de outubro de 2010

SMP/E for z/OS Workshop : LIST & REPORT Commands

 

Bellacosa Mainframe apresenta SMP/E List and Report Commands

SMP/E for z/OS Workshop

ACCEPT Processing – LIST & REPORT Commands

Quando olhar o CSI é tão importante quanto instalar o código

Instalar SYSMOD qualquer um instala.
Agora… saber exatamente o que está instalado, onde, por quê e com qual dependência
👉 isso separa operador de System Programmer.

É aqui que entram os comandos LIST e REPORT.


LIST Command

Abrindo o CSI como quem abre o capô do sistema

O comando LIST é o bisturi do SMP/E.
Ele não interpreta, não deduz, não opina.
Ele mostra os fatos gravados no CSI.

📌 O LIST pode extrair informações de:

  • Global Zone

  • Target Zone

  • Distribution Zone

  • SMPPTS

  • SMPLOG

  • SMPSCDS

💡 Easter egg #1

Se você confia mais na memória do que no LIST,
o CSI vai te humilhar em algum momento.


Boundary: o detalhe que separa sucesso de confusão

Antes de usar LIST, você define o boundary:

  • Global Zone → acesso a SMPPTS

  • Zona com DDDEF do SMPLOG

  • Target Zone associada ao SMPSCDS

  • Ou tudo de uma vez com:

ALLZONES

⚠️ ALLZONES lista tudo que existe, não tudo que você quer ver.

💡 Easter egg #2

ALLZONES às 3 da manhã
é como dar SELECT * em produção.


O que dá pra listar no Global Zone

Com LIST você pode ver:

  • OPTIONS

  • UTILITIES

  • DDDEFs

  • FMIDSETs

  • ZONESETs

  • SYSMOD entries

  • MCS entries do SMPPTS

  • HOLDDATA (++HOLD)

HOLDDATA com lupa

Você pode filtrar por:

  • HOLDERROR

  • HOLDSYSTEM

  • HOLDUSER

E ainda combinar com SYSMOD específico.

📌 Se combinar filtros demais, o SMP/E só lista
entradas que satisfaçam todos.


Filtros avançados (onde mora o poder)

LIST aceita os mesmos refinamentos do APPLY/ACCEPT:

  • SOURCEID

  • EXSRCID

  • FORFMID

  • XZLMOD

  • XZLMODP

  • XREF

👉 Ideal para:

  • Debug de dependência

  • Auditoria

  • Pós-migração

  • Comparação entre ambientes

💡 Easter egg #3

SOURCEID bem usado
vale mais que planilha paralela.


LIST em Target e Distribution Zones

Além do básico, você pode listar:

  • TARGETZONE definition

  • DLIBZONE definition

  • DDDEFs

  • ELEMENT entries:

    • MOD

    • MAC

    • SRC

    • JAR

    • HFS

  • LMOD entries

SYSMOD entries com status

Você pode filtrar por:

  • ERROR

  • SUP (superseded)

  • NOSUP

  • RESTORE

  • NOAPPLY

  • NOACCEPT

  • BYPASS

  • DELETE

📌 SUP e NOSUP são mutuamente exclusivos.

💡 Easter egg #4

SYSMOD em ERROR não é bug
é aviso ignorado.


LIST LOG e BACKUP

  • LIST LOG → conteúdo do SMPLOG

    • Total ou por intervalo de data

  • LIST BACKUP → conteúdo do SMPSCDS

    • Tudo ou por SYSMOD específico

👉 LIST é o comando ideal para auditoria forense do SMP/E.


LIST vs DIALOG QUERY

LIST = dados brutos
QUERY = visão amigável

Quando a coisa aperta…
LIST sempre vence.


REPORT Command

Quando você precisa que o SMP/E pense por você

Se o LIST mostra,
o REPORT analisa.

Ele cruza zonas, dependências, FMIDs, SOURCEIDs e HOLDs
e ainda gera comandos prontos.

📌 REPORT é o SMP/E dizendo:

“relaxa, eu faço a correlação.”


REPORT CROSSZONE

Dependência entre produtos e zonas

Usado para responder:

“Instalei isso aqui… quebrou quem?”

Requisitos:

  • ZONESET obrigatório

  • Pode limitar por:

    • FMID

    • ZONE

O relatório mostra:

  • Dependências cruzadas

  • SYSMODs faltantes

  • Se já foram RECEIVED

  • Quem causou a dependência

👉 E ainda gera comandos SMP/E no SMPPUNCH

NOPUNCH

se você não quiser os comandos.

💡 Easter egg #5

SMPPUNCH esquecido
vira APPLY acidental.


REPORT ERRSYSMODS

Quando o passado volta pra cobrar

Identifica SYSMODs que:

  • Já foram instalados

  • Mas agora estão em ERROR HOLD

Pode analisar:

  • Global Zone

  • Target Zone

  • Distribution Zone

Filtros:

  • Data inicial / final

  • FMID

O relatório mostra:

  • SYSMOD afetado

  • Reason ID

  • Quem resolve

  • ++HOLD completo

💡 Easter egg #6

ERROR HOLD não some
só muda de lugar.


REPORT SOURCEID

Quem veio de onde?

Descobre:

  • Quais SOURCEIDs existem

  • Quais SYSMODs usam cada um

Com ou sem filtro por SYSMOD.

👉 Excelente para:

  • FIXCAT

  • Hardware novo

  • Coexistência

  • Migração de release


REPORT SYSMODS

Comparação entre zonas

Usado para:

  • Validar ambientes

  • Comparar releases

  • Checar desvio de serviço

Parâmetros:

  • INZONE

  • COMPAREDTO

Resultado:

  • O que existe em uma zona

  • E não existe na outra

  • Com comandos prontos para corrigir

💡 Easter egg #7

Ambiente “igual” sem REPORT
é fé, não evidência.


REPORT MISSINGFIX (FIXCAT)

Adeus PSP Bucket manual

Disponível a partir do SMP/E 3.6.

Identifica:

  • APARs faltantes

  • Por categoria FIXCAT

  • Para hardware, software e coexistência

Mostra:

  • FIXCAT

  • APAR

  • PTF corretivo

  • Dependências

  • Problemas de HOLD

📌 Dois blocos:
1️⃣ Missing fixes
2️⃣ Resolving SYSMODs em erro

💡 Easter egg #8

FIXCAT bem usado
economiza fim de semana inteiro.


Bellacosa Summary – em poucas linhas

LIST mostra o que existe
REPORT explica o impacto
SMPPUNCH sugere a correção
Você decide se confia


Checklist Bellacosa – LIST & REPORT

✔ LIST antes de APPLY
✔ REPORT antes de migrar
✔ FIXCAT sempre atualizado
✔ SOURCEID bem definido
✔ SMPPUNCH revisado
✔ LOG nunca ignorado


Conclusão

Quem domina LIST e REPORT:

  • Não instala no escuro

  • Não depende de planilha

  • Não descobre erro em produção

  • Não briga com auditor

💡 Easter egg final

O SMP/E sempre soube a verdade.
Você só precisava perguntar direito.

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.

domingo, 11 de julho de 2010

SMP/E for z/OS Workshop: Restore

Bellacosa Mainframe apresenta SMP/E Restore


SMP/E for z/OS Workshop

RESTORE: quando o Apply deu ruim e você precisa voltar no tempo (sem desligar a produção)

Se APPLY é instalar e ACCEPT é oficializar, RESTORE é o botão de “desfaz” do SMP/E.
Mas não se engane: RESTORE não é CTRL+Z. Ele exige entendimento profundo de dependências, níveis de serviço e do que está no target versus no distribution.

Vamos destrinchar isso no melhor estilo Bellacosa Mainframe: sem romantismo, com realidade de produção.


O que é o comando RESTORE no SMP/E?

O RESTORE permite remover um ou mais SYSMODs aplicados no target, reinstalando o nível existente nos DLIBs (distribution libraries) de volta para as target libraries.

📌 Ponto-chave

RESTORE só funciona para SYSMODs que foram APPLIED e ainda NÃO ACCEPTED.

Na prática:

  • Algo foi aplicado

  • Quebrou, gerou erro, impacto funcional ou regressão

  • Você precisa voltar o código para o último nível aceito

RESTORE entra em ação.


Onde o RESTORE atua?

RESTORE é sempre direcionado a um Target Zone:

SET BDY(TZONE)

Esse target zone:

  • Identifica as target libraries

  • Mapeia qual distribution zone (DZONE) contém o backup válido

  • Será atualizado com os metadados corretos após o restore

📦 O SMP/E não inventa código
Ele reinstala exatamente o que está nos DLIBs.


O que o RESTORE realmente faz?

Durante o processamento, o SMP/E:

✔ Substitui os elementos do target pelos elementos do DLIB
✔ Reexecuta link-edit se necessário
✔ Copia FMID, RMID e UMID do DZONE para o TZONE
✔ Atualiza o CSI
✔ Remove registros do SYSMOD restaurado (dependendo das opções)

Ou seja:

O target volta a refletir o último nível oficialmente aceito.


RESTORE vs APPLY – parecem iguais, mas não são

APPLYRESTORE
Usa SMPPTSUsa DLIBs
Entrada: Global Zone + SMPPTSEntrada: DZONE + DLIBs
Instala novo códigoReinstala código anterior
Avança nívelRetrocede nível

👉 Ambos atualizam Target Libraries e Target Zone, mas com propósitos opostos.


Inline JCLIN e SMPCDS: o detalhe que derruba gente experiente

Se o SYSMOD a ser restaurado possui inline JCLIN, o SMP/E precisa do SMPCDS.

Por quê?

Porque o SMPCDS contém:

  • Backup da estrutura do TZONE

  • Informações necessárias para restaurar corretamente macros, source e datasets

Sem isso, o RESTORE pode:

  • Falhar

  • Ou deixar o ambiente inconsistente


O comando RESTORE na prática

Exemplo básico:

RESTORE SELECT(UP00003)

Operandos importantes

🔹 SELECT (obrigatório)

Define quais SYSMODs você quer remover.


🔹 GROUP (a parte traiçoeira)

No RESTORE, o GROUP funciona ao contrário do APPLY.

  • APPLY: GROUP busca pré-requisitos ausentes

  • RESTORE: GROUP busca SYSMODs que DEPENDEM do selecionado

👉 Se um SYSMOD depende do que você quer remover, ele também precisa ser restaurado.


🔹 CHECK (sempre use!)

RESTORE CHECK SELECT(UP00003)

CHECK:

  • Não altera nada

  • Analisa dependências

  • Mostra mensagens do tipo GIM35922I

📌 Dica Bellacosa:

Raramente o primeiro RESTORE CHECK resolve tudo.
Rode, leia os relatórios, ajuste o SELECT, rode de novo.


Exemplo clássico de dependências (vida real)

Temos 7 PTFs aplicados:

UP00001 └─ UP00002 ├─ UP00003 │ ├─ UP00005 │ └─ UP00007 └─ UP00004 └─ UP00006

Somente UP00001 foi ACCEPTED.

🎯 Objetivo: restaurar UP00003

Pergunta clássica de prova e produção:

Posso restaurar só o UP00003?

❌ Não.

Você também precisa restaurar:

  • UP00005

  • UP00007

Porque dependem diretamente dele.


Onde descobrir isso sem chutar?

1️⃣ Mensagens SMP/E (ex: GIM35922I)
2️⃣ SYSMOD Status Report
3️⃣ CAUSER SYSMOD SUMMARY REPORT ← o mais importante

Esse relatório explica:

  • Por que o RESTORE falhou

  • Quais SYSMODs estão bloqueando

  • O que falta no SELECT


O que o SMP/E remove após um RESTORE bem-sucedido?

Se NOREJECT = OFF:

  • Remove entrada do SYSMOD no Global Zone

  • Remove MCS do SMPPTS

  • Remove SMPTLIBs (se existirem)

⚠️ HOLD DATA NÃO É REMOVIDA

Se NOREJECT = ON:

  • Remove apenas APPID do Target Zone


RESTORE não é simples (e nunca foi)

RESTORE pode se tornar complexo quando:

  • Muitos PTFs aplicados

  • DLIB muito atrás do Target

  • Cadeias longas de dependência

👉 É comum rodar:

RESTORE CHECK RESTORE CHECK RESTORE CHECK

Até fechar todo o quebra-cabeça.


Conclusão Bellacosa Mainframe

RESTORE é:

  • Uma ferramenta poderosa

  • Um salva-produção

  • Um teste de maturidade do system programmer

Quem domina RESTORE:
✔ Entende dependências
✔ Entende níveis de serviço
✔ Não entra em pânico quando APPLY quebra

APPLY instala. ACCEPT oficializa. RESTORE ensina humildade.

No próximo módulo, o foco sai do SMP/E operacional e entra no product build — onde o código nasce antes de virar SYSMOD.


segunda-feira, 28 de junho de 2010

SMP/E for z/OS – Apply Processing

 

Bellacosa Mainframe apresenta SMP/E Apply Processing

SMP/E for z/OS – Apply Processing

O momento em que o código vira sistema

Se o RECEIVE é quando o código chega na casa e o ACCEPT é quando ele vira herança oficial, o APPLY é o momento crítico: quando o código realmente entra em produção técnica, nos target libraries.

É aqui que o SMP/E deixa de ser teoria, CSI e HOLDDATA… e começa a mexer em load modules, macros, fontes, JARs, HFS e dados reais do sistema.

No estilo Bellacosa Mainframe: APPLY não é comando — é cirurgia.


O que o APPLY faz (sem romantizar)

O comando APPLY:

  • Instala elementos fornecidos por SYSMODs nas Target Libraries

  • Atualiza o Target Zone (TZONE) com o novo estado do sistema

  • Garante que nenhum serviço seja regredido

  • Controla dependências, pré-requisitos, co-requisitos e IF-REQs

  • Invoca utilitários reais do sistema (Binder, IEBCOPY, IEBUPDTE, BPXCOPY, etc.)

📌 Importante:

APPLY NUNCA deve ser feito diretamente em produção. Sempre em clone, test system, shadow libraries.


Target Libraries, Target Zone e Distribution Zone

  • Target Libraries: onde vivem os executáveis, macros, fontes e dados usados pelo sistema

  • Target Zone (TZONE): o mapa vivo do que está instalado e em qual nível

  • Distribution Libraries (DLIB): código base, mantido pelo ACCEPT

  • Distribution Zone (DZONE): mapa do código base

👉 APPLY mexe apenas em Target Libraries e TZONE.


SET BDY – dizendo ao SMP/E onde operar

Antes do APPLY:

SET BDY(TARGET1)
APPLY ...

Cada Target Zone mapeia um conjunto específico de bibliotecas.

💡 Estratégia clássica:

  • APPLY no sistema de teste

  • Validação

  • Promoção do clone para produção


Como o SMP/E escolhe os SYSMODs

A seleção é controlada pelos operandos do APPLY:

Seleção direta

  • SELECT

  • EXCLUDE

  • FORFMID

Por tipo

  • FUNCTION

  • PTF

  • APAR

  • USERMOD

Por origem

  • SOURCEID

  • EXSRCID

Se nenhum tipo for especificado:
👉 default = apenas PTFs


GROUP e GROUP EXTEND – o efeito dominó controlado

GROUP

Inclui automaticamente:

  • Pré-requisitos (PRE)

  • Co-requisitos (REQ)

  • IF-requisitos

Exemplo:

  • UL9 → requer UL7 e UL8

  • UL7 → requer UL5

  • UL8 → requer UL6

👉 APPLY com GROUP seleciona UL9, UL7, UL8, UL5 e UL6

GROUP EXTEND

Vai além:

  • Resolve HOLDs automaticamente

  • Procura SYSMODs que supersedem erros ou requisitos faltantes

  • Pesquisa no GZONE e PTS

⚠️ Pode ser restringido:

  • NOAPARS

  • NOUSERMODS


BYPASS – a alavanca perigosa

Quando uma condição geraria erro fatal, o BYPASS manda o SMP/E ignorar.

Exemplos:

  • BYPASS(ID)

  • BYPASS(HOLD)

  • BYPASS(XZIFREQ)

  • BYPASS(HOLDFIXCAT)

⚠️ Use com extremo cuidado

Todo desastre em SMP/E começa com alguém que confiou demais no BYPASS.


APPLY CHECK – a simulação obrigatória

APPLY CHECK ...

O CHECK:

  • Não atualiza bibliotecas

  • Não altera CSI

  • Simula seleção, dependências e validações

  • Detecta regressões

🚨 CHECK não valida espaço em disco

📌 Dica Bellacosa:

CHECK sempre com BYPASS(HOLDSYSTEM,HOLDID)


REDO – reaplicando serviço

Usado quando:

  • Biblioteca foi restaurada de backup antigo

  • Fix aplicado se perdeu

APPLY SELECT(AZ81463) REDO

👉 Reinstala mesmo que já conste como aplicado


Espaço em disco: RETRY e COMPRESS

COMPRESS

  • COMPACTA bibliotecas alvo

  • Pode ser:

    • Por DDNAME

    • ALL

RETRY

  • Default = YES

  • Reage a erros de espaço

  • Usa lista definida no GZONE (RETRYDDN)

⚠️ Pegadinha clássica:

CHECK + COMPRESS ALL não faz sentido

CHECK não atualiza nada → COMPRESS não ocorre.


Applicability Checks – o funil do SMP/E

Depois da seleção:

  1. Verifica se o FMID pertence ao Target Zone

  2. Valida PRE, REQ e IF-REQ

  3. Verifica HOLDs (SYSTEM, ERROR, USER, FIXCAT)

  4. Executa cross-zone IFREQ (XZIFREQ)

  5. Determina ordem de processamento

Ordem padrão:

  1. Functions

  2. PTFs

  3. APARs

  4. USERMODs


DELETE em Functions – quando uma versão morre

Funções podem ter:

++VER DELETE

Efeito:

  • Remove elementos da função antiga

  • Remove entradas no TZONE

  • Remove serviços dependentes

👉 DELETE explícito e implícito


JCLIN – a alma estrutural do APPLY

JCLIN:

  • É processado durante o APPLY

  • Cria estrutura no TZONE

  • Define MOD, LMOD, SYSLIB, LKEDCNTL

📦 Resultado:

  • SMP/E sabe como montar o load module

CALLLIBS

  • Indica linkagens implícitas

  • Binder é chamado duas vezes

  • Usa SMPMTS para restore futuro


Element Selection – evitando regressão

Cada elemento é rastreado por:

  • FMID – quem introduziu

  • RMID – quem substituiu

  • UMID – quem atualizou

SMP/E usa:

  • ++VER PRE

  • ++VER SUP

Para garantir:

Nenhum APPLY reduz o nível atual do elemento


Instalação real dos elementos

Dependendo do tipo:

  • MOD → Binder (link-edit)

  • MAC / SRC → IEBCOPY / IEBUPDTE

  • JAR → COPY ou GIMDRS

  • DATA / HFS → COPY / BPXCOPY

GIMDTS / GIMDRS

  • Permitem empacotar elementos não FB80

  • Reconversão automática no APPLY


CSI Updates – o inventário consolidado

Após o APPLY:

  • Atualiza entradas de elementos no TZONE

  • Atualiza FMID, RMID, UMID

  • Cria SYSMOD entry no TZONE

  • Atualiza APPID no GZONE

📌 Regra de ouro:

Status de APPLY se verifica no TZONE, não no GZONE


Relatórios – o SMP/E contando vantagem

Principais relatórios:

  • SYSMOD Status Report

  • Element Summary Report

  • Causer SYSMOD Summary (Root Cause)

  • Regression Report

  • Unresolved HOLD Report

  • HOLDDATA Summary

DDs importantes:

  • SMPRPT

  • SMPHRPT (HOLDDATA separado)


FIXCAT no APPLY moderno

FIXCAT permite:

  • Expressar interesse por categorias

  • Bloquear APPLY se serviço crítico faltar

  • Automatizar PSP buckets

Exemplo estratégico:

FIXCAT(IBM.ProductInstall-RequiredService)

👉 Garante instalação de todo serviço recomendado


Conclusão Bellacosa

APPLY é onde o SMP/E deixa de ser administrativo e vira operacional.

Quem domina APPLY:

  • Não quebra produção

  • Não regride serviço

  • Não depende de sorte

No mainframe, conhecimento não é poder — é sobrevivência.

No próximo capítulo: ACCEPT – quando o código vira base do sistema.