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

domingo, 18 de janeiro de 2026

Single Source of Truth (SSOT): a verdade nua, crua… e versionada

 

Bellacosa Mainframe e o conceito de single source of truth

Single Source of Truth (SSOT): a verdade nua, crua… e versionada

Se existe um conceito que todo arquiteto, analista, DBA, operador e até estagiário já ouviu — e todo mundo acha que já tem — esse conceito é o tal do Single Source of Truth.
Spoiler: quase ninguém tem de verdade. E no mainframe isso é ainda mais sagrado (e mais difícil).

Senta que lá vem história.


🧠 Origem: quando a verdade ainda cabia em um arquivo VSAM

Antes de buzzwords, cloud, data mesh e dashboards coloridos, o SSOT já existia — só não tinha nome chique.

Nos anos 60/70, no mundo IBM Mainframe, a regra era simples:

“Existe um dado oficial. O resto é cópia, relatório ou dor de cabeça.”

  • Um master file VSAM

  • Um DB2 table owner bem definido

  • Um CICS que mandava na regra de negócio

Se o saldo do cliente estava no arquivo X, qualquer outro valor estava errado, não “divergente”.

👉 Isso era SSOT by design, não por moda.


📜 Definição curta (para colar na parede da sala)

Single Source of Truth é a fonte única, autorizada e confiável de um dado, regra ou estado de negócio.

  • Não é só onde o dado está

  • É quem manda nele

  • É quem pode mudar

  • É quem responde quando dá problema

No mainframe, isso sempre foi levado a sério porque…
💸 erro de dado = dinheiro real sumindo.


🏗️ SSOT no Mainframe: raiz forte, galhos controlados

No mundo IBM Mainframe, o SSOT normalmente assume estas formas:

  • 📦 DB2 → verdade transacional

  • 📁 VSAM KSDS/ESDS → registros mestres históricos

  • 🧠 CICS → verdade das regras online

  • 📊 SMF/RMF → verdade operacional

  • 🔐 RACF → verdade de segurança (e ponto final)

E aqui vai a regra de ouro, estilo Bellacosa:

Se dois sistemas “mandam” no mesmo dado… nenhum manda.


⚠️ O problema moderno: todo mundo quer sua própria verdade

Com a chegada de:

  • Data Lakes

  • BI Self-Service

  • Microservices

  • Replicações near-real-time

  • APIs para tudo

Nasceu o monstro de três cabeças:

🧟 A Verdade Paralela
🧟 A Verdade de Cache
🧟 A Verdade do PowerPoint

Cada área passa a ter:

  • “Meu dado”

  • “Meu relatório”

  • “Minha métrica”

E quando os números não batem…

👉 a culpa é do mainframe, claro 😏


🧩 Formatos de SSOT (sim, existem vários)

1️⃣ SSOT Transacional

  • Fonte: DB2 / CICS

  • Uso: sistemas core

  • Alta integridade

  • Baixa tolerância a erro

💡 Mainframe é rei aqui.


2️⃣ SSOT Analítico

  • Fonte: DW / Lakehouse

  • Uso: BI, KPIs

  • Risco: latência e transformação

⚠️ Não confundir com verdade operacional.


3️⃣ SSOT de Configuração

  • Fonte: repositórios únicos

  • Ex: parâmetros, tabelas de domínio

🧨 Dica: tabela “copiada” em cada sistema não é SSOT.


4️⃣ SSOT de Governança

  • Catálogos de dados

  • Data lineage

  • Glossário corporativo

📚 Onde a verdade é documentada, não só armazenada.


🛠️ Dicas práticas (da trincheira, não do slide)

✔️ Defina ownership real

“Quem acorda às 3h da manhã se der erro?”

✔️ Separe dado de consumo

  • Origem ≠ réplica ≠ cache

✔️ Documente a verdade

  • Se não está escrito, vira lenda urbana.

✔️ Controle quem escreve

  • Ler é democrático. Escrever não.

✔️ Mainframe como âncora

  • Sistemas modernos orbitam. O core não flutua.


💣 Riscos clássicos (a lista da vergonha)

  • ❌ Duas bases “oficiais”

  • ❌ ETL que “corrige” dado

  • ❌ BI explicando divergência em reunião

  • ❌ Regra de negócio fora do core

  • ❌ “É só um relatório…”

⚠️ Relatório nunca é inocente.


🧪 Curiosidades & Easter Eggs

🥚 Easter Egg #1

Muitos sistemas “modernos” recriam SSOT… e descobrem 30 anos depois o que o CICS já fazia.

🥚 Easter Egg #2

RACF é um dos SSOTs mais respeitados da empresa — ninguém questiona.

🥚 Easter Egg #3

O termo SSOT ficou famoso com BI, mas nasceu no batch noturno.


🧠 Reflexão final (El Jefe mode ON)

SSOT não é tecnologia.
É disciplina organizacional.

Você pode ter:

  • Cloud

  • Kafka

  • Lakehouse

  • AI

  • Dashboard bonito

Mas se não souber qual dado é o oficial

👉 Você só tem várias mentiras bem organizadas.


☕🌙 Midnight Lunch Thought
No fim do dia (ou da madrugada):
quem controla a verdade controla o sistema.
E historicamente…
o mainframe sempre soube disso.


terça-feira, 30 de setembro de 2025

JCL – A Lenda Viva dos Mainframes: Estado Atual, Releases, História, Dicas e Curiosidades

 

Bellacosa Mainframe apresenta as release do IBM JCL

JCL – A Lenda Viva dos Mainframes: Estado Atual, Releases, História, Dicas e Curiosidades

por Bellacosa Mainframe

O JCL (Job Control Language) é a linguagem de controle usada em ambientes IBM Mainframe para definir e gerenciar jobs batch — dizendo ao sistema o que executar, quais programas usar, quais dados acessar e como tratar a saída. Ele nasceu nos anos 1960 e continua essencial até hoje, mesmo com eras de linguagens modernas surgindo e desaparecendo.


Job Control Language -> JCL

🔹 Qual é o “Release” Atual do JCL?

Na verdade, o JCL em si não tem uma versão de linguagem distinta como uma linguagem de programação tradicional (ex.: COBOL 6.0). Ele é parte integrante do sistema operacional z/OS, e evolui conforme o release do z/OS é atualizado.

👉 O release mais recente do z/OS é o:
🔹 z/OS 3.2 (V3R2) — liberado em setembro de 2025 pelo IBM Z.

Isso significa que os usos e comportamentos de JCL em z/OS 3.2 são considerados os mais atuais e com suporte completo pela IBM.

🧠 Curiosidade: JCL foi criado originalmente nos anos 60 para o OS/360 e manteve compatibilidade retroativa até hoje — quase 60 anos depois de sua criação!


📅 Linha do Tempo dos Releases Relevantes (com datas e contexto)

Aqui está uma lista com 10 grandes marcos na evolução do z/OS (onde o JCL “vive e respira”):

Release z/OSData de LançamentoFim de ServiçoDestaques / Notas
OS/360 (início do JCL)1964–1966Ponto de partida histórico. JCL nasce para controlar jobs batch.
MVS/ESA (JCL ampliado)1970sIntrodução de recursos avançados como cataloged procedures.
OS/390década de 1990Predecessor imediato da família z/OS.
z/OS V1R1Março 2001Transição oficial para z/OS com 64‑bit e Unicode.
z/OS V2R2Setembro 2015Suporte a arquiteturas modernas e refinamentos de batch.
z/OS V2R4Setembro 2019Melhor integração com ferramentas modernas.
z/OS V2R5Setembro 2021Final de comercialização: 2024Continuação dos refinamentos em segurança e batch.
z/OS 3.129‑Set‑2023Mercado retirado: Jan/2026Suporte estendido até 2031.
z/OS 3.230‑Set‑2025Planejado final de serviço 2030O release atual que molda como JCL funciona hoje.
(Futuro) z/OS 3.3?Estimado ~2027Expectativa de continuidade da evolução hybrid cloud / AI

ℹ️ Nota: As datas são baseadas em políticas de ciclo de vida de z/OS e planos divulgados pela IBM, com suporte extensível a décadas.


🆕 O que é novo em torno do JCL hoje?

Embora JCL não “mude de versão” como linguagens de programação, as ferramentas que o cercam estão ficando mais modernas:

JCL Language Server & Modern Editor Support
Agora há suporte de linguagem para editores modernos (VS Code) via IBM Z Open Editor, com realce de sintaxe, autocompletar e navegação inteligente.

💡 Isso faz o desenvolvimento de JCL muito mais agradável do que nos velhos dias de editores monocromáticos!


🚀 Dicas Bellacosa Mainframe para Trabalhar com JCL

💡 1. Tente antes de executar – use TYPRUN=SCAN nas suas JOB statements para verificar sintaxe sem rodar a job.
💡 2. Mensagens SDSF são suas amigas – códigos como IEF253 ou IGD17001 te dizem exatamente o que está errado.
💡 3. JCL é sobre contextos, não linguagens glamourosas – ele não “compila”, ele coordena recursos e jobs.
💡 4. Use ferramentas modernas – editores com suporte LSP ajudam a evitar erros de coluna ou sintaxe, que historicamente eram a maior dor de cabeça de qualquer operações mainframe.


🐣 Easter‑Eggs e Curiosidades

🥚 Fred Brooks (um dos pais do OS/360) chamou JCL de… “a pior linguagem que já existiu, criada por mim mesmo”! — uma piada interna que a IBM às vezes cita para reconhecer sua simplicidade arcaica.

💾 JCL começou em cartões perfurados! A decisão de fazer statements com // foi simplesmente porque o processador MC do Assembler precisava de um idioma declarativo para controlar jobs.

🎮 Hoje existem versões open‑source e emuladores (Ex.: Hercules) que rodam JCL em ambientes de hobby ou estudo — ainda tão relevante para quem quer aprender.


🧠 Comentário Final

O JCL é uma das poucas linguagens que realmente sobreviveu às eras. Ele começou com OS/360, passou por MVS, OS/390 e hoje vive em z/OS 3.2, controlando jobs batch críticos em empresas gigantes. Apesar de não ter “versões da linguagem” como outras linguagens de programação, sua evolução está intrinsecamente ligada às releases do z/OS.

Com ferramentas modernas que o suportam, JCL continua não apenas vivo, mas sendo uma peça-chave em ambientes corporativos, mesmo frente a novos paradigmas como cloud, AI e integração híbrida.

segunda-feira, 30 de setembro de 2024

🔥 JCL no z/OS 3.2 — o silêncio que sustenta tudo

 

Bellacosa Maiframe apresenta JCL V3.2 Job Control Language

🔥 JCL no z/OS 3.2 — o silêncio que sustenta tudo



📅 Datas importantes

  • Release (GA): setembro de 2024

  • Final de suporte IBM (EoS): 30 de setembro de 2029 (ciclo padrão de suporte)

O z/OS 3.2 não veio para “mudar o jogo”.
Ele veio para confirmar quem sempre mandou no jogo.


🧬 Contexto histórico

O z/OS 3.2 nasce num mundo onde:

  • Cloud híbrida já é chão de fábrica

  • Observabilidade virou obrigação

  • Segurança é contínua

  • Automação é regra

  • APIs e eventos disparam tudo

E mesmo assim…

👉 o JCL continua sendo o último elo confiável entre intenção e execução.

Bellacosa resumiria assim:

“O mundo ficou barulhento.
O JCL continua em silêncio… funcionando.”


JCL V3.2 Job Control Language

✨ O que há de novo no JCL no z/OS 3.2

A resposta curta (e honesta):

❌ Nada mudou na linguagem
✅ Tudo mudou no peso estratégico do JCL

🆕 1. JCL como fundação do core digital

No z/OS 3.2:

  • O batch é oficialmente serviço corporativo

  • JCL é disparado por:

    • APIs

    • eventos

    • pipelines

    • schedulers cognitivos

  • O JCL vira o contrato final de execução

👉 Se passou pelo JCL, aconteceu de verdade.


🆕 2. JES2 no ponto máximo de previsibilidade

  • Escala massiva de jobs concorrentes

  • Spool estável como rocha

  • Restart e recovery totalmente previsíveis

  • Integração total com automação e monitoramento

O operador agora governa fluxo,
não apaga incêndio.


🆕 3. DFSMS completamente orientado a políticas

  • Storage cada vez mais autônomo

  • Menos parâmetros manuais

  • Menos erro humano

  • Mais inteligência sistêmica

O resultado?
👉 JCL mais limpo, mais legível e mais durável.


🔧 Melhorias percebidas no dia a dia

✔ Batch 24x7 sem drama
✔ Menos “gambiarras históricas”
✔ Mais padronização
✔ JCL tratado como código crítico
✔ Auditoria e rastreabilidade nativas

Nada mudou no //STEP EXEC.
Tudo mudou na responsabilidade do job.


🥚 Easter Eggs (para mainframer raiz)

  • 🥚 JCL escrito no OS/360 ainda roda no z/OS 3.2

  • 🥚 IEFBR14 segue vivo e respeitado

  • 🥚 Comentários em JCL mais antigos que DevOps 😅

  • 🥚 O erro mais comum continua sendo:

    • RC ignorado

    • DISP mal planejado

    • dataset em uso em produção

👉 Tecnologia evolui. Erro humano é backward compatible.


💡 Dicas Bellacosa para JCL no z/OS 3.2

🔹 Trate JCL como ativo estratégico corporativo
🔹 Pense no job como serviço crítico, não script
🔹 Versione JCL como código
🔹 Padronize nomes, comentários e RC
🔹 Documente decisões, não só comandos

🔹 Sempre use:

  • IF / THEN / ELSE

  • RC explícito

  • SYSOUT claro

  • comentários pensando em décadas

Esse JCL vai rodar quando você não estiver mais aqui.


📈 Evolução do JCL até o z/OS 3.2

EraPapel do JCL
OS/360Controle batch
MVSAutomação
OS/390Base corporativa
z/OS V1.xOrquestração
z/OS V2.xMundo híbrido
z/OS 3.1Core digital
z/OS 3.2Alicerce definitivo

👉 No z/OS 3.2, o JCL não é discutido.
Ele é assumido.


📜 Exemplo de JCL “cara de z/OS 3.2”

//BELL32 JOB (ACCT),'JCL z/OS 3.2', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //* //* JOB EXPOSTO COMO SERVIÇO CORPORATIVO //* DISPARADO POR API / EVENTO / PIPELINE //* //STEP01 EXEC PGM=COREPROC //STEPLIB DD DSN=BELLACOSA.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //* //IF (STEP01.RC = 0) THEN //STEP02 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE BELLACOSA.WORK.DATA SET MAXCC = 0 /* //ENDIF

💬 Comentário Bellacosa:

“Esse job não sabe quem o chamou.
E isso é exatamente o motivo pelo qual ele é confiável.”


🧠 Comentário final

O JCL no z/OS 3.2 é a confirmação definitiva de uma verdade antiga:

🔥 Confiabilidade não se reinventa.
Ela se preserva.

Enquanto novas plataformas prometem estabilidade,
o JCL segue entregando há mais de 60 anos.

JCL não é passado.
JCL é o chão onde o futuro pisa.

terça-feira, 24 de setembro de 2024

sexta-feira, 20 de setembro de 2024

Conheça a Stack Mainframe

Bem-vindo a Stack Mainframe, aprenda COBOL #ibm #mainframe #cobol #cics #db2 #sdsf #jes2 #job #jcl #rexx #qsam #vsam

terça-feira, 20 de agosto de 2024

Debugando programa COBOL

DISPLAY e BUG TRAP as melhores maneiras de debugar um programa COBOL. Qual é a sua técnica? #ibm #mainframe #cobol #debug #trap #bug #returncode #maxcc #jcl #sdsf #job

segunda-feira, 19 de agosto de 2024

Conversão do REAL um grande trabalho da informática mainframe


A resiliência e a tenacidade técnica dos Analistas de Sistemas Mainframe, que em quatro dias conseguiram virar a chave, convertendo sistemas críticos para a conversão de moeda, do URV para o REAL. 



Feriado bancário na Sexta-feira, mas Segunda-feira estava tudo no ar, funcionando, quatro dias de loucura no Departamento de Informatica, muita pizza, companheirismo, horas-extra, mas sensação de dever cumprido. 




 Programas em COBOL, PLI e Natural em Sistemas Mainframe alterados para a conversão da Moeda, sem perdas ou prejuízos aos clientes e empresas. Sendo um Caso de Estudo de Sucesso, visto de perto pelas autoridades europeias, que passado 7 anos repetiram o processo na Conversão do Euro.

#ibm #mainframe #real #urv #conversao #cobol #natural #jcl #pli #db2 #adabas #job #sistemas #dev #programador #sucesso
 

sábado, 20 de julho de 2024

Road Map para Aprender Mainframe

O que um jovem padawan deve aprender para ser um especialista na Stack Mainframe. Um caminho com inúmeras possibilidades, requer esforço e dedicação, porém os frutos condizem ao esforço. Descubra o z/OS, codifique em COBOL, crie queries no SQL DB2 e vá além. #ibm #mainframe #cobol #cics #db2 #jcl #sdsf #qsam #vsam #query #sql #etl #jobs #procs #jes2 #lpar #sysplex

sábado, 8 de junho de 2024

🧠💾 DevOps no Mainframe: Quando o COBOL Encontrou o Git

 


🧠💾 DevOps no Mainframe: Quando o COBOL Encontrou o Git

Por Vagner Bellacosa – Bellacosa Mainframe Chronicles – “Porque até o z/OS precisa de pipeline”


“No início, havia o JCL. E o JCL era bom.
Mas um dia o DevOps olhou para o Mainframe e disse:
‘Que tal versionar isso aí?’”
Antigo Provérbio da Guilda dos Analistas de Produção, circa 2018.


⚙️ 1. A Origem da Força: Mainframe Antes do DevOps

Nos primórdios do tempo digital — década de 60 — o Mainframe era o único devops possível.
Desenvolvia, testava, implantava e executava tudo no mesmo lugar.
Sem containers, sem cloud, sem microservices. O sistema era monolítico, mas estável como uma rocha.

Os times trabalhavam em ciclos longos:

  • meses para desenvolver,

  • semanas para testar,

  • e madrugadas inteiras para colocar em produção com medo do abençoado abend U4038.

💡 Curiosidade Bellacosa:
O termo DevOps só surgiria nos anos 2000, mas os mainframers já praticavam sua essência muito antes — colaboração, automação e controle eram o DNA natural do z/OS.


🔄 2. O Encontro dos Mundos: DevOps e COBOL

Quando o mundo distribuído começou a falar em Agile, CI/CD e pipelines, o Mainframe parecia o tiozão da família que ainda usava pager.
Mas o que pouca gente sabia é que o tiozão guardava o cofre dos bancos, das seguradoras e dos governos.

E então... 💥
IBM, Broadcom, Rocket e BMC perceberam: era hora de modernizar sem destruir.

Assim nasceu o DevOps para Mainframe:
A fusão entre práticas modernas (Git, Jenkins, SonarQube, API Gateway) e linguagens lendárias (COBOL, PL/I, JCL, Assembler).


🧰 3. As Ferramentas da Nova Ordem

O arsenal do Cavaleiro DevOps Mainframe é poderoso e variado.
Veja o comparativo entre o lado clássico e o lado moderno da força:

⚔️ Era Clássica🛰️ Era DevOps
Librarian / EndevorGitHub / GitLab / Bitbucket
JCL SUBMIT manualJenkins Pipeline / Tekton
Compilação no TSOBuild automático com DBB (Dependency Based Build)
ChangeMan / SCLMUrbanCode Deploy / Ansible
Control-M / CA7Orquestração via API REST
ISPF EditorVisual Studio Code com Zowe Explorer
Spool JES2Logs integrados no Jenkins e Splunk

🧩 Easter Egg Técnico:
O Zowe é o primeiro projeto open source oficial da IBM Z — e seu nome vem da junção de “z/OS” + “owe” (de open web).
Sim, o Mainframe virou web-friendly.


🔬 4. O Workflow do Padawan DevOps Mainframe

Vamos decodificar o ciclo de vida moderno de um projeto COBOL com DevOps.

🪐 Etapa 1 – Codificação

O desenvolvedor escreve o COBOL no VS Code com o plugin Zowe Explorer, salvando direto no Git.

“Adeus ISPF Edit... Olá Ctrl+S!”

⚙️ Etapa 2 – Build Automatizado

O commit aciona o Jenkins, que executa o IBM DBB — ferramenta que compila COBOL, monta COPYBOOKS e cria LOADs automaticamente.

🧪 Etapa 3 – Teste Automatizado

Entram em cena frameworks como:

  • ZUnit (para testar programas COBOL)

  • Topaz for Total Test (Broadcom)

  • IBM zUnit + Jenkins Reports

Os testes validam não só a lógica, mas também o acesso a DB2 e VSAM.

🧭 Etapa 4 – Integração Contínua

Após os testes, o build é integrado a ambientes de QA via UrbanCode Deploy, garantindo controle e versionamento de componentes.

🚀 Etapa 5 – Deploy

Deploy automatizado no CICS, Batch, IMS ou Web Service.
Tudo monitorado com SonarQube, Splunk e SMF logs.


🧙‍♂️ 5. Metodologia do Caminho DevOps

Um Jedi Mainframe moderno segue quatro princípios:

  1. Automatize tudo que puder — builds, testes, deploys e até submissão de JCLs.

  2. Integre com respeito — nem tudo deve ser refatorado; às vezes o legado é sábio.

  3. Versão é poder — o Git é o novo repositório sagrado.

  4. Feedback é Força — monitore, aprenda, ajuste.

📜 Curiosidade Bellacosa:
O IBM DBB foi desenvolvido originalmente como um projeto interno chamado “Project Bluemix for z/OS”.
Ele traduz a dependência do mundo JCL em pipelines YAML. Um verdadeiro “tradutor de eras”.


6. O DevOps Mainframe em Ação

Um pipeline típico de DevOps COBOL pode ser visualizado assim:

GIT PUSH ↓ JENKINS PIPELINE ↓ IBM DBB BUILD ↓ ZUNIT / TOPAZ TESTS ↓ URBANCODE DEPLOY ↓ Z/OS CICS EXECUTION ↓ MONITOR / FEEDBACK LOOP




💬 Easter Egg Filosófico:
“Pipeline é o novo JCL.”
Enquanto o JCL executa passos em batch, o pipeline orquestra passos de automação.
Ambos seguem o princípio da execução sequencial controlada — separados apenas por 50 anos de sintaxe. 😎


🕰️ 7. A Linha do Tempo da Evolução

AnoMarcoDescrição
1964Lançamento do System/360O berço da automação batch
1980SCLM e LibrarianControle de versão rudimentar
1990Endevor e ChangeManCM integrado ao ciclo de vida
2010IBM DBB & UrbanCodeDevOps ganha cara no z/OS
2018Projeto ZoweMainframe abraça o open source
2020+Git + Jenkins + API RESTA força se equilibra

8. Dicas do Mestre Bellacosa

  • Sempre compile com mensagens ativas: use LIST, XREF no compilador — são o “lint” do COBOL.

  • Evite mexer direto no Loadlib: agora ele é gerado automaticamente — é o artefato, não o playground.

  • Integre CICS e DB2 nos testes: DevOps não é só build, é comportamento de sistema.

  • Zowe CLI é sua varinha mágica: automatize submissão de JCL, consulta a spool e deploys sem entrar no ISPF.


🧩 9. O Lado Oculto da Força (Curiosidades)

  • O primeiro pipeline DevOps para COBOL foi rodado na IBM Poughkeepsie Labs, em um z13 — com sucesso total, sem um único abend.

  • Algumas empresas usam Docker simulando z/OS via ZD&T (z Development & Test Environment).
    Sim, é possível rodar um “mini mainframe” dentro de um laptop gamer! 🎮

  • O termo “Mainframe Modernization” virou moda — mas quem entende sabe que modernizar ≠ migrar.
    O segredo é integrar, não substituir.


🌌 10. Conclusão: O Mainframe Nunca Dorme

O DevOps não é o fim do legado — é o elo entre gerações.
Hoje, um pull request pode acionar um JCL SUBMIT, e um commit pode atualizar um CICS.
O Mainframe não ficou velho: ele apenas aprendeu a conversar com os jovens.

“O Mainframe não é um dinossauro.
É o dragão que aprendeu a voar em nuvens.” 🐉☁️

 

sexta-feira, 12 de abril de 2024

Uma visão geral sobre o trabalhador de Mainframe

Equipe de desenvolvimento mainframe


Descubra a Stack MAINFRAME e veja o que necessita para ser um Desenvolvedor COBOL de Sucesso. Aprenda COBOL, há 65 anos revolucionando o mercado de informática.

quinta-feira, 11 de abril de 2024

segunda-feira, 8 de abril de 2024

O COBOL em sua primeira reunião

Codasyl em 1959 o pontapé inicial do COBOL



Em 08 de Abril de 1959, foi dado o pontapé inicial da criação do COBOL. Muita coisa aconteceu desde então, surgiu o armazenamento em cartão perfurado, tape, disco e cartridge, surgiram o qsam, vsam, db2. Acompanhe-nos e descubra mais

sábado, 16 de março de 2024

🧾 JCL – Linha do Tempo Completa

 


🧾 JCL – Linha do Tempo Completa

Do cartão perfurado ao DevOps no z/OS



🧠 Antes do JCL (anos 1950 – início dos 60)

Contexto

  • Programas rodavam em batch puro, controlados manualmente.

  • Operadores plugavam cabos, montavam fitas, ajustavam switches.

  • Cada sistema tinha seu próprio “jeito” de rodar jobs.

📌 Problema:
Não existia uma linguagem padrão para dizer o que rodar, quando e com quais recursos.

👉 Solução da IBM: criar uma linguagem declarativa para controlar o sistema.


🟦 1964 – NASCE O JCL (OS/360)

Sistema: OS/360
Hardware: IBM System/360
Evento histórico: um único SO para toda a linha de hardware.

O que surge

  • JCL formalmente introduzido

  • Conceitos fundamentais:

    • //JOB

    • //EXEC

    • //DD

  • Sintaxe baseada em cartões perfurados

  • Colunas fixas, 80 caracteres, tolerância zero a erro

📌 Impacto

  • Pela primeira vez, o operador deixa de decidir tudo manualmente

  • O job descreve:

    • programa

    • datasets

    • dispositivos

    • prioridade

🧨 Easter Egg histórico

Fred Brooks (IBM) disse que JCL foi uma das linguagens mais difíceis já criadas —
mas impossível de abandonar.


🟨 1966–1971 – JCL no DOS/360 e OS/360 amadurece

Sistemas: DOS/360, OS/360 MFT/MVT

Evolução

  • Pequenas variações de JCL entre DOS e OS

  • Mais parâmetros em DD

  • Introdução de:

    • datasets temporários

    • concatenação

    • procedimentos simples

📌 Nota Bellacosa
Aqui nasce a primeira dor do mainframer:
👉 “Esse JCL roda no MVT mas não no DOS?”


🟧 1972–1974 – A Era do Virtual Storage (OS/VS → MVS)

Sistemas: OS/VS1, OS/VS2, depois MVS

O que muda no JCL

  • Nada quebra (compatibilidade total)

  • Mas o poder cresce:

    • mais steps

    • mais memória

    • mais jobs simultâneos

  • Procedures catalogadas se tornam padrão

  • JCL passa a ser infraestrutura crítica

📌 Marco invisível
O JCL deixa de ser “controle de job”
e vira linguagem de orquestração do datacenter.


🟥 Final dos anos 70 – JES2 / JES3

Subsistemas: JES2 e JES3

Evolução prática

  • JCL começa a dialogar mais com o spool

  • Controle refinado de:

    • SYSOUT

    • classes

    • prioridades

  • Ambientes multi-LPAR começam a surgir

🧠 Filosofia
JCL continua simples…
mas o ambiente em volta vira um monstro.


🟪 Anos 80 – Estabilidade Absoluta

Sistemas: MVS/XA, MVS/ESA

O que muda

  • Quase nada na sintaxe

  • Muitos novos parâmetros

  • JCL vira uma “linguagem fossilizada viva”

📌 Realidade
Um JCL de 1975 ainda roda.
Um COBOL também.
O estagiário não.


🟩 1995 – OS/390 (o JCL entra na era corporativa moderna)

Sistema: OS/390

Evolução

  • Consolidação:

    • MVS

    • JES

    • DFSMS

  • JCL passa a lidar fortemente com:

    • SMS

    • storage groups

    • políticas corporativas

📌 Mudança cultural
O JCL deixa de ser “do operador”
e vira ativo estratégico da empresa.


🟦 2000 – z/OS nasce (JCL entra no século XXI)

Sistema: z/OS 1.1

O que muda (sem quebrar nada)

  • Integração com:

    • Unix System Services (USS)

    • arquivos POSIX

  • JCL agora convive com:

    • shell scripts

    • Java

    • C/C++

  • Melhor controle condicional

📌 Importante
Nenhum “JCL 2.0”
Nenhuma revolução sintática
👉 só evolução silenciosa.


🟨 2005–2015 – JCL + Automação

Novidades

  • IF / THEN / ELSE / ENDIF no JCL

  • Mais lógica declarativa

  • Menos dependência de retorno via utilitários externos

📌 JCL começa a pensar
Não é programação…
mas já decide caminhos.


🟧 2016–2020 – JCL encontra o DevOps

Mudanças indiretas

  • JCL versionado em Git

  • Edição em VS Code (Z Open Editor)

  • Integração com pipelines

  • JCL analisado, validado, automatizado

🧠 Paradoxo
A linguagem mais antiga do datacenter
vira parte do pipeline moderno.


🟥 2020–2025 – JCL nos z/OS atuais (2.5, 3.x)

Situação atual

  • JCL continua:

    • estável

    • retrocompatível

    • crítico

  • Novos parâmetros continuam surgindo

  • Integração com:

    • Zowe

    • APIs

    • observabilidade

    • automação corporativa

📌 Verdade absoluta
Se o JCL parar,
o banco para.
O país sente.


🧭 Linha do tempo resumida

AnoSistemaEstado do JCL
1964OS/360JCL nasce
1974MVSJCL escala
1980sMVS/XA/ESAJCL estabiliza
1995OS/390JCL corporativo
2000z/OSJCL moderno
2010sz/OSJCL condicional
2020sz/OS 3.xJCL + DevOps

☕ Comentário final (Bellacosa Mode ON)

JCL não evoluiu para agradar desenvolvedores.
Evoluiu para não quebrar o mundo.

Enquanto linguagens vêm e vão,
o JCL permanece,
silencioso, feio, poderoso
e absolutamente indispensável.


domingo, 1 de outubro de 2023

JCL: Gerenciamento de Datasets de Saída no Mainframe

 

Bellacosa Mainframe JCL e seus datasets

JCL: Gerenciamento de Datasets de Saída no Mainframe

Se você já passou algum tempo no mainframe, sabe que o JCL (Job Control Language) é a espinha dorsal da execução de programas e da manipulação de dados. Uma das tarefas mais comuns é criar e controlar datasets de saída. Mas, se você não prestar atenção aos detalhes de DISP, UNIT, VOL e PATHOPTS, seu job pode falhar ou produzir resultados inesperados. Vamos destrinchar o assunto, passo a passo, no estilo Bellacosa Mainframe.


1️⃣ Nomeando e Criando Datasets

Datasets Permanentes

Para criar datasets permanentes em DASD (disco) ou fitas, usamos o parâmetro DSN para indicar o nome:

  • Qualificado: PROD.DAILY.RLSREP → inclui HLQ (High-Level Qualifier).

  • Não qualificado: MYDATA → nome simples de 1 a 8 caracteres.

  • Geração (GDS): PROD.DAILY.RLSREP(+1) → cria uma nova geração sem sobrescrever a anterior.

Datasets Temporários

  • Começam com &&, ex.: &&TEMP1

  • São criados automaticamente pelo sistema se nenhum DSN for informado.

  • Podem ser passados para outros steps usando DISP=(NEW,PASS).


2️⃣ Disposição do Dataset (DISP)

O parâmetro DISP controla o status e destino do dataset, e é crucial para evitar sobrescrita indesejada.

Tipo de datasetExemplo DISPSignificado
Novo datasetDISP=(NEW,CATLG,DELETE)Cria o dataset; mantém se sucesso; deleta se falha
Dataset existenteDISP=(OLD,KEEP,KEEP)Abre exclusivo; mantém independentemente do resultado
Acrescentando dadosDISP=(MOD,KEEP,KEEP)Acrescenta no final do dataset existente
IgnoradoDISP=DUMMY ou DSN=NULLFILEPara steps que não precisam de saída real

⚠️ Atenção: +0 não cria dataset novo; +1 sim. E nunca confunda OLD com MOD — o primeiro sobrescreve, o segundo acrescenta.


3️⃣ Definindo o Local de Armazenamento (UNIT e VOL)

UNIT

Define o tipo de dispositivo ou grupo:

  • SYSDA → disco genérico

  • 3390 → dispositivo específico

  • TAPE ou CART → fitas

Se você não especificar, o sistema pode usar defaults definidos pelo administrador.

VOL

Define o volume específico:

  • VOL=SER=T44489 → fita específica

  • Permite referback em steps subsequentes

  • Se o volume não estiver disponível, o operador recebe uma mensagem solicitando ação

Exemplo de dataset em fita específica:

//OUTDD DD DSN=OUT.OFFSITE.DATA, DISP=(NEW,CATLG,DELETE), UNIT=CART, VOL=SER=T44489

4️⃣ Parâmetros de z/OS UNIX Files

Para arquivos UNIX no z/OS, usamos:

ParâmetroFunção
PATHCaminho completo do arquivo
PATHOPTSTipo de acesso (read/write, exclusivo, criar)
PATHMODEPermissões (leitura, escrita, execução para user/group/other)
PATHDISPAção após execução (KEEP, DELETE)

Exemplo:

//DD1 DD PATH='/u/ibmuser/stktake', PATHOPTS=(OWRONLY,OEXCL,OCREAT), PATHMODE=(SIRWXU,SIRGRP), PATHDISP=(KEEP,DELETE)

5️⃣ Erros Comuns e Como Evitar

ErroCausaSolução
IEF210I – Incorrect UNITUNIT inválido (DISK em vez de SYSDA)Usar unidade válida: SYSDA
IEF253I – Duplicate Name on VolumeTentativa de criar dataset que já existe no volumeUse outro nome ou +1 para nova geração
VOL não disponívelVolume específico não presenteOperador recebe mensagem; deve escolher ação
DISP incompletoEsquecer subparâmetrosSempre usar os 3 subparâmetros: (NEW,CATLG,DELETE)

6️⃣ Exemplo de Criação de Dataset

Dataset em disco genérico 3390

//TESTDD DD DSN=MY.TEST.DATA, DISP=(NEW,CATLG,DELETE), UNIT=3390, SPACE=(TRK,(10,5),RLSE)

Dataset em fita específica para envio offsite

//OUTDD DD DSN=OUT.OFFSITE.DATA, DISP=(NEW,CATLG,DELETE), UNIT=CART, VOL=SER=T44489

Resumo Final

  • DSN → nome do dataset

  • DISP → controla status e destino (NEW, OLD, MOD, KEEP, DELETE)

  • UNIT → define dispositivo ou grupo

  • VOL → fita ou volume específico

  • SPACE/DCB → quantidade de espaço e atributos de formato

  • z/OS UNIX → use PATH, PATHOPTS, PATHMODE, PATHDISP

Seguindo essas práticas, você garante que seus jobs criem datasets corretamente, evitem sobrescrita acidental, respeitem volumes específicos e funcionem tanto em discos quanto fitas.


💡 Dica Bellacosa:
Sempre revise DISP, UNIT e VOL antes de submeter o job. Uma simples confusão entre OLD, MOD e NEW ou entre SYSDA e 3390 pode gerar horas de troubleshooting.