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

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.