Translate

sábado, 30 de novembro de 2019

Shinchou Yuusha: Kono Yuusha ga Ore Tsueee Kuse ni Shinchou Sugiru

 

Bellacosa Mainframe apresenta o anime Shinchou Yuusha

☕ Um Café no Bellacosa Mainframe

Shinchou Yuusha: Kono Yuusha ga Ore Tsueee Kuse ni Shinchou Sugiru

Quando a Prudência Vale Mais que o Poder

O Guia Definitivo para o Programador COBOL Padawan Entender que Nem Todo Herói Corre para Produção sem Testar

"A pressa é inimiga da perfeição. No mainframe, ela também pode ser inimiga da produção."


Ficha Técnica

Título original:
慎重勇者 ~この勇者が俺TUEEEくせに慎重すぎる~

Romanização:
Shinchou Yuusha: Kono Yuusha ga Ore Tsueee Kuse ni Shinchou Sugiru

Título internacional:
Cautious Hero: The Hero Is Overpowered but Overly Cautious

Autor da Light Novel
Light Tuchihi

Ilustrações
Saori Toyota

Publicação da Light Novel
2017

Anime

  • Estúdio: White Fox

  • Diretor: Masayuki Sakoi

  • Roteiro: Kenta Ihara

  • Música: Yoshiaki Fujisawa

  • Exibição:
    2 de outubro de 2019 a 27 de dezembro de 2019

  • Episódios: 12

  • Duração média: 24 minutos

  • Classificação indicativa: aproximadamente 12+ / TV-14, dependendo da região. (infoanime.com.br)


Gênero

Mistura diversos estilos:

  • Isekai

  • Fantasia

  • Comédia

  • Aventura

  • Paródia

  • RPG

  • Ação

Mas limitar Shinchou Yuusha a "mais um isekai" seria um enorme erro.

Na verdade ele é uma crítica inteligente ao próprio gênero.


Sinopse

A deusa Ristarte recebe a missão de salvar o mundo de Gaeabrande.

Como o mundo possui dificuldade "S", ela decide convocar um herói extremamente poderoso.

Ela encontra Seiya.

Status absurdamente elevados.

Força gigantesca.

Magia devastadora.

Tudo perfeito...

...até descobrir um pequeno detalhe.

Ele é absurdamente paranoico.


Antes de enfrentar um simples slime ele prefere:

  • treinar durante dias;

  • comprar três armaduras iguais;

  • derrotar o inimigo usando magia máxima;

  • verificar se morreu;

  • lançar outra magia;

  • conferir novamente.

A princípio tudo parece apenas uma grande piada.

Mas existe uma razão muito mais profunda para isso.


A História

A narrativa é construída em duas camadas.

Primeira camada

Uma comédia.

O anime faz o espectador rir o tempo inteiro.

Toda situação clássica dos RPGs é invertida.

Enquanto outros protagonistas dizem:

"Vamos!"

Seiya responde:

"Ainda não."


Segunda camada

Uma história sobre:

  • trauma

  • responsabilidade

  • fracasso

  • culpa

  • perda

Sem revelar spoilers importantes, percebe-se no final que toda a personalidade de Seiya possui uma origem emocional.

E isso muda completamente nossa visão do anime.


O que torna este anime diferente?

Aqui está sua maior genialidade.

Em praticamente todos os isekais:

Herói → aventura → luta → vitória

Em Shinchou Yuusha:

Herói

Treina

Treina novamente

Treina mais

Compra equipamentos

Treina outra vez

Simula o combate

Só então enfrenta o inimigo.

A piada funciona porque é exatamente assim que um bom engenheiro trabalha.


Os Personagens

Seiya Ryuuguuin

O protagonista.

Extremamente poderoso.

Mas não confia em absolutamente nada.

Sua lógica lembra muito um excelente arquiteto de software.

Nunca assume.

Sempre valida.

Sempre confirma.

Sempre cria redundância.


Ristarte

A deusa da cura.

É praticamente o oposto de Seiya.

Impulsiva.

Emotiva.

Espontânea.

Ela representa o espectador.

Cada reação exagerada dela reforça a comédia da série.


Ariadoa

Talvez a personagem mais importante do ponto de vista filosófico.

Ela compreende Seiya melhor do que qualquer outro.

Sem explicar demais...

...ela entende de onde vem tanta prudência.


A Grande Temática

O anime fala sobre algo extremamente moderno.

Hoje existe uma cultura de:

"Faça rápido."

"Lance logo."

"Move fast."

Shinchou Yuusha responde:

"Não."

Ele mostra que velocidade sem preparação pode gerar desastre.


Bellacosa Mainframe explica

Imagine um desenvolvedor COBOL.

Recebe uma alteração crítica.

Existem dois tipos.

Herói comum

Compila.

Executa.

Entrega.

Produção explode.


Seiya

Compila.

Executa Unit Test.

Executa Integration Test.

Executa Regression Test.

Executa Performance Test.

Revisa SQL.

Confere índices.

Confere VSAM.

Valida CICS.

Reexecuta.

Confere novamente.

Executa em QA.

Executa em Homologação.

Só então sobe para Produção.

Esse é literalmente o comportamento de Seiya.


O Mainframe sempre foi "Cautious Hero"

Esta talvez seja a maior mensagem escondida.

O IBM Z nunca foi rápido para mudar.

Mas sempre foi extremamente seguro.

Existem dezenas de verificações antes de alterar produção.

Por isso bancos funcionam.

Cartões funcionam.

PIX funciona.

Seguradoras funcionam.

Não porque alguém foi rápido.

Mas porque alguém foi cuidadoso.


Mensagens Ocultas

1. Poder sem disciplina é inútil

Ser forte não basta.

É necessário saber quando agir.


2. Experiência gera prudência

Quanto mais experiente alguém é...

menos impulsivo costuma ser.


3. O trauma muda pessoas

Uma das maiores revelações do anime.

Aquilo que parece covardia...

na verdade pode ser experiência.


4. Confiança excessiva mata

Vários vilões são derrotados justamente porque acreditam ser invencíveis.


5. O planejamento vence a improvisação

Mensagem extremamente ligada ao desenvolvimento de software.


As Aventuras

Cada arco representa uma etapa diferente.

Primeiros monstros.

Primeiros generais.

Novos equipamentos.

Treinamentos com divindades.

Desafios impossíveis.

Tudo isso sempre acompanhado da paranoia de Seiya.

E justamente essa paranoia salva o grupo diversas vezes.


O Estúdio White Fox

A White Fox tornou-se conhecida por adaptar obras que misturam humor, fantasia e drama psicológico. Entre seus trabalhos mais famosos estão Steins;Gate, Re:Zero e Akame ga Kill!. Em Shinchou Yuusha, o estúdio equilibra muito bem a comédia visual com momentos dramáticos, usando expressões exageradas, bom ritmo e cenas de ação consistentes. (Wikipedia)


Qualidade da Animação

Muito acima da média.

Destaques:

  • excelentes expressões faciais;

  • timing perfeito da comédia;

  • boas lutas;

  • ótima direção.

Grande parte das piadas funciona justamente por causa da animação.


Trilha Sonora

A abertura "TIT FOR TAT", de MYTH & ROID, transmite um clima épico que combina com um herói lendário, enquanto o encerramento contrasta com um tom mais leve. A trilha de Yoshiaki Fujisawa acompanha bem tanto os momentos cômicos quanto os dramáticos. (Isekai Wiki)


Impacto Cultural

Apesar de possuir apenas uma temporada, tornou-se um dos isekais de comédia mais lembrados de 2019.

Os maiores motivos:

  • inúmeras cenas transformadas em memes;

  • expressões faciais de Ristarte;

  • protagonista totalmente diferente do padrão;

  • excelente final.

Muitos fãs chegaram esperando apenas humor.

Saíram emocionados.


Curiosidades

  • O anime é baseado em uma light novel iniciada em 2016 na plataforma Kakuyomu antes de ser publicada pela Kadokawa em 2017. (Wikipedia)

  • Dois episódios sofreram pequenos atrasos durante a exibição devido ao cronograma de produção. (Isekai Wiki)

  • Personagens da série participaram posteriormente do crossover Isekai Quartet. (Isekai Wiki)


Easter Egg Bellacosa Mainframe 🥚

Seiya provavelmente seria o melhor programador COBOL de uma instituição financeira.

Seu checklist antes do deploy seria algo como:

✔ Código revisado

✔ SQL otimizado

✔ RUNSTATS atualizado

✔ EXPLAIN executado

✔ Índices conferidos

✔ Teste Unitário

✔ Teste Integrado

✔ Teste de Volume

✔ Teste de Performance

✔ Plano de Rollback

✔ Backup confirmado

✔ Aprovação CAB

✔ JCL validado

✔ RACF conferido

✔ "Executar em produção?"

Ainda não. Vamos revisar mais uma vez.

No universo Bellacosa Mainframe, Seiya certamente seria aquele desenvolvedor veterano que todos acham exagerado... até o dia em que um erro crítico é evitado graças à sua insistência em validar tudo. Assim como no IBM Z, onde disponibilidade e confiabilidade valem mais do que velocidade, Shinchou Yuusha ensina que o verdadeiro herói não é quem corre primeiro para a batalha, mas quem garante que todos voltarão vivos dela. Essa é uma lição que atravessa mundos de fantasia, salas de servidores e décadas de desenvolvimento corporativo.


sexta-feira, 29 de novembro de 2019

Hanakotoba (花言葉): A Linguagem das Flores no Japão — O Sistema Operacional Invisível dos Sentimentos

 

Bellacosa Mainframe e a linguagem secreta das flores

☕ Um Café no Bellacosa Mainframe

Hanakotoba (花言葉): A Linguagem das Flores no Japão — O Sistema Operacional Invisível dos Sentimentos

"Em um datacenter IBM Z, um único bit pode alterar o significado de milhões de registros. No Japão, uma única flor pode transmitir sentimentos que palavras jamais conseguiriam expressar."


Introdução

Imagine entrar em uma sala de reuniões de um grande banco.

O gerente não diz uma palavra.

Ele apenas coloca um relatório sobre a mesa.

Você entende imediatamente a mensagem.

No Japão acontece algo semelhante.

Mas, em vez de relatórios, utilizam flores.

O Ocidente costuma enxergar as flores como simples elementos decorativos.

São bonitas.

Perfumadas.

Coloridas.

Mas, para a cultura japonesa, elas podem representar um idioma completo.

Existe um vocabulário.

Existe uma gramática.

Existe contexto.

Existe intenção.

E existe uma tradição que atravessa séculos.

Essa linguagem recebe o nome de Hanakotoba (花言葉), literalmente:

"As Palavras das Flores."

Quem assiste animes, lê mangás ou joga visual novels provavelmente já viu personagens oferecendo flores específicas sem perceber que aquela cena escondia uma mensagem inteira.

Não era apenas um buquê.

Era uma carta.

Sem tinta.

Sem papel.

Sem voz.


O Japão e a Comunicação Indireta

Para compreender o Hanakotoba, primeiro é necessário entender uma característica marcante da sociedade japonesa.

Enquanto culturas ocidentais valorizam a comunicação direta, o Japão desenvolveu uma tradição baseada na sutileza.

Nem tudo precisa ser dito.

Na verdade...

Muitas vezes o mais importante é justamente aquilo que permanece implícito.

Essa forma de comunicação aparece em praticamente todos os aspectos da vida japonesa:

  • cerimônia do chá;

  • caligrafia (Shodō);

  • poesia (Haiku);

  • teatro Nō;

  • jardins zen;

  • arquitetura;

  • ikebana (arranjos florais);

  • mangás e animes.

O silêncio também comunica.

As cores comunicam.

As estações do ano comunicam.

As flores comunicam.


O Nascimento do Hanakotoba

Embora diversas culturas tenham associado flores a significados simbólicos, o Hanakotoba ganhou identidade própria durante o Período Edo (1603–1868).

Nessa época, o Japão vivia um longo período de relativa paz sob o xogunato Tokugawa. A sociedade desenvolveu uma rica cultura urbana, na qual poesia, teatro, pintura e jardinagem floresceram. Influências chinesas, tradições budistas e o apreço xintoísta pela natureza se combinaram para transformar as flores em um verdadeiro vocabulário emocional.

Cada espécie passou a carregar significados específicos.

Cada cor modificava a mensagem.

Cada ocasião exigia uma escolha cuidadosa.

Era possível transmitir:

  • amor;

  • gratidão;

  • respeito;

  • despedida;

  • arrependimento;

  • fidelidade;

  • esperança.

Tudo sem escrever uma única linha.


A Natureza Nunca Foi Apenas Paisagem

No pensamento japonês, a natureza não é apenas cenário.

Ela participa da vida.

As quatro estações moldam a cultura.

Os festivais acompanham a floração das árvores.

Os poemas registram mudanças das folhas.

Os jardins reproduzem montanhas e rios em miniatura.

As flores representam estados emocionais porque o ser humano é visto como parte do mesmo ciclo da natureza.

Florescem.

Amadurecem.

Murcham.

Renascem.

Essa visão dialoga profundamente com conceitos budistas como a impermanência (mujō), segundo os quais tudo está em constante transformação.


Algumas Flores e Seus Significados

🌸 Sakura (Flor de Cerejeira)

Talvez nenhuma flor simbolize tanto o Japão quanto a sakura.

Ela representa:

  • beleza efêmera;

  • juventude;

  • renovação;

  • aceitação da impermanência.

Ela floresce intensamente por poucos dias e logo suas pétalas caem ao vento.

Essa imagem ensina que justamente por ser breve, a vida se torna preciosa.


🌺 Hortênsia (Ajisai)

As hortênsias são famosas por mudarem de cor conforme a acidez do solo.

No Hanakotoba podem representar:

  • mudança de sentimentos;

  • emoções complexas;

  • arrependimento;

  • gratidão;

  • perseverança.

Em Sankarea, elas refletem perfeitamente a transformação de Rea: a mesma pessoa, mas profundamente alterada pelas circunstâncias.


🌻 Girassol

Representa:

  • admiração;

  • energia;

  • sinceridade;

  • esperança.

Nos animes costuma acompanhar personagens otimistas.


🌹 Rosa

Embora seja uma flor de origem ocidental, ganhou interpretações próprias.

A cor muda completamente o significado:

  • vermelha → amor apaixonado;

  • branca → pureza;

  • amarela → amizade ou ciúme, dependendo do contexto;

  • rosa → carinho.


🌼 Crisântemo (Kiku)

Símbolo da Família Imperial.

Representa:

  • longevidade;

  • nobreza;

  • honra;

  • perfeição.

O Selo Imperial Japonês utiliza justamente um crisântemo estilizado de dezesseis pétalas.


🌸 Lírio (Yuri)

Associado à pureza, elegância e feminilidade.

É comum aparecer em histórias que enfatizam crescimento interior e nobreza de caráter.


🌺 Camélia (Tsubaki)

Representa dignidade e elegância.

Sua flor costuma cair inteira, e não pétala por pétala. Antigamente, isso levou alguns samurais a evitá-la por lembrar uma cabeça sendo decapitada. Ainda assim, ela também simboliza beleza refinada e resistência.


Hanakotoba nos Animes

Depois que conhecemos essa linguagem, muitos detalhes passam a fazer sentido.

Em Sankarea, as hortênsias acompanham a transformação emocional de Rea.

Em Your Lie in April, as flores reforçam o contraste entre vida, música e despedida.

Em Violet Evergarden, arranjos florais ajudam a expressar sentimentos difíceis de colocar em palavras.

Em The Garden of Words, a vegetação e a chuva dialogam continuamente com o estado emocional dos protagonistas.

Em diversas obras, um buquê nunca é apenas um buquê.

É uma mensagem silenciosa.


Ikebana: Quando Organizar Flores é Contar uma História

O Hanakotoba se conecta à arte do Ikebana, o arranjo floral japonês.

Ao contrário dos arranjos ocidentais, que frequentemente priorizam abundância, o Ikebana valoriza:

  • espaço vazio;

  • equilíbrio;

  • assimetria;

  • direção;

  • proporção;

  • diálogo entre flores, galhos e folhas.

Cada elemento tem uma função.

Nada é colocado por acaso.

É uma composição que convida à contemplação.


Bellacosa Mainframe

Hanakotoba é o JCL das Emoções

Quem trabalha com IBM Z sabe que um arquivo JCL parece simples à primeira vista.

São apenas comandos.

Poucas linhas.

Muito texto.

Mas cada parâmetro altera o comportamento do sistema.

Uma alteração em DISP, SPACE, UNIT ou COND pode determinar o sucesso ou o fracasso de um processamento inteiro.

O Hanakotoba funciona de maneira semelhante.

A flor é o "JOB".

A cor é o parâmetro.

A ocasião é o ambiente de execução.

A pessoa que recebe é o programa consumidor.

A interpretação correta depende de conhecer toda a arquitetura cultural.


As Cores São Como Parâmetros

Imagine um PROC reutilizável.

O código permanece o mesmo.

Mas os parâmetros mudam a execução.

As flores também.

Uma rosa branca.

Uma rosa vermelha.

Uma rosa amarela.

Fisicamente são semelhantes.

Mas semanticamente executam "processamentos" completamente diferentes.

É quase como alterar um único PARM em um JOB e obter resultados distintos.


A Engenharia da Delicadeza

Na computação moderna fala-se muito sobre protocolos.

Os protocolos definem como máquinas trocam informações de forma precisa.

No Japão existe um protocolo social igualmente sofisticado.

As flores fazem parte desse protocolo.

Elas evitam ambiguidades quando usadas por quem conhece seus significados e, ao mesmo tempo, preservam a elegância de uma comunicação indireta.


O Banco de Dados das Emoções

Se fôssemos modelar o Hanakotoba em Db2 para z/OS, poderíamos imaginar algo assim:

  • TABELA_FLOR

  • TABELA_COR

  • TABELA_ESTACAO

  • TABELA_OCASIAO

  • TABELA_SIGNIFICADO

A consulta não seria simples.

Seria um verdadeiro JOIN cultural.

Uma hortênsia azul oferecida durante a estação das chuvas, por exemplo, produziria um significado diferente da mesma flor em outro contexto.

Assim como em um banco de dados corporativo, o contexto é tão importante quanto o registro.


O Princípio do Menor Ruído

Os melhores sistemas distribuídos evitam tráfego desnecessário.

O Hanakotoba faz o mesmo.

Em vez de longos discursos, uma única flor pode sintetizar uma emoção complexa.

É uma comunicação de alta densidade semântica.

Poucos "bytes".

Muito significado.


Por Que Isso Fascina Tanto os Criadores de Anime?

Porque permite construir narrativas em camadas.

O espectador iniciante aprecia a beleza da cena.

O espectador atento percebe que há uma metáfora.

Quem conhece Hanakotoba entende que existe uma conversa inteira acontecendo sem uma única fala.

É uma recompensa para quem observa os detalhes.


A Grande Lição

No mundo moderno estamos cercados por notificações, mensagens instantâneas e redes sociais. Comunicamos cada vez mais, mas nem sempre nos compreendemos melhor.

O Hanakotoba lembra que comunicação não depende apenas da quantidade de palavras.

Depende da intenção.

Do contexto.

Da sensibilidade.

Uma flor pode dizer "obrigado".

Pode dizer "sinto muito".

Pode dizer "eu estarei esperando".

Pode até dizer "adeus".

Sem emitir um único som.


Conclusão

Assim como um operador de mainframe aprende que um simples código de retorno pode revelar o estado de todo um processamento, a cultura japonesa ensina que uma única flor pode revelar o estado de uma alma.

Talvez seja por isso que tantos animes utilizem flores como elementos narrativos.

Elas não são apenas parte do cenário.

São variáveis de um programa emocional cuidadosamente escrito pelos autores.

E, quando aprendemos a ler esse "código-fonte" da natureza, percebemos que cada jardim é um painel de monitoramento dos sentimentos humanos.

No universo Bellacosa Mainframe, o Hanakotoba é um protocolo de comunicação de altíssima confiabilidade: elegante, discreto e rico em significado. Um sistema legado que continua funcionando perfeitamente há séculos porque foi construído sobre algo que nenhuma tecnologia consegue substituir — a capacidade humana de atribuir sentido aos pequenos gestos.

Como em um ambiente IBM Z, onde estabilidade, precisão e contexto fazem toda a diferença, as flores japonesas nos lembram que a mensagem mais importante nem sempre é a mais longa. Muitas vezes, ela está escondida em um detalhe aparentemente simples, esperando apenas que alguém saiba interpretá-lo.


quinta-feira, 28 de novembro de 2019

Black Friday: Serviço de Divulgação On-line



🔥🔥🔥   Promoção maluca de BLACK FRIDAY   🔥🔥🔥


.Utilizar ferramentas digitais como Google Maps, técnicas de SEO, Blogspot e páginas em redes sociais como LinkedIn, Facebook e Instagram traz inúmeras vantagens para empresas, profissionais e projetos que desejam aumentar sua visibilidade e atrair mais oportunidades. Quando usadas de forma integrada, essas plataformas fortalecem a presença online e ampliam o alcance do público.

O Google Maps é essencial para negócios locais, pois facilita que clientes encontrem a empresa, vejam avaliações, horários de funcionamento e entrem em contato rapidamente. Uma ficha bem otimizada transmite credibilidade e aumenta as chances de conversão, especialmente para quem pesquisa serviços próximos.

As técnicas de SEO permitem que sites e blogs apareçam melhor posicionados nos mecanismos de busca. Isso gera tráfego orgânico qualificado, ou seja, pessoas que já estão interessadas no tema, produto ou serviço. O SEO também melhora a experiência do usuário e fortalece a autoridade digital ao longo do tempo.

O Blogspot é uma plataforma simples e gratuita para criar blogs, ideal para publicar artigos, novidades e conteúdos informativos. Ele contribui para o SEO, ajuda a educar o público e mantém a marca ativa nos resultados de busca.

Já as páginas no LinkedIn são estratégicas para networking, negócios e posicionamento profissional. Elas reforçam a imagem institucional e conectam a marca a parceiros e clientes. O Facebook e o Instagram, por sua vez, ampliam o alcance por meio de conteúdos visuais, interação direta e engajamento constante. Juntas, essas ferramentas criam um ecossistema digital forte, aumentando visibilidade, confiança e resultados.


🕵️‍♂️  .. 100 compartilhamentos de conteúdo para até 60.000 pessoas


🔭 .. Google Maps para um endereço


🎩 .. Uma página web gratuita com domínio


☎️☎️   chame no zap 11.95491.3205


#PanfletagemVirtual #VagnerBellacosa #ElJefeMidnightLunch #BellacosaIndexPage




Seja visto no Facebook em 100 fan-pages por até 60.000 pessoas



Assine o serviço e ganhe grátis um Website no Google Blog



Alcance um publico maior.



Apareça no Google Maps




segunda-feira, 25 de novembro de 2019

☕ Bellacosa Mainframe Café – Edição Especial: “Por que os filmes de hoje não prendem?”

 


Bellacosa Mainframe Café – Edição Especial

🎬 Seção Especial – Cinema Contemporâneo: O Ruído da Tela

“Por que os filmes de hoje não prendem?”

Você não está sozinho nesse sentimento. Muitos perceberam que o cinema contemporâneo frequentemente não emociona como antes — e há razões concretas para isso:


⚡ 1. O excesso de fórmula e previsibilidade

Estúdios modernos dependem de dados, pesquisas e algoritmos para prever o que gera lucro:

  • Franquias e universos compartilhados (Marvel, DC) dominam a produção.

  • Sequências e reboots são garantias de público.

  • Test screenings e focus groups moldam roteiros até o último detalhe.

Resultado: filmes seguros, previsíveis e sem risco — emoção quase zero, porque a narrativa já é conhecida antes de ser contada.


🌀 2. Ruído digital e atenção fragmentada

A atenção do público mudou: notificações, redes sociais e TikTok fragmentam o foco.
Estúdios respondem com filmes de ação rápida, cortes constantes e estímulos visuais exagerados.
O efeito: cansaço mental e sensação de superficialidade, especialmente para quem cresceu com cinema clássico ou histórias mais contemplativas.


💡 3. Cinema antigo: ritmo, imersão e complexidade

Filmes do século XX tinham:

  • Ritmo contemplativo — espaço para sentir e refletir.

  • Desenvolvimento profundo de personagens.

  • Uso magistral de enquadramento, luz, som e silêncio.

Essa combinação criava imersão emocional, algo que muitos blockbusters modernos sacrificam em prol do impacto imediato.


⚖️ 4. Não é nostalgia, é diferença de expectativa

A insatisfação não é falha sua. Você percebe mudanças de linguagem e percepção: o cinema atual é feito para atenção rápida, não para envolvimento profundo.
Seu gosto por narrativa e atmosfera mostra sensibilidade e refinamento, não defeito.


🌹 5. Sobrevivendo ao cinema moderno

  • Busque cineastas independentes ou de autor fora do mainstream.

  • Experimente cinema estrangeiro; eles frequentemente fogem da fórmula.

  • Retorne aos clássicos do século XX sem culpa.

  • Desligue distrações digitais: o cinema pede presença.


☕ Conexão Bellacosa

O cinema moderno, assim como redes sociais e relacionamentos, é muitas vezes ruído para nossos sentidos, projetado para manter atenção, não alma.
O antídoto? Escolher com cuidado o que consome, respeitar seu ritmo interno e manter espaço para experiência emocional genuína.

Porque, no fundo, a arte nunca perdeu valor — apenas mudou o canal de transmissão.


domingo, 24 de novembro de 2019

Tunel pedonal : Teste de Geração de Vídeo Dinamico




Apresentando um vídeo em página do Blog



Estático

Construído em 1918 este túnel liga o centro de Campinas a Vila Industrial, passando por baixo do complexo ferroviário da Cia Paulista. Se é sua primeira visita em nosso canal, o Complexo FEPASA é a união das diversas ferrovias que co-existiram em Campinas, a saber: Cia Paulista, Cia Mogiana, Cia Funilense e Sorocabana.

Neste enorme complexo existiam inúmeras oficinas, páteos de manobra e grande fluxo de trens, por isso a cidade acabou sendo dividida em duas partes, o que dificultava a circulação das pessoas.

Pensando nisso em 1918 a Cia Paulista construiu um túnel com 200 metros de comprimento interligando a cidade ao bairro de operários e além. Foi um lugar muito concorrido e movimentado ao longo dos seus 100 anos.

Tem inúmeras historias que fazem parte da lenda de Campinas, fantasmas, drogados, mendigos, ladroes e pessoas comuns fizeram parte da sua longa existência.

Como bônus vamos visitar a Estação Cultura bem no dia do Juramento a Bandeiro dos jovens alistados, ouça ao fundo suas vozes em coro.

Visite o Complexo FEPASA valorize a memoria ferroviária Paulista.


#Campinas #EstaçãoCultura #TunelCiaPaulista #TiroDeGuerra #Juramento #Bandeira #Exercito #CiaPaulista #CiaMogiana #MemoriaFerroviaria #Trilhos #Carris #Trem #Estaçao #Jovens #Juventude #Plataforma #Tunel #engenharia




sexta-feira, 22 de novembro de 2019

Data Division : Quando um Programador Descobre que Cada Byte Deixa uma Impressão Digital — e que a Cena do Crime Começa Antes da PROCEDURE DIVISION

 

Bellacosa Mainframe apresenta a Data Division no COBOL

☕ Um Café no Bellacosa Mainframe

Data Division sem Mistérios para Programadores COBOL

Quando um Programador Descobre que Cada Byte Deixa uma Impressão Digital — e que a Cena do Crime Começa Antes da PROCEDURE DIVISION

Nova York, 02h17 da manhã.

A chuva escorre pelas paredes de vidro do laboratório forense enquanto os reflexos azuis das viaturas atravessam a sala. Sobre uma bancada de aço inoxidável existe algo aparentemente simples: um programa COBOL encontrado em produção depois de um processamento noturno terminar com dados inconsistentes.

Nenhum cadáver.

Nenhuma arma.

Nenhuma testemunha disposta a falar.

Apenas milhões de bytes, um arquivo sequencial, algumas áreas de memória e um saldo bancário que apareceu negativo onde jamais deveria existir um valor menor que zero.

O programador iniciante olha para o código e afirma:

— O problema deve estar na PROCEDURE DIVISION.

O investigador veterano do mainframe coloca as luvas, aproxima-se do terminal 3270 e responde:

— Esse é o primeiro erro de quem ainda não aprendeu a investigar sistemas legados. A lógica pode executar o crime, mas é na DATA DIVISION que encontramos as impressões digitais.

Bem-vindo ao laboratório forense do Bellacosa Mainframe.

Hoje não examinaremos sangue, fibras, pólvora ou DNA. Examinaremos registros, campos, buffers, parâmetros, tabelas, condições, formatos numéricos e áreas de armazenamento.

Porque, em COBOL, nenhum byte desaparece sem deixar vestígios.


Bellacosa Mainframe em DATA DIVISION em destaque

A cena do crime: o que é a DATA DIVISION?

Um programa COBOL tradicional costuma ser organizado em grandes divisões:

       IDENTIFICATION DIVISION.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       PROCEDURE DIVISION.

A IDENTIFICATION DIVISION identifica o programa.

A ENVIRONMENT DIVISION descreve aspectos do ambiente onde ele será executado.

A DATA DIVISION define os dados utilizados pelo programa.

A PROCEDURE DIVISION contém as instruções que manipulam esses dados.

Uma comparação simples seria:

DivisãoFunção
IDENTIFICATION DIVISIONIdentificação do caso
ENVIRONMENT DIVISIONDescrição da cena
DATA DIVISIONCatálogo de evidências
PROCEDURE DIVISIONReconstrução dos acontecimentos

Muitos iniciantes resumem a Data Division como “o lugar onde declaramos variáveis”.

Isso está correto, mas é incompleto.

A Data Division não apenas declara variáveis. Ela especifica:

  • o tamanho de cada campo;

  • o formato dos dados;

  • a representação física em memória;

  • a hierarquia entre campos;

  • o tempo de vida das informações;

  • a origem dos dados;

  • a forma de compartilhamento entre programas;

  • a organização de registros em arquivos;

  • as áreas utilizadas como entrada e saída;

  • as diferentes interpretações possíveis para os mesmos bytes.

É quase como se cada campo viesse acompanhado de uma ficha criminal completa.

       05 WS-SALDO PIC S9(7)V99 COMP-3.

Esta linha não diz apenas que existe um saldo.

Ela revela que:

  • o campo é numérico;

  • aceita sinal;

  • possui sete posições inteiras;

  • possui duas posições decimais implícitas;

  • utiliza formato decimal compactado;

  • ocupa uma quantidade específica de bytes;

  • precisa ser manipulado respeitando sua representação interna.

O compilador utiliza essa descrição para gerar as instruções adequadas.

Portanto, a Data Division é um contrato de memória.


O laboratório possui diferentes salas

A Data Division pode conter várias seções:

       DATA DIVISION.

       FILE SECTION.

       WORKING-STORAGE SECTION.

       LOCAL-STORAGE SECTION.

       LINKAGE SECTION.

       SCREEN SECTION.

       REPORT SECTION.

Nem todas precisam aparecer no mesmo programa.

Em sistemas corporativos atuais, as mais frequentes são:

  • FILE SECTION;

  • WORKING-STORAGE SECTION;

  • LINKAGE SECTION.

A LOCAL-STORAGE SECTION também é muito importante em programas reutilizáveis e reentrantes.

SCREEN SECTION e REPORT SECTION são mais específicas e hoje aparecem com menor frequência em ambientes IBM z/OS tradicionais.

Vamos entrar em cada sala do laboratório.


FILE SECTION: o depósito de evidências externas

A FILE SECTION descreve os registros dos arquivos utilizados pelo programa.

Um detalhe crucial: ela não armazena o arquivo inteiro na memória.

Ela normalmente representa uma área onde um registro é disponibilizado a cada operação de leitura ou gravação.

Considere o seguinte arquivo de clientes:

00001JOAO DA SILVA                 00000150000
00002MARIA OLIVEIRA                00000275050
00003PEDRO SANTOS                  00000098075

Um arquivo pode possuir milhões de registros. O programa não precisa carregar todos de uma vez.

Na FILE SECTION, descrevemos o formato de um registro:

       FILE SECTION.

       FD  ARQ-CLIENTES.

       01  REG-CLIENTE.
           05 REG-CODIGO       PIC 9(5).
           05 REG-NOME         PIC X(30).
           05 REG-SALDO        PIC 9(9)V99.

O FD significa File Description.

Ele introduz a descrição lógica do arquivo.

       FD ARQ-CLIENTES.

Logo abaixo aparece o registro:

       01 REG-CLIENTE.

Quando o programa executa:

       READ ARQ-CLIENTES

o próximo registro disponível é colocado na área associada ao arquivo.

Em termos simplificados:

Arquivo em disco
      |
      v
Sistema de arquivos
      |
      v
Buffer de entrada
      |
      v
REG-CLIENTE

Depois, o programa pode examinar os campos:

       DISPLAY REG-CODIGO
       DISPLAY REG-NOME
       DISPLAY REG-SALDO

Uma correção importante sobre a imagem

Na imagem apresentada, a File Section aparece relacionada a “variáveis temporárias”. Isso pode causar confusão.

A FILE SECTION não é normalmente utilizada como área genérica de variáveis temporárias. Sua função principal é descrever registros associados a arquivos.

As variáveis temporárias ficam geralmente na WORKING-STORAGE SECTION ou na LOCAL-STORAGE SECTION.

Em uma investigação técnica, essa distinção é importante. Colocar a etiqueta errada em uma evidência pode comprometer todo o caso.


O arquivo não existe sozinho: SELECT e FD

Em muitos programas, a declaração do arquivo possui duas partes.

Na ENVIRONMENT DIVISION, encontramos o SELECT:

       ENVIRONMENT DIVISION.

       INPUT-OUTPUT SECTION.

       FILE-CONTROL.

           SELECT ARQ-CLIENTES
               ASSIGN TO CLIENTES
               ORGANIZATION IS SEQUENTIAL
               FILE STATUS IS WS-FILE-STATUS.

Na DATA DIVISION, encontramos o FD:

       FILE SECTION.

       FD  ARQ-CLIENTES.

       01  REG-CLIENTE.
           05 REG-CODIGO       PIC 9(5).
           05 REG-NOME         PIC X(30).
           05 REG-SALDO        PIC 9(9)V99.

O SELECT descreve a relação lógica com o ambiente.

O FD descreve o registro.

É como se o SELECT informasse onde a evidência foi encontrada, enquanto o FD explicasse sua estrutura física.


FILE STATUS: o laudo que muitos esquecem de consultar

Um programa robusto não deve assumir que toda operação de arquivo funcionará corretamente.

Por isso utilizamos:

       FILE STATUS IS WS-FILE-STATUS

E declaramos:

       01 WS-FILE-STATUS       PIC XX.

Após um OPEN, READ, WRITE, REWRITE, DELETE ou CLOSE, o campo pode indicar o resultado da operação.

Exemplo:

       READ ARQ-CLIENTES
           AT END
               SET FIM-ARQUIVO TO TRUE
       END-READ

Ou:

       IF WS-FILE-STATUS NOT = '00'
           DISPLAY 'ERRO DE ARQUIVO: ' WS-FILE-STATUS
       END-IF

O valor 00 normalmente representa sucesso.

Mas atenção: os significados exatos podem variar conforme a operação e a organização do arquivo.

Uma boa prática é nunca tratar o status de arquivo como um detalhe decorativo.

Um READ malsucedido não é silêncio. É uma testemunha tentando falar.


WORKING-STORAGE SECTION: a sala central do laboratório

A WORKING-STORAGE SECTION é uma das áreas mais utilizadas em programas COBOL.

Ela contém dados que geralmente existem durante toda a execução da unidade de programa.

       WORKING-STORAGE SECTION.

       01 WS-CONTADOR          PIC 9(5) VALUE ZERO.
       01 WS-TOTAL             PIC S9(9)V99 COMP-3 VALUE ZERO.
       01 WS-FIM-ARQUIVO       PIC X VALUE 'N'.

Enquanto o programa estiver ativo, essas áreas permanecem disponíveis.

Podemos utilizar a Working-Storage para:

  • contadores;

  • acumuladores;

  • flags;

  • mensagens;

  • campos auxiliares;

  • datas;

  • áreas de entrada e saída;

  • tabelas;

  • constantes;

  • códigos de retorno;

  • estruturas temporárias;

  • copybooks;

  • campos utilizados em cálculos.

Contador

       01 WS-QTD-CLIENTES      PIC 9(7) VALUE ZERO.

Uso:

       ADD 1 TO WS-QTD-CLIENTES

Acumulador

       01 WS-TOTAL-SALDOS      PIC S9(11)V99 COMP-3
                               VALUE ZERO.

Uso:

       ADD REG-SALDO TO WS-TOTAL-SALDOS

Flag

       01 WS-FIM-ARQUIVO       PIC X VALUE 'N'.

Uso:

       IF WS-FIM-ARQUIVO = 'S'
           DISPLAY 'PROCESSAMENTO ENCERRADO'
       END-IF

Funciona, mas pode ser melhorado com nível 88.


Nível 88: o testemunho semântico

O nível 88 não reserva uma nova área de memória.

Ele fornece nomes significativos para valores ou condições de outro campo.

       01 WS-FIM-ARQUIVO       PIC X VALUE 'N'.
           88 FIM-ARQUIVO      VALUE 'S'.
           88 NAO-FIM-ARQUIVO  VALUE 'N'.

Agora podemos escrever:

       SET FIM-ARQUIVO TO TRUE

E testar:

       PERFORM UNTIL FIM-ARQUIVO

Isso é muito mais expressivo do que:

       PERFORM UNTIL WS-FIM-ARQUIVO = 'S'

Os dois funcionam, mas o nível 88 aproxima o código da linguagem do negócio.

Outro exemplo:

       01 WS-TIPO-CLIENTE      PIC X.
           88 CLIENTE-COMUM    VALUE 'C'.
           88 CLIENTE-VIP      VALUE 'V'.
           88 CLIENTE-BLOQUEADO VALUE 'B'.

Uso:

       IF CLIENTE-BLOQUEADO
           DISPLAY 'OPERACAO NAO AUTORIZADA'
       END-IF

O nível 88 é como uma legenda pericial: ele transforma valores brutos em significados compreensíveis.


VALUE: o estado inicial da evidência

A cláusula VALUE define um conteúdo inicial.

       01 WS-CONTADOR          PIC 9(5) VALUE ZERO.
       01 WS-MENSAGEM          PIC X(30)
                               VALUE 'INICIO DO PROCESSAMENTO'.
       01 WS-STATUS            PIC X VALUE 'A'.

Sem uma inicialização adequada, o programa pode trabalhar com conteúdo inesperado.

Em muitos ambientes, determinadas áreas podem receber valores previsíveis conforme o compilador, o runtime e a forma de carregamento. Porém, um programa profissional não deve depender de suposições frágeis.

Sempre que o valor inicial for importante, declare-o ou inicialize-o explicitamente.

       INITIALIZE WS-AREA-TRABALHO

Mas investigue o uso de INITIALIZE com cuidado: ele não é necessariamente equivalente a mover espaços ou zeros para todos os campos indiscriminadamente. Seu comportamento respeita as categorias dos itens e pode ser alterado com cláusulas adicionais.


LOCAL-STORAGE SECTION: cada chamada recebe uma cena isolada

A LOCAL-STORAGE SECTION é semelhante à Working-Storage, mas possui uma diferença essencial: suas áreas são alocadas para cada ativação do programa.

       LOCAL-STORAGE SECTION.

       01 LS-CONTADOR          PIC 9(5) VALUE ZERO.
       01 LS-MENSAGEM          PIC X(40).

Em termos conceituais:

Primeira chamada:
LS-CONTADOR próprio

Segunda chamada:
LS-CONTADOR próprio

Terceira chamada:
LS-CONTADOR próprio

Cada invocação recebe seu próprio conjunto de dados locais.

Isso é especialmente útil em:

  • programas reentrantes;

  • rotinas reutilizáveis;

  • ambientes com várias chamadas simultâneas;

  • aplicações servidoras;

  • processamento sob Language Environment;

  • componentes que não devem preservar estado entre ativações.

Working-Storage versus Local-Storage

Uma simplificação útil:

CaracterísticaWorking-StorageLocal-Storage
ExistênciaAssociada à instância carregada do programaCriada para cada invocação
InicializaçãoNormalmente ocorre quando o programa é carregadoOcorre em cada entrada
Uso típicoEstado geral, constantes, áreas persistentes durante execuçãoDados privados de uma chamada
ReentrânciaExige maior cuidadoFacilita isolamento por ativação

Entretanto, não reduza a discussão a “Working-Storage é compartilhada e Local-Storage nunca é”.

O comportamento real depende de fatores como:

  • forma de chamada;

  • programas estáticos ou dinâmicos;

  • uso de CANCEL;

  • opções de compilação;

  • ambiente CICS;

  • atributos de reentrância;

  • runtime;

  • arquitetura da aplicação.

No laboratório do mainframe, frases absolutas são frequentemente suspeitas.


Um caso clássico: o contador que se recusava a voltar para zero

Imagine um subprograma:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CALCULA01.

       DATA DIVISION.

       WORKING-STORAGE SECTION.

       01 WS-CONTADOR          PIC 9(4) VALUE ZERO.

       PROCEDURE DIVISION.

           ADD 1 TO WS-CONTADOR
           DISPLAY 'CONTADOR: ' WS-CONTADOR

           GOBACK.

O programa chamador executa várias chamadas.

Um iniciante pode esperar:

CONTADOR: 0001
CONTADOR: 0001
CONTADOR: 0001

Mas, dependendo da forma de carregamento e das condições de execução, pode observar:

CONTADOR: 0001
CONTADOR: 0002
CONTADOR: 0003

Isso ocorre porque a Working-Storage pode manter seu conteúdo entre chamadas enquanto o programa permanecer carregado.

Mover o contador para Local-Storage muda a intenção:

       LOCAL-STORAGE SECTION.

       01 LS-CONTADOR          PIC 9(4) VALUE ZERO.

Agora cada chamada recebe uma nova área inicializada.

Esse tipo de comportamento parece sobrenatural apenas até encontrarmos a seção correta.

Depois disso, torna-se evidência técnica.


LINKAGE SECTION: dados que pertencem a outra pessoa

A LINKAGE SECTION descreve dados fornecidos por outra unidade de execução.

Esses dados não são, em princípio, áreas comuns criadas e pertencentes ao subprograma da mesma forma que itens da Working-Storage.

Exemplo de programa chamador:

       WORKING-STORAGE SECTION.

       01 WS-CLIENTE.
           05 WS-CODIGO        PIC 9(5).
           05 WS-NOME          PIC X(30).
           05 WS-SALDO         PIC S9(7)V99 COMP-3.

       PROCEDURE DIVISION.

           MOVE 12345 TO WS-CODIGO
           MOVE 'STELLA BONASERA' TO WS-NOME
           MOVE 1500.75 TO WS-SALDO

           CALL 'ATUALIZA1'
               USING WS-CLIENTE

           GOBACK.

Programa chamado:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ATUALIZA1.

       DATA DIVISION.

       LINKAGE SECTION.

       01 LK-CLIENTE.
           05 LK-CODIGO        PIC 9(5).
           05 LK-NOME          PIC X(30).
           05 LK-SALDO         PIC S9(7)V99 COMP-3.

       PROCEDURE DIVISION USING LK-CLIENTE.

           ADD 100 TO LK-SALDO

           GOBACK.

O chamador entrega uma área.

O subprograma descreve essa área na Linkage Section.

A PROCEDURE DIVISION USING estabelece a associação entre os argumentos recebidos e os itens de Linkage.


BY REFERENCE, BY CONTENT e BY VALUE

O método de passagem de parâmetros muda completamente a investigação.

BY REFERENCE

É a forma tradicional e muito comum.

       CALL 'ATUALIZA1'
           USING BY REFERENCE WS-CLIENTE

O subprograma recebe acesso à área do chamador.

Alterações podem ser percebidas pelo chamador.

Chamador possui WS-SALDO
        |
        v
Subprograma acessa a mesma área
        |
        v
Alteração volta para o chamador

BY CONTENT

O subprograma recebe uma cópia lógica do argumento.

       CALL 'CONSULTA1'
           USING BY CONTENT WS-CLIENTE

O programa chamado pode trabalhar com o conteúdo, mas mudanças não devem retornar para a área original como numa passagem por referência.

BY VALUE

Utilizado para passar o valor diretamente, sendo especialmente relevante na interoperabilidade com outras linguagens e APIs.

       CALL 'ROTINAC'
           USING BY VALUE WS-CODIGO

BY VALUE exige atenção a tamanho, representação e convenções de chamada.

Não basta o número “parecer igual”. Os bytes precisam ser compatíveis.

Em integração, o assassino frequentemente se chama “layout incompatível”.


O contrato precisa ser idêntico

Considere o chamador:

       01 WS-CLIENTE.
           05 WS-CODIGO        PIC 9(5).
           05 WS-NOME          PIC X(30).
           05 WS-SALDO         PIC S9(7)V99 COMP-3.

E o chamado:

       01 LK-CLIENTE.
           05 LK-CODIGO        PIC 9(5).
           05 LK-NOME          PIC X(20).
           05 LK-SALDO         PIC S9(7)V99 COMP-3.

O nome possui 30 bytes no chamador, mas apenas 20 na visão do chamado.

Isso desloca o campo seguinte.

O subprograma pode interpretar os últimos dez bytes do nome como parte do saldo.

Não existe magia.

Existe desalinhamento.

Em sistemas reais, esse erro pode gerar:

  • valores corrompidos;

  • dados aparentemente aleatórios;

  • S0C7;

  • sobreposição de campos;

  • gravações incorretas;

  • falhas intermitentes;

  • resultados diferentes após recompilações.

Por isso copybooks compartilhados são tão importantes.


COPYBOOK: o laudo oficial do layout

Em vez de repetir a mesma estrutura em dezenas de programas, podemos centralizá-la em um copybook.

Arquivo CPYCLI01:

       01 CLIENTE-DADOS.
           05 CLIENTE-CODIGO   PIC 9(5).
           05 CLIENTE-NOME     PIC X(30).
           05 CLIENTE-SALDO    PIC S9(7)V99 COMP-3.

No chamador:

       WORKING-STORAGE SECTION.

       COPY CPYCLI01.

No chamado:

       LINKAGE SECTION.

       COPY CPYCLI01.

Assim, ambos utilizam a mesma definição.

Mas existe uma armadilha: alterar o copybook e recompilar apenas um dos programas.

O fonte parece correto.

O copybook parece correto.

O programa recompilado parece correto.

Mas o módulo antigo continua esperando o layout anterior.

E então nasce um crime perfeito: duas versões corretas individualmente, incompatíveis quando trabalham juntas.

A solução envolve disciplina de gestão de dependências, recompilação, testes e controle de versões.


SCREEN SECTION: a antiga sala de interrogatório

A SCREEN SECTION permite definir telas em implementações COBOL que oferecem esse recurso.

Exemplo genérico:

       SCREEN SECTION.

       01 TELA-CLIENTE.
           05 BLANK SCREEN.
           05 LINE 3 COLUMN 10
              VALUE 'CODIGO DO CLIENTE:'.
           05 LINE 3 COLUMN 30
              PIC 9(5)
              USING WS-CODIGO.

Ela foi utilizada em sistemas interativos de diversas plataformas.

No universo IBM mainframe, especialmente em aplicações CICS, interfaces 3270 são frequentemente definidas por mapas BMS.

Em IMS, pode-se encontrar MFS.

Em arquiteturas modernas, o COBOL pode funcionar atrás de:

  • APIs REST;

  • aplicações web;

  • serviços de integração;

  • mensageria;

  • z/OS Connect;

  • CICS Transaction Gateway;

  • aplicativos móveis.

A tela pode ter desaparecido do COBOL, mas o programa continua processando o coração da transação.


REPORT SECTION: o especialista aposentado que ainda sabe demais

A REPORT SECTION está associada ao Report Writer, um recurso criado para facilitar a produção de relatórios estruturados.

Ela podia ajudar a organizar:

  • cabeçalhos;

  • detalhes;

  • rodapés;

  • totais;

  • quebras de grupo;

  • paginação.

Exemplo conceitual:

       REPORT SECTION.

       RD RELATORIO-VENDAS.

       01 TYPE IS PAGE HEADING.
          05 COLUMN 1 PIC X(20)
             VALUE 'RELATORIO DE VENDAS'.

Atualmente, muitos relatórios são produzidos por:

  • programas tradicionais;

  • DFSORT;

  • ferramentas de BI;

  • bancos de dados;

  • aplicações distribuídas;

  • geradores de documentos;

  • plataformas analíticas.

Mesmo assim, sistemas antigos podem utilizar Report Writer até hoje.

Em mainframe, “antigo” não significa necessariamente “inútil”.

Às vezes significa apenas “estável há 35 anos e ainda fechando a contabilidade antes do amanhecer”.


A hierarquia dos níveis: reconstruindo o corpo do registro

COBOL utiliza números de nível para representar a hierarquia dos dados.

       01 WS-CLIENTE.
           05 WS-IDENTIFICACAO.
               10 WS-CODIGO    PIC 9(5).
               10 WS-CPF       PIC 9(11).
           05 WS-NOME          PIC X(30).
           05 WS-ENDERECO.
               10 WS-RUA       PIC X(30).
               10 WS-NUMERO    PIC 9(5).
               10 WS-CIDADE    PIC X(20).

Visualmente:

WS-CLIENTE
├── WS-IDENTIFICACAO
│   ├── WS-CODIGO
│   └── WS-CPF
├── WS-NOME
└── WS-ENDERECO
    ├── WS-RUA
    ├── WS-NUMERO
    └── WS-CIDADE

Os itens de grupo não possuem PIC.

Eles são formados pelos campos subordinados.

Podemos mover ou exibir o grupo inteiro:

       DISPLAY WS-CLIENTE

Mas isso manipula a sequência física dos bytes, não uma abstração independente.


Os níveis especiais

Além dos níveis comuns, COBOL possui níveis especiais.

Nível 01

Define uma estrutura principal ou registro.

       01 WS-CLIENTE.

Níveis 02 a 49

Definem itens subordinados.

           05 WS-NOME PIC X(30).

Nível 66

Utilizado com RENAMES.

       66 WS-DADOS-BASICOS RENAMES
          WS-CODIGO THRU WS-NOME.

Hoje é pouco usado e deve ser tratado com cuidado, pois pode dificultar a leitura.

Nível 77

Define um item elementar independente.

       77 WS-CONTADOR PIC 9(5).

Ainda pode ser encontrado em programas antigos, embora muitos padrões modernos prefiram organizar itens sob níveis 01.

Nível 78

Em algumas implementações, é utilizado para constantes de compilação.

Sua disponibilidade e detalhes dependem do compilador.

Nível 88

Define nomes de condição.

           88 CLIENTE-ATIVO VALUE 'A'.

PICTURE: o retrato falado do dado

A cláusula PIC, abreviação de PICTURE, descreve a categoria e o formato do campo.

Alfanumérico

       05 WS-NOME PIC X(30).

Pode conter letras, números, espaços e outros caracteres compatíveis com a codificação utilizada.

Numérico

       05 WS-IDADE PIC 9(3).

Representa três posições numéricas.

Alfabético

       05 WS-INICIAL PIC A.

Seu uso é menos comum em programas modernos.

Com sinal

       05 WS-SALDO PIC S9(7)V99.

O S indica sinal.

Decimal implícito

       05 WS-VALOR PIC 9(5)V99.

O V não ocupa uma posição física.

Ele indica onde o programa deve interpretar a casa decimal.

O valor:

0012345

pode ser interpretado como:

123,45

de acordo com o layout.

Esse é um dos grandes suspeitos em integrações.

Se um sistema envia centavos e outro espera reais, um pagamento de R$ 150,00 pode ser interpretado como R$ 15.000,00 ou R$ 1,50.

O byte está correto.

A interpretação está errada.


DISPLAY, COMP, COMP-3: mesma informação, corpos diferentes

Um número pode possuir diferentes representações internas.

DISPLAY

       05 WS-VALOR PIC 9(5).

Cada dígito costuma ocupar uma posição de caractere.

COMP ou BINARY

       05 WS-VALOR PIC S9(9) COMP.

O valor é armazenado em representação binária conforme as regras do compilador e opções aplicáveis.

COMP-3

       05 WS-VALOR PIC S9(7)V99 COMP-3.

Utiliza decimal compactado.

Dois dígitos normalmente são armazenados por byte, com uma parte do último byte usada para o sinal.

É muito comum em aplicações financeiras porque representa valores decimais com precisão e economia de espaço.

A pista do S0C7

Um S0C7 normalmente aponta para uma exceção de dados durante uma operação decimal.

Causas comuns:

  • campo numérico contém bytes inválidos;

  • layout incorreto;

  • deslocamento provocado por copybook incompatível;

  • campo não inicializado;

  • arquivo lido com definição errada;

  • tentativa de calcular usando dados alfanuméricos;

  • erro de REDEFINES;

  • parâmetros desalinhados.

O erro aparece na Procedure Division porque uma instrução tentou utilizar o campo.

Mas o verdadeiro criminoso pode estar na Data Division.


REDEFINES: duas interpretações para a mesma evidência

REDEFINES permite que a mesma área de memória seja vista de maneiras diferentes.

       01 WS-DATA-NUMERICA.
           05 WS-DATA-AAAAMMDD PIC 9(8).

       01 WS-DATA-DETALHADA
          REDEFINES WS-DATA-NUMERICA.
           05 WS-ANO           PIC 9(4).
           05 WS-MES           PIC 9(2).
           05 WS-DIA           PIC 9(2).

Se:

       MOVE 20260725 TO WS-DATA-AAAAMMDD

então podemos acessar:

WS-ANO = 2026
WS-MES = 07
WS-DIA = 25

Nenhum dado foi copiado.

A mesma sequência de bytes recebeu duas descrições.

É poderoso, eficiente e perigoso.

Um REDEFINES incorreto pode transformar:

  • nome em número;

  • data em saldo;

  • código em endereço;

  • payload em campos incompatíveis.

No CSI do mainframe, REDEFINES é aquele suspeito elegante que parece sempre ter um álibi.


OCCURS: a formação da quadrilha

OCCURS define repetições de uma estrutura, criando tabelas.

       01 WS-TABELA-CLIENTES.
           05 WS-CLIENTE OCCURS 100 TIMES.
               10 WS-CODIGO    PIC 9(5).
               10 WS-NOME      PIC X(30).

Isso reserva espaço para cem ocorrências.

Podemos acessar:

       MOVE 12345 TO WS-CODIGO (1)
       MOVE 'MAC TAYLOR' TO WS-NOME (1)

Subscript

       01 WS-I PIC 9(3) COMP VALUE 1.

       DISPLAY WS-NOME (WS-I)

Index

A tabela pode ser definida com índice:

       05 WS-CLIENTE OCCURS 100 TIMES
           INDEXED BY IDX-CLIENTE.

Uso:

       SET IDX-CLIENTE TO 1
       DISPLAY WS-NOME (IDX-CLIENTE)

O índice possui natureza própria e pode ser otimizado para o deslocamento interno da tabela.

Nunca ultrapasse os limites do OCCURS.

Acessar a ocorrência 101 de uma tabela com cem elementos pode atingir memória pertencente a outro campo.

É o equivalente digital de atravessar a fita amarela da cena do crime.


Passo a passo: montando um programa completo

Vamos construir um pequeno processamento sequencial.

1. Declarar o arquivo no ambiente

       ENVIRONMENT DIVISION.

       INPUT-OUTPUT SECTION.

       FILE-CONTROL.

           SELECT ARQ-CLIENTES
               ASSIGN TO CLIENTES
               ORGANIZATION IS SEQUENTIAL
               FILE STATUS IS WS-FILE-STATUS.

2. Descrever o registro

       DATA DIVISION.

       FILE SECTION.

       FD  ARQ-CLIENTES.

       01  REG-CLIENTE.
           05 REG-CODIGO       PIC 9(5).
           05 REG-NOME         PIC X(30).
           05 REG-SALDO        PIC S9(7)V99 COMP-3.

3. Criar áreas auxiliares

       WORKING-STORAGE SECTION.

       01 WS-FILE-STATUS       PIC XX.

       01 WS-CONTROLES.
           05 WS-FIM           PIC X VALUE 'N'.
               88 FIM-ARQUIVO  VALUE 'S'.
               88 HA-REGISTRO  VALUE 'N'.

       01 WS-TOTAIS.
           05 WS-QTD           PIC 9(7) VALUE ZERO.
           05 WS-TOTAL-SALDO   PIC S9(13)V99 COMP-3
                               VALUE ZERO.

4. Abrir o arquivo

       PROCEDURE DIVISION.

       0000-PRINCIPAL.

           OPEN INPUT ARQ-CLIENTES

           IF WS-FILE-STATUS NOT = '00'
               DISPLAY 'ERRO NO OPEN: ' WS-FILE-STATUS
               MOVE 12 TO RETURN-CODE
               GOBACK
           END-IF

5. Ler o primeiro registro

           PERFORM 1000-LER-CLIENTE

6. Processar até o fim

           PERFORM UNTIL FIM-ARQUIVO

               ADD 1 TO WS-QTD
               ADD REG-SALDO TO WS-TOTAL-SALDO

               DISPLAY REG-CODIGO
                       ' '
                       REG-NOME

               PERFORM 1000-LER-CLIENTE

           END-PERFORM

7. Encerrar

           CLOSE ARQ-CLIENTES

           DISPLAY 'CLIENTES: ' WS-QTD
           DISPLAY 'TOTAL:    ' WS-TOTAL-SALDO

           GOBACK.

8. Criar o parágrafo de leitura

       1000-LER-CLIENTE.

           READ ARQ-CLIENTES
               AT END
                   SET FIM-ARQUIVO TO TRUE
               NOT AT END
                   SET HA-REGISTRO TO TRUE
           END-READ.

O programa completo demonstra como cada seção coopera.

A File Section fornece o registro.

A Working-Storage guarda o controle e os totais.

A Procedure Division conduz o processamento.

Cada elemento possui responsabilidade própria.


Checklist forense para analisar uma DATA DIVISION

Quando um programa apresenta erro de dados, examine:

1. O PIC está correto?

Compare tamanho, sinal e casas decimais.

PIC 9(7)V99

não é equivalente a:

PIC 9(9)

2. O formato interno é compatível?

PIC S9(7)V99 COMP-3

não possui a mesma representação física de:

PIC X(5)

3. O arquivo está com o LRECL esperado?

Se o programa espera 100 bytes, mas o arquivo possui 120, parte do registro pode ser ignorada ou interpretada incorretamente.

4. O copybook é a versão correta?

Verifique data, biblioteca, concatenação e versão usada na compilação.

5. Chamador e chamado foram recompilados?

Uma mudança na interface pode exigir recompilar todos os consumidores.

6. Existe REDEFINES?

Descubra qual visão está sendo usada em cada ponto.

7. Existe OCCURS?

Verifique limites, índices e subscritos.

8. O campo foi inicializado?

Não presuma que contém zeros ou espaços.

9. O parâmetro foi passado pelo método correto?

Confirme BY REFERENCE, BY CONTENT ou BY VALUE.

10. O campo possui alinhamento ou sincronização especial?

Cláusulas como SYNCHRONIZED podem introduzir bytes de preenchimento dependendo do compilador e da estrutura.


Curiosidades da sala de evidências

Curiosidade 1: o nome do campo não existe no arquivo

Um arquivo físico não contém necessariamente nomes como:

REG-CODIGO
REG-NOME
REG-SALDO

Ele contém bytes.

Os nomes existem no programa para que os humanos e o compilador interpretem as posições.

O mesmo arquivo pode receber layouts diferentes.

Um deles estará correto.

Os demais produzirão ficção científica.

Curiosidade 2: PIC não é uma máscara de exibição apenas

Muitos iniciantes associam PICTURE apenas à aparência.

Na verdade, ela define categoria, tamanho e interpretação do item.

Curiosidade 3: o ponto decimal pode não existir fisicamente

No V implícito, nenhum caractere de ponto ou vírgula é armazenado.

PIC 9(5)V99

ocupa sete dígitos, não oito posições contendo um separador.

Curiosidade 4: um item de grupo pode misturar categorias

       01 WS-REGISTRO.
           05 WS-CODIGO PIC 9(5).
           05 WS-NOME   PIC X(20).

O grupo inteiro pode ser tratado como uma sequência de bytes para certas operações, apesar de conter campos de diferentes categorias.

Curiosidade 5: a memória é inocente

A memória não sabe que aqueles bytes representam CPF, saldo ou data.

Ela apenas armazena bits.

O significado vem do layout.

Quando o layout mente, a memória obedece.


Easter eggs do laboratório CSI Mainframe

Em homenagem ao clima de investigação, os nomes dos exemplos esconderam algumas referências.

  • MAC TAYLOR aparece como líder da equipe forense de Nova York.

  • STELLA BONASERA foi usada em uma estrutura de cliente.

  • O horário de 02h17 lembra a rotina dos processamentos batch que terminam quando a cidade dorme.

  • O terminal 3270 funciona como a mesa de autópsia digital.

  • O S0C7 é o equivalente mainframe de encontrar uma impressão digital impossível na arma do crime.

  • O copybook incompatível é o “suspeito que possuía duas identidades”.

  • O REDEFINES representa a evidência que muda de aparência dependendo do ângulo da luz.

  • O OCCURS é a fotografia de uma quadrilha perfeitamente alinhada na parede do distrito policial.

E existe um easter egg maior.

Em quase todo mistério COBOL, o programador procura primeiro a linha que falhou.

O investigador experiente procura primeiro o dado que chegou até ela.


Dicas do Bellacosa Mainframe para o iniciante

Use nomes que revelem intenção

Evite:

       01 X1 PIC X.

Prefira:

       01 WS-STATUS-CLIENTE PIC X.

Agrupe campos relacionados

       01 WS-CONTROLES.
           05 WS-FIM-ARQUIVO PIC X.
           05 WS-ERRO        PIC X.
           05 WS-RETORNO     PIC 9(4).

Use níveis 88

Eles tornam o código mais claro e reduzem comparações espalhadas.

Padronize prefixos

Exemplo:

  • WS- para Working-Storage;

  • LS- para Local-Storage;

  • LK- para Linkage;

  • REG- para registros de arquivo;

  • CT- para constantes;

  • IDX- para índices.

Isso não é uma regra universal da linguagem, mas ajuda muito na leitura.

Documente formatos numéricos

Especialmente:

  • sinal;

  • casas decimais;

  • COMP;

  • COMP-3;

  • valores enviados a outros sistemas.

Trate copybooks como interfaces

Uma alteração em copybook não é apenas uma mudança de layout.

Pode ser uma mudança de contrato entre dezenas ou centenas de programas.

Nunca ignore o tamanho total

Calcule o comprimento do registro.

Confirme com:

  • LRECL;

  • documentação;

  • catálogo;

  • ferramenta de browse;

  • definição do dataset;

  • programa produtor;

  • programa consumidor.

Teste limites

Para OCCURS, teste:

  • primeira posição;

  • última posição válida;

  • tabela vazia;

  • tabela completa;

  • tentativa de ultrapassagem;

  • chave não encontrada.


A conclusão da investigação

A equipe se reúne diante do painel de vidro.

O programa não falhou porque o ADD estava errado.

A instrução era perfeitamente válida.

O problema estava em um copybook antigo usado por um subprograma que não havia sido recompilado.

O chamador enviava:

       05 CLIENTE-NOME PIC X(30).

O chamado ainda esperava:

       05 CLIENTE-NOME PIC X(20).

Os dez bytes excedentes deslocaram o saldo.

Quando o programa tentou somar aquele conteúdo como decimal compactado, ocorreu o S0C7.

A linha da Procedure Division apenas encontrou o corpo.

O crime havia sido planejado na Data Division.

Essa é a lição central.

A DATA DIVISION não é um depósito passivo de declarações. Ela é a fundação arquitetural do programa COBOL.

A FILE SECTION descreve os registros que chegam de arquivos.

A WORKING-STORAGE SECTION mantém controles, acumuladores, tabelas e áreas utilizadas durante a execução.

A LOCAL-STORAGE SECTION fornece áreas independentes para cada ativação.

A LINKAGE SECTION estabelece contratos de comunicação entre programas.

A SCREEN SECTION pode descrever interfaces interativas.

A REPORT SECTION pode organizar relatórios estruturados.

Os níveis constroem hierarquias.

A cláusula PIC define formatos.

VALUE estabelece estados iniciais.

OCCURS cria tabelas.

REDEFINES oferece diferentes interpretações para a mesma memória.

Os níveis 88 transformam códigos em significado.

COMP e COMP-3 revelam que dois campos numericamente semelhantes podem possuir corpos físicos completamente diferentes.

Para o programador iniciante, dominar a Data Division significa começar a enxergar além da aparência do código.

Você deixa de ver apenas:

       05 SALDO PIC S9(7)V99 COMP-3.

E passa a enxergar:

Campo assinado
Decimal
Sete posições inteiras
Duas casas decimais
Representação compactada
Contrato físico de armazenamento
Possível ponto de integração
Possível origem de S0C7
Possível incompatibilidade com copybook

Esse é o momento em que o estudante deixa de apenas escrever COBOL e começa a investigar sistemas.

Porque na programação corporativa os defeitos raramente anunciam sua origem.

Eles aparecem em outro módulo.

Falham horas depois.

Dependem de um registro específico.

Só acontecem em produção.

Desaparecem durante o teste.

Retornam no fechamento mensal.

E deixam para trás apenas um dump, um código de retorno, algumas mensagens no spool e um campo cheio de bytes que ninguém deveria ter interpretado daquela maneira.

Mas não se preocupe.

Coloque as luvas.

Abra o compile listing.

Verifique o offset.

Compare o copybook.

Calcule o comprimento.

Analise o formato.

Siga o rastro dos bytes.

No laboratório do Bellacosa Mainframe, toda variável possui uma história.

Todo registro possui um passado.

Todo ABEND possui uma causa.

E toda Data Division, quando examinada com atenção, acaba confessando.

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...