Mostrar mensagens com a etiqueta packaging. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta packaging. 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, 7 de janeiro de 2010

📦 SMP/E for z/OS – SYSMOD Packaging

Bellacosa Mainframe apresenta smp/e sysmod packaging

📦 SMP/E for z/OS – SYSMOD Packaging

Entendendo MCS e técnicas de empacotamento sem dor de cabeça


🧠 Ideia central (em uma frase)

SYSMOD = conteúdo + instruções (MCS)
O como, onde e quando instalar é decidido pelas MCS.


🧩 O que existe dentro de um SYSMOD?

Todo SYSMOD tem duas coisas:

  1. Texto de modificação

    • módulos

    • macros

    • source

    • dados

    • HFS / JAR

  2. MCS – Modification Control Statements

    • instruções para o SMP/E

    • dizem onde, quando e em que ordem instalar

📌 Durante o RECEIVE, o SMP/E:

  • lê primeiro as MCS

  • grava tudo no SMPPTS

  • cada SYSMOD vira uma MCS entry


🧱 Tipos de elementos em DLIB / TLIB

TipoO que é
ModuleCódigo compilado/ligado
MacroFonte reutilizável
SourceCódigo fonte
DataCLIST, PARM, PROC etc
HFSArquivos Unix
JARJava Archive

🧾 Regras básicas das MCS (cai em prova)

  • Todas começam com ++

  • Colunas 1–2++

  • Terminam com ponto (.)

  • Podem continuar linha se não houver ponto antes da coluna 73

  • Colunas 73–80 são ignoradas


🪪 HEADER e identificação do SYSMOD

++HEADER

  • identifica o tipo do SYSMOD

  • define o SYSMOD-ID

Tipos de SYSMOD

TipoPara quê
FUNCTIONIntroduz produto
PTFCorreção testada
APARCorreção de problema
USERMODCorreção local

🧬 FMID — quem “é dono” do código

  • FMID = Function Modification ID

  • 7 caracteres

  • identifica a função dona do elemento

  • em FUNCTION, o FMID é o próprio SYSMOD-ID

📌 Todo SYSMOD exceto base FUNCTION usa FMID no ++VER.


🔗 ++VER — relacionamento e dependências

O ++VER é o cérebro da compatibilidade

Regras:

  • Obrigatório

  • Deve vir logo após o HEADER

  • Define:

    • release suportado (SREL)

    • dependências

    • pré-requisitos

    • co-requisitos

    • supersedes

Operandos importantes

OperandoFunção
SRELRelease do sistema
FMIDFunção dona
PREPré-requisito
REQCo-requisito
SUPSupersede

🚦 ++HOLD — bloqueios controlados

Existem 3 tipos:

TipoQuando usar
ERRORPTF com erro
SYSTEMAção manual necessária
USERRegra local

📌 HOLD impede APPLY/ACCEPT até ser resolvido
📌 Pode vir no SYSMOD ou em HOLDDATA separado


🏗️ MCS estruturais – como o sistema é montado

++JCLIN

  • descreve como o load module é ligado

  • não executa, apenas é analisado

  • grava estrutura no TZONE

Sem JCLIN → SMP/E não sabe reconstruir load modules.


🧩 MCS de elemento (o que será instalado)

MCSO que instala
++MODMódulo
++SRCSource
++MACMacro
++DATADados
++HFSArquivo Unix
++JARJAR inteiro
++ZAPPatch binário
++SRCUPDUpdate de source
++MACUPDUpdate de macro
++JARUPDUpdate parcial de JAR

📌 ZAP / UPD = alteração parcial
📌 DATA / HFS = sempre substituição total


☕ JAR no SMP/E (pegadinha comum)

  • ++JAR → substitui o JAR inteiro

  • ++JARUPD → atualiza arquivos internos

  • SMP/E usa comandos do JDK (jar x / jar u)


📦 Técnicas de empacotamento SYSMOD

Como o conteúdo chega até o SMP/E

1️⃣ Relative File (tape)

📼 Clássico IBM

  • MCS em um arquivo

  • elementos em arquivos seguintes

  • usa RELFILE

✔️ Muito usado em FUNCTION SYSMOD


2️⃣ Inline

📄 Tudo junto

  • MCS + conteúdo no mesmo arquivo

  • registros fixos de 80 bytes

  • simples, direto

⚠️ Dados variáveis precisam de GIMDTS


3️⃣ Indirect Library

📚 USERMOD raiz

  • MCS no SMPPTS

  • conteúdo fica fora (PDS indicado no APPLY)

  • usa TXLIB, LKLIB

✔️ Ideal para USERMOD


4️⃣ GIMZIP Archive

🌐 Moderno / rede

  • arquivo compactado no HFS

  • inclui:

    • MCS

    • elementos

    • HOLDDATA

  • usa:

    • GIMZIP

    • GIMUNZIP

    • RECEIVE FROMNETWORK

✔️ Base do Shopz / Internet delivery


❌ “What’s wrong with this picture?” (clássico de prova)

Erros comuns:

  1. ++MOD não é o último MCS

  2. Inline com RELFILE

  3. FMID ausente

  4. Falta ponto final

  5. SREL inválido (2038 ≠ Z038)


🧠 Resumo final (para memorizar)

🔑 RECEIVE lê MCS
🔑 APPLY instala no target
🔑 ACCEPT congela no DLIB
🔑 ++VER controla dependências
🔑 JCLIN explica como montar
🔑 Packaging define onde está o conteúdo