☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

sexta-feira, 18 de junho de 2021

ABEND sem Mistérios — Parte IV

 

Bellacosa Mainframe e o abend sem misterios parte IV

☕ Um Café no Bellacosa Mainframe

ABEND sem Mistérios — Parte IV

O que Acontece Dentro do IBM Z Quando um ABEND Ocorre: Registradores, Memória, TCB, RB e a Jornada de uma Instrução até a CPU

"Para o programador, um ABEND acontece quando o programa para. Para o processador, ele acontece quando uma única instrução viola uma regra da arquitetura."


Introdução

Até agora aprendemos:

  • o que é um ABEND;

  • como investigá-lo;

  • como descobrir sua causa raiz.

Agora vamos entrar em um território que poucos programadores COBOL exploram.

Vamos olhar o problema pelo ponto de vista do próprio IBM Z.

Imagine que você pudesse entrar dentro do processador durante um S0C4.

O que estaria acontecendo?

Quem decidiu interromper seu programa?

Quem chamou o dump?

Como a CPU sabe exatamente qual instrução falhou?

Por que o sistema consegue informar o endereço exato onde tudo aconteceu?

A resposta está na arquitetura do IBM Z.


O IBM Z nunca executa COBOL

Essa é uma das primeiras grandes descobertas.

O processador IBM Z não conhece COBOL.

Nem PL/I.

Nem C.

Nem Java.

Muito menos JCL.

A CPU conhece apenas uma linguagem:

Machine Instructions

Ou seja,

milhões de instruções binárias.


O caminho de um programa

Quando escrevemos:

ADD WS-VALOR
 TO WS-TOTAL.

O compilador transforma isso em dezenas de instruções de máquina.

O fluxo verdadeiro é:

COBOL

↓

Enterprise COBOL Compiler

↓

Assembler

↓

Objeto

↓

Binder

↓

Load Module

↓

Machine Instructions

↓

CPU IBM Z

Quando ocorre um S0C7,

não foi a instrução ADD que falhou.

Foi uma instrução de máquina gerada pelo compilador.


A CPU trabalha uma instrução por vez

Imagine:

READ

MOVE

ADD

WRITE

Para nós parecem quatro comandos.

Para o processador,

podem representar centenas de instruções.

Cada instrução passa por etapas.

Buscar

↓

Decodificar

↓

Executar

↓

Gravar Resultado

Esse processo acontece bilhões de vezes por segundo.


Quando nasce um S0C4

Imagine uma instrução tentando acessar um endereço inexistente.

A CPU verifica:

Endereço

↓

Área permitida?

↓

SIM

↓

Executa

ou

Endereço

↓

Área permitida?

↓

NÃO

↓

Program Interrupt

Nesse instante,

o S0C4 começa a nascer.


O Program Interrupt

O processador possui dezenas de tipos de interrupções.

Algumas delas:

  • Protection Exception

  • Addressing Exception

  • Operation Exception

  • Data Exception

  • Overflow

  • Fixed Point Divide

Quando ocorre uma dessas situações,

a CPU interrompe imediatamente a instrução.

Ela não pergunta ao programa se deseja continuar.


O papel do PSW

O Program Status Word é um dos componentes mais importantes da arquitetura IBM Z.

Ele contém informações como:

  • endereço da próxima instrução;

  • modo de execução;

  • chave de proteção;

  • condição da CPU;

  • máscara de interrupções.

É praticamente o "painel de controle" do processador.

Sempre que ocorre um ABEND,

o PSW é salvo.

É por isso que conseguimos descobrir exatamente onde tudo aconteceu.


Registradores: a mesa de trabalho da CPU

Imagine um marceneiro.

Sobre sua bancada existem:

  • régua;

  • lápis;

  • parafusos;

  • martelo.

A CPU possui algo parecido.

São os registradores.

Ela utiliza esses espaços para guardar:

  • endereços;

  • parâmetros;

  • resultados;

  • ponteiros;

  • contadores.

Quando um dump é produzido,

todos eles são preservados.


O famoso R15

Quem trabalha com COBOL logo aprende sobre o registrador R15.

Ele normalmente contém:

  • endereço inicial de programas;

  • códigos de retorno;

  • informações importantes durante CALLs.

Em muitas análises,

o primeiro registrador observado é justamente ele.


O que é Storage?

Quando dizemos:

WS-NOME

PIC X(30)

Essa variável ocupa memória.

No IBM Z essa memória recebe o nome de:

Storage

É nela que vivem:

  • variáveis COBOL;

  • buffers;

  • tabelas;

  • áreas de comunicação;

  • parâmetros.

Um S0C4 quase sempre está relacionado ao uso incorreto dessa Storage.


O conceito de Address Space

Uma dúvida comum dos iniciantes é:

"O programa acessa toda a memória do computador?"

Não.

Cada JOB ou região CICS executa em um Address Space.

Pense em um apartamento.

Cada morador possui:

  • sala;

  • cozinha;

  • quarto.

Um apartamento não invade o outro.

Da mesma forma,

um programa não pode acessar livremente a memória de outro Address Space.


O que é um TCB?

Agora chegamos a um dos componentes mais importantes do z/OS.

TCB significa:

Task Control Block

Toda tarefa possui um.

Ele contém informações fundamentais sobre a execução:

  • registradores;

  • PSW;

  • prioridade;

  • estado;

  • ponteiros;

  • RB atual.

Sem o TCB,

o sistema não saberia quem está executando.


Imagine um crachá

Imagine uma empresa.

Cada funcionário possui um crachá.

No IBM Z,

o TCB funciona exatamente assim.

Ele identifica aquela tarefa perante o sistema operacional.


O RB (Request Block)

Durante uma chamada de serviço,

o sistema cria um RB.

Ele registra:

  • quem chamou;

  • qual serviço foi solicitado;

  • qual rotina será executada;

  • para onde retornar.

Em uma investigação profunda,

a sequência de RBs ajuda a reconstruir a história da execução.


O Dispatcher

Quem decide qual programa utilizará a CPU?

Não é o JES2.

Não é o COBOL.

É o Dispatcher do z/OS.

Ele distribui tempo de processamento entre milhares de tarefas.

Imagine um maestro regendo uma orquestra.

Cada músico toca por alguns instantes.

Depois outro assume.

Tudo acontece tão rapidamente que parece simultâneo.


O papel do Supervisor

Quando ocorre um Program Interrupt,

a CPU entrega o controle ao Supervisor do sistema operacional.

Ele analisa:

  • tipo da exceção;

  • PSW;

  • registradores;

  • TCB;

  • RB;

  • contexto da tarefa.

Depois decide:

  • gerar dump;

  • emitir mensagens;

  • encerrar a tarefa.

É nesse momento que nasce oficialmente o ABEND.


Como nasce um Dump

O Dump não aparece por mágica.

O sistema percorre diversas estruturas.

Ele salva:

  • registradores;

  • memória;

  • TCB;

  • RB;

  • PSA;

  • LSQA;

  • CSA;

  • pilhas;

  • módulos carregados;

  • áreas do LE.

Tudo isso permite que o problema seja investigado posteriormente.


A pilha de chamadas

Quando fazemos:

Programa A

↓

CALL B

↓

CALL C

↓

CALL D

O sistema mantém uma pilha.

Ela registra:

  • quem chamou;

  • quem foi chamado;

  • para onde retornar.

O CEEDUMP utiliza essa pilha para montar o famoso Traceback.


Por que um Offset é tão importante?

Quando o compilador gera o Load Module,

as linhas do COBOL deixam de existir.

O executável conhece apenas endereços.

Por isso o dump mostra:

Offset

0000A3F2

Ferramentas como IBM Fault Analyzer, Abend-AID e IDz fazem o caminho inverso: relacionam esse offset ao programa-fonte, permitindo localizar a instrução COBOL correspondente.


O papel do Binder

Muitos iniciantes acreditam que a compilação termina quando o compilador gera o objeto.

Na verdade,

existe outra etapa fundamental.

O Binder (antigo Link-Editor) reúne:

  • módulos objeto;

  • bibliotecas;

  • sub-rotinas;

  • Language Environment.

O resultado é o Load Module, que será executado pelo z/OS.

Sem essa etapa,

não existe programa executável.


E no CICS?

Dentro do CICS tudo continua acontecendo.

A diferença é que existe outra camada.

Terminal

↓

Task CICS

↓

Dispatcher CICS

↓

Programa COBOL

↓

Language Environment

↓

CPU

Quando ocorre um ASRA,

o CICS captura o Program Interrupt,

gera suas mensagens

e encerra a Task.


O que realmente vê um SysProg?

Enquanto o desenvolvedor observa:

S0C7

O SysProg costuma enxergar algo muito maior.

Ele analisa:

  • PSW;

  • TCB;

  • RB;

  • ASCB;

  • SRB;

  • Dispatcher;

  • WLM;

  • armazenamento;

  • interrupções;

  • módulos do sistema.

São duas perspectivas diferentes do mesmo problema.


Curiosidades da arquitetura IBM Z

  • O IBM Z possui mecanismos de proteção de memória extremamente sofisticados, fundamentais para executar milhares de workloads simultaneamente com segurança.

  • Um único sistema pode manter milhares de Tasks ativas, cada uma com seu próprio contexto de execução.

  • O PSW é salvo e restaurado continuamente durante trocas de contexto entre tarefas.

  • Grande parte da confiabilidade do IBM Z vem justamente da capacidade de detectar exceções e interromper apenas a tarefa problemática, preservando o restante do sistema.


O caminho completo de um ABEND

Programa COBOL

↓

Compilador

↓

Load Module

↓

CPU executa instrução

↓

Program Interrupt

↓

Supervisor z/OS

↓

Análise do contexto

↓

Dump

↓

Mensagens

↓

ABEND

↓

SDSF

↓

Investigação

↓

Correção

↓

Aprendizado

Conclusão

Quando compreendemos a arquitetura interna do IBM Z, os ABENDs deixam de ser mensagens misteriosas e passam a ser eventos perfeitamente explicáveis.

Um S0C4 não é "azar". Um S0C7 não é "capricho do compilador". Eles são a consequência direta de mecanismos de proteção cuidadosamente projetados para preservar a integridade do sistema.

Essa é uma das grandes diferenças do Mainframe: cada interrupção, cada registrador salvo, cada PSW capturado e cada dump gerado fazem parte de uma arquitetura construída para ser observável, previsível e extremamente resiliente.

O Programador Padawan que entende essa jornada deixa de enxergar apenas o código COBOL e passa a compreender como hardware, sistema operacional, compilador e aplicação trabalham em perfeita sintonia. É nesse momento que ele começa a pensar como um verdadeiro especialista em IBM Z.


Dia 2 - Do setup ao hello world em BASIC - MSX 1988



Dia 2 - Do setup ao hello world em BASIC - MSX 1988

  • #Programação para Internet
  • #Testes unitários
  • #Arquitetura de Sistemas

Dia 2 - Do setup ao hello world


image


Faça um guia de passo a passo de como preparar o ambiente de desenvolvimento da sua linguagem favorita


image


Desde que comecei no mundo da informática nos anos 80 do século passado, tanta coisa mudou, a evolução foi muito rápida para os mais novos, fica difícil explicar a balburdia das linguagens de programação que surgiram desde então.


image


Comecei programando em basic para um microcomputador de 8 bits, chamado TK 85 com 48 kilobytes de memória, RAM, através de revistas com códigos em Basic + Assembler, codificava joguinhos e gravava em fita K7: através de um gravador portátil, que nas horas vagas minha irmã usava para gravar músicas da rádio.


No decorrer dos anos pude experimentar outros equipamentos, sempre em programando em BASIC (Apple II, MSX HotBit), chegando ao curso de processamento de dados utilizando o famoso CP 500, um enorme gabinete com monitor integrado e leitor de disco.


A grande alegria eram os joguinhos que copiávamos das revistas de programação, que vinham cheio de erros de digitação e que precisávamos juntar em clubinhos para tentar solucionar os bugs, ou contar com o amigo do colega do primo que morava em Miami, para nos enviar k7 pelo correio com as ultimas novidades dos States que eram copiadas a exaustão.


image


A lição aprendida nestes anos todos foi ter paciência, muita paciência, pois nem sempre as coisas funcionam a primeira, coisa que continua igual nos dias atuais, por isso preparem-se, leiam tutoriais, troque ideias com colegas, visite fóruns. Com o passar do tempo irá adquirir skills e conseguira solucionar inúmeros problemas insolúveis.


Voltando ao tema do artigo, vou apresentar um velho programinha em BASIC do MSX Hotbit que imprimira 5 vezes o Hello World na tela.


Basic


10 REM Programa Hello World
20 CLS
30 FOR F=1 to 5
40 PRINT “ “
50 PRINT "Hello World"
60 NEXT F


O processo de instalação era muito simples, bastava ligar o cabo de output do microcomputador na entrada da antena da TV Analógica, pressionar a tecla power e aguardar o sistema iniciar. Um mundo novo se abria, um portal para outra dimensão. Prepare-se para momentos de pura nostalgia, relembrando momentos únicos de madrugadas em frente ao mundo digital, sem acesso a internet dos anos 80.


Explicando sobre programas Basic, no passado o editor trabalhava com linhas numeradas, o comando Rem servia de comentário, CLS limpar a tela, o FOR pouco mudou e o Print imprimia mensagem na tela, next incrementava o contador e devolvia o comando ao For.


Movimentos aleatórios


image


Somos exploradores em um mundo em constante inovação, a cada ano as maquinas ficam mais rápidas, com mais memória e espaço em disco, surgem periféricos únicos, linguagens nascem, evoluem e morrem.


Imagine o que mudou nestes anos, tivemos: o ocaso da IBM, a fênix Microsoft, a estagnação do Java, o advento do Python e o fortalecimento do Javascript. O triste fim do COBOL e PLI, as transformações do FORTRAN, PASCAL, ADA e GO. Quem tem curiosidade recomendo explorar o passado e ver as constantes mudanças do mundo das Linguagens de Programação e da informática.


image


Na velocidade das mudanças saiba que o Estado da Arte de hoje é a tecnologia obsoleta de amanhã, então cuidado com a especialização total, um dia pode não valer nada, veja meu caso, trabalhei com COBOL por mais de duas décadas e hoje sou um dinossauro, migrando para novos paradigmas e linguagens, acarretando uma diminuição substancial de salário.


Lembro-me que estimavam até 2030, a necessidade de programadores COBOL, porém não contavam com a crise de 2008 e o desaparecimento de dezenas de milhares de bancos, seguradoras e empresas que tinham seus sistemas baseados em mainframe com PLI Cobol Natural e cia.


Conclusão


Nesta jornada o importante é divertir-se, faça algo que goste, explore todas as possibilidade, procure, teste, crie e invente, não se prenda a crenças limitantes, neste mundo da informática tudo é possível, inspire-se nos grandes nomes, veja o que fizeram e escreva a sua historia.


Deixo meu conselho a todos, aprenda o máximo possível, lembrando que podem ser substituídos, a sua linguagem de programação com inúmeras versões e subdialetos, um dia poderá desaparecer do mercado, numa velocidade absurda.


O trem nao fica muito tempo parado na estação, decida-se rápido, embarque e siga em sua viagem. Estude, estude e estude, aproveite a possibilidade que a DIO oferece com cursos gratuitos, fórum para troca de conhecimentos, labs com especialistas e desafios de código para treinar, mão na massa.


Espero ter ajudado, não sendo muito maçante e fico feliz em poder apresentar o BASIC do MSX para as novas gerações e falar um pouco das velharias do tiozão.



O que vem a seguir, acompanhe no GitHub https://github.com/VagnerBellacosa/DIO_Bootcamps/blob/main/DesafioDIOArtigos.Md


Conheça meus bootcamps

https://github.com/VagnerBellacosa/DIO_Bootcamps/blob/main/DesafioDIOArtigos.Md



Visite meu perfil e descubra muito mais :

https://github.com/VagnerBellacosa


Saiba como participar do Desafio 21 Dias 21 Artigos


image


🚀 Como fazer o Desafio 21 dias 21 artigos ? @Desafio21DiasNaDIO


https://web.dio.me/articles/desafio-21-dias-21-artigos-desafio21diasnadio



🚀 Vencendo o Desafio 21 dias 21 artigos.


https://web.dio.me/articles/vencendo-o-desafio-21-dias-21-artigos


Espero ter ajudado ate o próximo artigo.




image


image Referência Bibliográfica


WIKIPEDIA - A Enciclopédia Livre, faça parte, ajude actualizando ou criando verbetes http://www.wikipedia.org


Google Books um repositório com milhões de livros digitalizados https://books.google.com/


Internet Archive, tudo aquilo que um dia foi publicado veio parar aqui. https://archive.org/


Biblioteca de ícones https://www.flaticon.com/


image


image Mais momento jabá, uma exposição em RV interativa e instrutiva do mestre Van Gogh no Shopping Iguatem9i em Campinas, uma linda homenagem e divulgação deste pintor que atravessou os séculos maravilhando a todos, visite meu vídeo e veja para onde fui desta vez: https://www.youtube.com/watch?v=0JEV3LW2Gl4


Bom curso a todos.


image https://www.linkedin.com/in/vagnerbellacosa/


image https://github.com/VagnerBellacosa/


Pode me dar uma ajudinha no YouTube?


image https://www.youtube.com/user/vagnerbellacosa


#Desafio21DiasNaDIO 

quinta-feira, 17 de junho de 2021

Dia 1 - 5 Dicas de como você pode organizar seus estudos

 


 

Dia 1 - 5 Dicas de como você pode organizar seus estudos

  • #Programação para Internet
  • #Informática Básica
  • #Produto Digital

5 Dicas de como você pode organizar seus estudos


Indo além do esperado e produzindo mais


image


Bem-vindos a este artigo introdutório do #Desafio21DiasNaDio, vivemos em tempos tão corridos e com tantas mudanças, altamente competitivo e cheio de inovações que mal temos tempo de nos atualizarmos.



image


Por sorte surgiu a Digital Innovation One com seus inúmeros cursos, grandes desafios de Bootcamps e acelerações que nos atualiza para o Estado da Arte em Tecnologia. E grandes lives para nos atualizar e eventos divertidos onde aprendemos numa gincana com pontuação, badges e rankings dos melhores.


Venho indicar meus métodos de estudo, plano de exercício, tentando ajudar e a incentivar os companheiros de jornada, afinal juntos somos mais fortes, um ajudando o outro e não deixando faltar energia e boa vontade aos amigos. Segue abaixo algumas dicas e planos.


image


1)     Planeje o plano de estudos, muitos bootcamps possuem programa semelhantes, por isso “Não entre em Pânico”, prepare um roteiro a seguir no bootcamp, de modo a maximizar o esforço (com os cursos já estudados) e se possível treine nos cursos livres para ganhar pontos e badges.


image


2)     Use e abuse do Fórum, duvidas surgem a todo momento, sempre haverá alguém que sabe mais e poderá te ajudar, pergunte, não se acanhe, se tiver pressa navegue no Discord, sempre tem alguém online pronto a ajudar.


image


3)     Crie projetos no GitHub para cada curso, guarde apontamentos, exercícios, apostilhas, apresentações, assim você acaba treinando o uso do gerenciador de fontes, comandos e ao mesmo tempo cria uma biblioteca de estudos e práticas.


image


4)     Lembre-se num bootcamp a atividade que acaba consumindo mais tempo são os desafios de código, por isso prepare-se use lápis e borracha, faça rascunhos e treine antes de codificar, os testes fechados são um inferno, vira e mexe ficara bloqueado, por isso volte ao item 2, peça ajuda no Fórum.


image


5)     Divirta-se, participe sempre das atividades, faça amigos, publique artigos, responda a perguntas e auxilie compartilhando o conhecimento e ajudando os parceiros. Lembre-se que além de aprender, você divulga seu curriculum, vislumbra as últimas novidades, conhece o mercado de trabalho e carreiras promissoras.


Dica extra:


image


Espero ter ajudado, compartilhando um pouco da minha rotina. Dica extra use e abuse do Google, existem inúmeras apostilhas, tutoriais, ebooks e trilhas a serem exploradas para aprender sempre mais e mais.

Incentive seus conhecidos a participarem da Dio, formando clube de codificadores e quem sabe participando de Code Dojo e evoluindo suas habilidades de programação, tornando-se um mestre Jedi das tecnologias.


Para não desanimar, procure estudar ao menos uma hora por dia, aproveite o tempo gasto nos ônibus, trens e metros da vida, horário de almoço, tire apontamentos, veja o que rola no Fórum, encontrei dicas valiosas em conversas antigas.


Olho vivo nos prazos de entrega do Bootcamp.


image


Nao deixe tudo para a ultima hora, conte com os imprevistos que podem surgir. No Brasil a internet é instável, morosa e cara, por isso use e abuse dos wifi gratuitos e assistas as aulas o mais rápido possível.


Em caso de pânico, tenha uma toalha por perto, faça uma pausa, reveja o vídeo da aula e retome do ponto parado. Vera que rapidamente estará evoluindo e dominando a linguagem, eu a princípio apanhava cada vez que usava o GitHub, hoje nem me apercebo e faço tudo rapidinho.


Atalhos para terminar Bootcamps


image


Parabéns se chegou até esse ponto, para voce curioso e perseverante aluno, 12 dicas campeas para terminar os Bootcamps da Digital Innovation One.


https://web.digitalinnovation.one/articles/dia-12-dicas-campeas-para-terminar-um-bootcamp



Visite meu GitHub e veja como organizo meus estudos : https://github.com/VagnerBellacosa.


Conheça os bootcamps que estou inscrito: https://github.com/VagnerBellacosa/DIO_Bootcamps


#Desafio21DiasNaDio #Analise #CodeDojo #PrimeirosPassos


Saiba como participar do Desafio 21 Dias 21 Artigos


image


🚀 Como fazer o Desafio 21 dias 21 artigos ? @Desafio21DiasNaDIO


https://web.dio.me/articles/desafio-21-dias-21-artigos-desafio21diasnadio



🚀 Vencendo o Desafio 21 dias 21 artigos.


https://web.dio.me/articles/vencendo-o-desafio-21-dias-21-artigos


Espero ter ajudado ate o próximo artigo.



https://dio.me/articles/dia-1-5-dicas-de-como-voce-organiza-seus-estudos

image


image Referência Bibliográfica


WIKIPEDIA - A Enciclopédia Livre, faça parte, ajude atualizando ou criando verbetes http://www.wikipedia.org


Google Books um repositório com milhões de livros digitalizados https://books.google.com/


Internet Archive, tudo aquilo que um dia foi publicado veio parar aqui. https://archive.org/


Biblioteca de ícones https://www.flaticon.com/



image


image Mais momento jabá, visitando o Templo de Diana em Évora Portugal, um tesouro da época romana , nem imagina quanta historia passou por aqui, construído em homenagem ao imperador Augusto, foi remodelado e reutilizado por mais de 2.000 anos, imagine que ate um açougue foi, Évora é uma linda cidade com muralhas antigas, abrigou celtibéricos, romanos, visigodos, mouros, cristões e turistas, visite meu vídeo e veja para onde fui desta vez: https://www.youtube.com/watch?v=gLpjM3Xn2Rk


Bom curso a todos.


image https://www.linkedin.com/in/vagnerbellacosa/


image https://github.com/VagnerBellacosa/


Pode me dar uma ajudinha no YouTube?


image https://www.youtube.com/user/vagnerbellacosa


#Desafio21DiasNaDio

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...