0

Historias do Tiozão em Mainframe

#Equipe Motivada #Arquitetura de Sistemas #Soft Skill
Vagner Bellacosa
Vagner Bellacosa

Um Defensor do Mainframe.


Salve jovem padawan, desculpe pelo hiato, mas o tiozão estava bem enrolado terminando alguns bootcamps que estavam próximos ao deadend. Problemas que um jedi renegado tem que resolver sozinho, afinal quero fazer tudo ao mesmo tempo e só vejo meu backlog aumentando.


Mas vamos que vamos, a vida é feita de desafios e superações, vale a pena enfrenta-los e criar uma nova história. Graça a comunidade da Digital Innovation One, que esta semana superou mais uma fronteira, chegando aos 550.000 inscritos. É gente pacas, imagine que Lisboa tem pouco mais de 600.000 habitantes, muito em breve teremos mais devs que a capital lusitana.


Agora de chega de delongas, enrolações e bla bla blas, e vamos embora ao que interessa o assunto de hoje, por esses dias tive o prazer de ler um artigo sobre Mainframe, escrito por um funcionário da IBM o DEV Rafael Ireno, coisas do universo mainframe, que fez meu coração bater acelerado e cheio de nostalgia, vindo de encontro há um pequeno projeto que venho desenvolvendo, adorei as palavras e resolvi passar uma atividade a frente de meu backlog e contar história de bits e bytes em EBCDIC.


https://www.ibm.com/blogs/systems/br-pt/2019/10/a-demanda-por-novos-profissionais-em-mainframes/


Vou contar a parte divertida do mainframe. Das coisas deliciosas e o poder que um DEV Mainframe sente ao codificar, épocas áureas vivas na memória.


Antes de iniciarmos nossa jornada, saiba o que vem de novo.


Surgiram algumas comunidades de DEVS Mainframe que são advogados dos velhos sistemas centrais e monólitos, que tantos batem, mas poucos conhecem, visite a iniciativa ZOWE, Cloude Computer e Linus e Java em Mainframe, experimente codificar como nos velhos tempos, na tela Drácula da IBM, letras verdes fundo negro com 24 linhas e 80 colunas.


https://www.ibm.com/it-infrastructure/z/education


Aprenda fundamentos de programação Cobol, PLI ou REXX e se for Jedi, aventure-se no mundo Assembler (so para os fortes). Existe um universo a ser explorado com milhares de empresas com sistemas legados esperando novos DEVS para ocupar e formarem a nova geração de Dinos.


Bem vindos as recordações do Tiozão.


Mainframe no século XXI, quando eu era um jovem padawan


Muitos coders desgostam do Mainframe sem conhecer a parte cool desta tecnologia ancestral. Mas tudo o que acontece de importante origina-se ou está escondido em um mainframe: imagine as transações bancarias, as reservas de passagens áreas, dados do Detran, Ministério da Saúde, Defesa e Finanças, informações que necessitam de alta disponibilidade, segurança, poder de processamento e confiabilidade. Não existe hacker ou vírus em mainframe.


Imagine uma máquina capaz de processa 65 milhões de acionistas em 100 empresas e centenas de movimentos de ação (dividendos, compras e vendas, cisões, fusões, transformação de classe, juros sobre dividendos, aumento ed capital e etc), tudo isso numa base de dados Adabas (NOoSQL) da software AG que em apenas 30 minutos. Isso mesmo, meia hora e o processamento de atualização era concluindo.


A parte online na altura era acessada por webservices com longas strings de dados, gerenciadas pelo CICS e trocando arquivos via FTP e pasmem, permitindo acesso à dezenas de bancos brasileiros, órgãos do governo, CVM e Bolsas de Valores (na altura existiam 3 grandes), tudo isso pós bug do Milênio, o famoso Y2k.Hoje fala-se de cloude e distribuição, mas já era feito em IBM Mainframe com uma SLA de 24 horas por dia, 7 dias por semana e 365 dias.


A grande fraude Y2k, o famoso Bug do Milênio.


Serviu para empresas de consultoria ganharem dinheiro que nem agua, pois o efeito manada e o pânico fizeram as empresas gastarem e explodirem seus orçamento, corrigindo códigos com 40 anos ou mais. Eu em minha carreira tive o prazer de trabalhar com softwares PLI e Cobol escritos no ano em que nasci.


Os DEVS daquela época viviam uma era dourada, não faltava trabalho e chegávamos a trabalhar para mais de uma empresa, para fazer caixa, bons tempos. Ulala, mas também existe a parte lúdica, possibilidade de programar em maquinas super poderosas e até criar joguinhos em CICS, para matar o tempo nas horas ociosas, ou relaxar a mente em meio a uma logica indecifrável.


Joguinhos em transação online CICS


Não é lenda urbana, mas no Banco Real, nos tínhamos inúmeros joguinhos escritos em PLI com transação em CICS online, rodando, um dos mais famosos era a Batalha Naval, num terminal 3270, multiplayer, rodando numa transação oculta com a Sigla de QA... Esqueci-me de dizer, que todo programa e transação, executada era cobrado em um centro de custo, definido pelas duas letras iniciais, que indicavam a gerencia responsável pelos fontes e executaveis.


Nesse caso QA era sem custo, usado por técnicos da IBM, que vinham fazer testes, sem um analista e ou gerente responsável, por isso usávamos, ela para joguinhos compilados, que depois eram executado um new copy e o programa era recompilado com Hello World, ou qualquer outra coisa inocente.


Antes que fiquem de cabelo em pé, essa sigla não tinha acesso a nenhuma biblioteca perigosa, QA era simpática e inocente porta dos fundos, para uso lúdico e exploratório. Ficando no ar, até o próximo restart do CICS ou a analise de infraestrutura detectassem uso em demasia do ambiente de teste.


Além do Batalha Naval, tinha o jogo da velha e o aplicativo mais famoso, conhecido por todos os analistas do Banco Real, na altura 1200 pessoas. O Analise Combinatório de números da loteria, saiba jovem padawan, houve uma época em que as loterias não tinha serviços jogos combinados, o apostador era obrigado a combinar manualmente e preencher os bilhetes, este programa tinha a função de fechar todas as combinações dado N números.


Muito famoso no horário de almoço ou em situações de ociosidade, mas nunca tive acesso, diziam que existia um jogo de truco em PLI, mas não era vip o suficiente para receber o convite e jogar online.


A Loteca, como era chamada era uma transação dedo-duro, pois a equipe de monitorização de recursos, ficava atenta em épocas de megasena acumulada e suspeitava quando via no terminal que uma transação CICS estava sendo startado por dezenas de sessões e estava consumindo recursos de desenvolvimento, que era partilhado com a máquina de produção.


Era BO na certa, logo o CICS de desenvolvimento era derrubada e surgia a infame tela de broadcast, avisando todos os analistas que era proibido a execução de transações não autorizadas no CICS.


Programa PLI auto recursivo


Este sem sombra de dúvida foi o programa mais divertido que fiz na minha carreira de analista no Banco, a necessidade surgiu devido ao Bug do Milênio, em que era necessário analisar milhares de objetos Natural ( programas, mapa de tela, local de programa, local de base de dados etc), como o Natural era caixa preta, não tinha como analisa-lo rapidamente.


Após alguns dias lambendo manual, descobri uma maneira de baixar a tabela do Adabas, onde eram armazenados as fontes em Natural. Através deste linguiçao, foi totalmente programado em PLI/JCL/Sort, que lia e interpretava a informação, identificando o tipo do objeto, o nome do objeto e o tamanho e o número de linha e suas chamadas, o JCL criado dinamicamente pelo PLI que escrevia e enfileirava no Spool, com estes parâmetros e gravando o arquivo de saída FB80, dentro de um particionado, este objeto possuía todas as características do objeto original em Natural, terminado o ciclo do job e reenfileirando o JCL extrator seguinte, repassando ponteiro da última extração como parâmetro, o jcl terminava quando o último programa era extraído, lotando o spool com as execuções.


Confuso ne? Mas imagine um programa PLI, que recebia parâmetro externo, validava, lia, fazia um ligeiro balance line, entre tabelas e interpretava como um pseudo-compilador, formatando um arquivo e gravava num particionado de programas e ao fim chamava uma nova instancia de si, para processar o programa seguinte.


Na primeira execução meu job, entrou em execução depois da diária de sexta-feira fechar, entre a fila de espera e processamento ficou no ar 48 horas com uso de 244 minutos de CPU. Na segunda feira após a conclusão OK do job, sem abend, tínhamos extraindo quase meio milhao de objetos NATURAL, legados. Após isso semanalmente era executado para baixar as atualizações, mas era rapidinho, não durava nem 5 minutos, pois ele trabalhava por balance line, extraindo apenas os fontes alterados na semana. Vamos a próxima aventura.


Apuros do Capitão, dias de agente infiltrado.


Antes de iniciarmos, deixe-me situa-lo jovem padawan, em grandes empresas existe uma polícia do sistema, mais ou menos com a seguinte sigla DAI, Departamento de Auditoria Interna, esses pessoais ficavam monitorando os funcionários do Banco para acompanharem atividade suspeitas dentro do Banco.


Algumas das funções da DAI para TI era ver compilações de programas, verificar a qualidade de software, qualidade de informação e além claro, sua principal função era avaliarem riscos e evitarem fraudes ou roubos. Ou seja, nenhum analista de sistemas, gostava da ideia de ser chamado a DAI e ter a polícia secreta investigando sua máquina e atividades.


Pois bem, um belo dia, a gerente do GA, a Roseli uma pessoa fabulosa, com uma incrível capacidade de programação e uma lógica procedural ímpar. Foi uma grande mestra em minha carreira. Mas voltando a história, um dia ela vem a minha mesa e me chama para conversa, como era costume pela manhã, sempre que chegávamos ao PC, ele estava repleto de post-its com as atividades do dia, nem me incomodei, porem quando ela disse que tínhamos que ir a DAI, gelei, pensando o que fiz de errado.


Nessas horas passam mil coisas na cabeça, encuquei mas nada grave fiz, relaxei, então lá fomos nós rumo aos inquisidores, mesmo ela estava nervosa, pois não sabia o que nos esperava.


Ao chegar na sala do gerente geral da DAI, o encontramos com mais dois analistas da DAI, ai começaram a sabatinar sobre os logs do GA, como estavam, como funcionam, abrangência e confiabilidade, como eu tinha participado destes programas, fiquei mais calmo. Nessa hora ele falou que necessitavam de um programa que lesse o log histórico e gerasse um relatório com algumas informações, bem nessa hora o alivio foi total. Afinal tínhamos sidos convocados para um simples programa.


Meus amigos o fiofo não passava nada, tanta preocupação à toa, porem o programa era secreto, tinha que usar um user da DAI, com sigla DAI e prioridade DAI. No retorno ao departamento a Roseli, ia falando, capitão testa, tudo, antes de guardar deixa eu ver o código, vamos fazer teste de mesa, zero erro está bem? Nem precisava dizer, a responsa era demais, um simples erro, poderia ser o fim prematuro da carreira no Banco, imagina os analistas da DAI encontrarem um erro bobo num programa da DAI? Misericordia.


Iniciei minha corrida, a parte dura, era que tinha 72 horas para entregar o relatório, comecei a codificar no papel e caneta, criando o mínimo possível de ifs e calls por motivos de performance, pois estaria lendo inúmeras tabelas ADABAS de LOG do GA, depois iria acessar rotinas do RACF para buscar USER-IDS e tabelas de login no sistema centra, para confrontar local e users.


Era simples e ao mesmo tempo complexo, pois o dificulmetro era que muitas das tabelas não existiam no desenvolvimento e se existiam não eram povoadas. Seria um tiro no escuro, pois teria que executar na produção com no máximo duas ou três execuções, afinal estava sendo monitorado pela DAI.


Parece história de pescador, porem codifiquei em lápis e papel, transcrevi para PLI, compilei, mockei algumas tabelas em desenvolvimento, após alguns testes, muita reza brava, achei q o programa estava bom, chamei a Roseli na sala de reuniões e no telão, mostrei o código, tudo no maior segredo, escondido dos meus colegas, que estranharam eu tão falante, estava muito quieto e carrancudo. A Roseli me ajudou a debugar com caneta a mão, aparentementenao vinhos nenhum erro, então ela me deu aval para guardar em produção.


Montei o JCL para produção e fomos conversar com o Tokunaga, nosso mestre jedi em análise de produção, que corrigiu meu JCL, foi inteirado do grau de sigilo da execução, sugeriu umas melhorias do RACF e deixou tudo nos conformes.


Passo seguinte, montar o pacote de guarda, avisar o pessoal de Qualidade de software e performance o motivo da guarda de programa Novo sem prévio aviso. Passos burocráticos ultrapassados, bora la executar o job e gerar relatório (sigiloso em impressora de uso restrito), após 120 minutos de ansiedade pura, a análise de produção informa, que o relatório tinha sido impresso e que havia gerado três caixas com mais ou menos umas 20.000 folhas impressas.


Desci ao subsolo onde ficava as impressoras e a maquina SP11 e SP51 para resgatar os relatórios, retornar ao GA e conjuntamente com a Roseli e o Darci, que na altura era nosso segundo líder, que também entrou no barulho para ajudar a validar as informações.


Com o relatório aberto e a tela de consulta de LOG do GA começando a validar a impressão, depois passamos a escolher páginas aleatórias para ver se aparecia alguma anomalia. Tudo parecia perfeito e pronto para entregarmos a DAI. Fomo rumo aos auditores e inspetores, eu com carrinho com várias caixas de formulários contínuos impressos acompanhado da Roseli + Darci, subimos a DAI para a segunda rodada da sabatina.


Começa a reunião de entrega, mesmo após a conferencia, estávamos bem nervosos de aparecer algum erro inesperado, que inviabilizasse o trabalho. Após um breve silencio assustador, enquanto os analistas da DAI, avaliavam os dados, consultavam o sistema. Vem a pergunta fatídica por que a Agencia, fugiu o código, tem tantas consultas, a Roseli olha e vê user-ids de analistas GA, todos olham para mim e pedem explicação, juro que gelei, seria um erro quee eu não tinha visto?


Vermelho igual há um pimentão, com o c* na mão, pedi para olhar o relatório, olhei, pensei, tremi, pensei... e veio a luz. Devido às limitações do RACF a época, usávamos 4 dígitos para indicar o local, repetindo dentro da estrutura, devido a chave-primaria de 2 dígitos indicando o local. Ou seja, a DAI estava de olho numa agencia bancaria do Sergipe, que por coincidência do destino era o mesmo código do GA, com a diferença crucial, o código do local 2 bytes era 01 Banco e nós éramos 04 Realplan. No calor do momento o analista da DAI, acabou indo no local GA e não agencia de Aracaju.


Ufa, ufa, ufa. Todo mundo rindo do engano, muitas piadas e validação correu tranquilo, o DAI aceitou o relatório e ficou com o código nas rotinas internas, a Roseli durantes meses me aloprou do quase infarto que provoquei nela naquele dia.


Mas nem tudo são flores, com o relatório identificaram inúmeros funcionários do Banco, que faziam fraudes e atividades irregulares no Sistema GA, inclusive gerando mudanças no on-line e criando novos programas para coibir esse problema, tudo baseado na análise de relatórios dos LOGs.


Importância do código.


Conhecer o sistema onde você trabalha é muito importante, para garantir a qualidade de código, fazer testes e estar preparado para ser sabatinado, respirar, avaliar e responder. É muito importante se dedicar. Não tenha medo e nem vergonhar de perguntar, anote tudo e não sofra da síndrome de Ivon Safe e fuja da síndrome da seringa.


O mainframe trabalha com grandes lotes de informação, muitas delas sensíveis e sigilosas, que podem custar o emprego de muitas pessoas, acabar com reputações e destruir capital, cuidado ao codificar, sigilo com as informações, em 1988 um software com falha em sua lógica derrubou a Bolsa de Valores americana e gerou perdas de milhares de dólares.


Pense em Banco de Dados e imagine que o DB2 armazena muito mais informação que o Google, mainframes e seus servidores trafegam dados para servidores WEB, que não tem poder computacional para processar rapidamente tanta informação, necessitando do zOS e seu poder.


A título de curiosidade todos os veículos de Portugal, seus proprietários e os dísticos de imposto do dístico (IPVA) são processados em 5 minutos numa rotina batch: 10 milhões de proprietários (PF e PJ) + 30 milhões de veículos (aéreos, marítimos e terrestres) com cobrança histórica e repasse aos municípios, como disse apenas 5 minutos.


Numa seguradora acompanha dados sobre seguradores e sinistros, no estado imposto de renda, impostos gerais, contabilidade, dados de saúde e militares. Padawan é muito poder de cálculo, é muito divertido fazer parte deste universo quase infinito de dados.


No mundo existe algo em torno de 20 milhões de mainframe, que devido a miniaturização hoje parecem-se com servidores dos anos 90... nada comparado aos armários, leitores de tapes e robots de cartridge do século passado.


Conclusão


O universo de Mainframe tem muita emoção, coisas curiosas, possibilidade de reinar suas capacidades em performance, logica computacional e uso de recursos escassos, afinal ao trabalhar com milhões de registros, qualquer consumo indevido gera custos nas casas dos milhares, como no Cloude, os clientes pagam aluguel a IBM ao usar recursos de CPU, Memória e DISCO,


Tudo bem desenhado e planejado. Fara programas onde performance importa, acesso correto ao SQL do DB2 e uso de ferramentas de produtividade para ganhar tempo e performance.


Estude, experimente e conheça. Qualquer problema é só gritar socorroo...


Bom curso a todos.


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


 https://github.com/VagnerBellacosa/


Pode me dar uma ajudinha no YouTube?


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

0
1

Comentários (7)

0
Ivan Petrucci

Ivan Petrucci

28/09/2021 08:59

Vagner,

Que delicia seu post. Sou Old School também.

1
Patrick Leite

Patrick Leite

13/08/2021 12:18

Ótimo Artigo Vagner, é muita historia pra contar!

1
Mauricio Gebrim

Mauricio Gebrim

25/07/2021 06:09

Muito bom o artigo. Estou estudando para o BRB e edital 2021 de 6 páginas de conteúdo, inclusive mainframe e essas tecnologias das quais o senhor citou. Só não entendi na prática hoje, pois a exemplo um SISBB do Banco do Brasil, por exemplo, acessa via terminal o CICS e demais funções, mas do outro lado da arquitetura cliente é um servidor original (ou pode ser o do museu na data do apocalipse?)? Apenas as licenças dos softwares da IBM rodando em cloud? Ou são máquinas virtuais remotas executando OS/2 e famílias?!

1
M

Mauricio Gregory

25/07/2021 02:00

Ótimo artigo!

1
Rosemeire Deconti

Rosemeire Deconti

24/07/2021 20:25

Adorei!

1
Vagner Bellacosa

Vagner Bellacosa

24/07/2021 20:19

Jose, bem lembrando meu amigo!!!! Vc me lembrou da minha infância, que meu bisavo trazia do banco resmas de papel zebrado, que eu usava para desenhar no verso... e realmente as Artes em ASC, em que usamos BMS para desenhar telas online de cics por pura diversão.


Sabe que no Banco Real quando compraram um modelo de impressora que nao usava papel continuo e sim bobinas foi a maior sensação, tinha ate um operador que dirigia um tratorzinho para alimentar as impressoras... o negocio era fora de serio.

2
Jose Santos

Jose Santos

24/07/2021 19:51

Muito bom o seu artigo Wagner Bellacosta, Main Frame foi o inicio de tudo que veio depois até hoje, não esquecendo dos terminais IBM 3270 e as gigantescas impressoras IBM 1403 que cuspia toneladas de papel (Formulário Continuo) que após as devidas impressões serviam para alimentar os departamentos (clientes) com seus relatórios (mapas) no que seria hoje os DashBoards. Com relação aos jogos no Main Frame NÂO podemos de esquecer das quantidades de Dcks de cartões perfurados (IBM 029) necessários para confeccionar uma "Imagem" de Jesus Cristro com simulações realizadas de caracteres necessários para causar efeitos de sombreamento na famosa imagem que aparecia nas dependências como um troféu da TECNOLOGIA contemporânea da época.


Bom demais seu artigo.


Jose Luiz

Analista Programador dinossauro IBM Mainframe

Brasil