Translate

sábado, 31 de agosto de 2019

O guia do programador COBOL Padawan para dominar DDL, DML, DQL, DCL e TCL como um oficial da Frota Estelar

 

Bellacosa Mainframe e o sql jedi conheça ddl dml dql dcl e tcl

☕ Um Café no Bellacosa Mainframe

SQL sem Mistérios: Muito Além do SELECT

O guia do programador COBOL Padawan para dominar DDL, DML, DQL, DCL e TCL como um oficial da Frota Estelar

Existe um momento na carreira de todo programador COBOL iniciante em que ele abre uma tela do SPUFI, do DB2I, de alguma ferramenta gráfica ou de um terminal SQL, digita:

SELECT * FROM CLIENTES;

pressiona Enter e sente que acabou de assumir o comando da USS Enterprise.

A tabela responde. As linhas aparecem. Os dados estão ali.

Missão cumprida?

Ainda não, jovem Padawan.

O SELECT é apenas a porta principal da nave. SQL é muito maior do que consultar registros. É uma linguagem capaz de construir estruturas, modificar dados, controlar permissões, organizar transações, impedir inconsistências e proteger sistemas inteiros contra falhas.

Em outras palavras: SQL não é apenas o binóculo que permite observar o espaço. É também o estaleiro que constrói a nave, o computador que controla os sistemas, o oficial de segurança que autoriza acessos e o protocolo de emergência que impede a perda da tripulação.

Para quem está entrando no universo do COBOL, especialmente em ambientes com Db2, compreender as categorias dos comandos SQL é uma das fundações mais importantes da carreira.

Neste café, vamos explorar:

  • DDL — Data Definition Language;

  • DML — Data Manipulation Language;

  • DQL — Data Query Language;

  • DCL — Data Control Language;

  • TCL — Transaction Control Language;

  • diferenças importantes entre comandos;

  • riscos comuns;

  • exemplos práticos;

  • SQL dentro de programas COBOL;

  • transações no mainframe;

  • curiosidades históricas;

  • dicas para entrevistas;

  • um roteiro prático de estudos.

Prepare o café, abra o emulador 3270 e ajuste os escudos. Nossa missão começa agora.


1. SQL não significa apenas SELECT

Muita gente aprende SQL de trás para frente.

Primeiro conhece o SELECT, depois descobre os filtros com WHERE, aprende ORDER BY, talvez um JOIN, e passa a acreditar que SQL é apenas uma linguagem de consulta.

Isso acontece porque a consulta é a parte mais visível.

O analista consulta vendas.

O programador consulta clientes.

O auditor consulta movimentações.

O suporte consulta logs.

Mas, antes que qualquer consulta possa acontecer, alguém precisou:

  1. criar a tabela;

  2. definir suas colunas;

  3. escolher os tipos de dados;

  4. criar chaves;

  5. definir restrições;

  6. inserir registros;

  7. conceder permissões;

  8. controlar transações;

  9. criar índices;

  10. planejar recuperação em caso de falha.

Portanto, SQL administra praticamente todo o ciclo de vida de um banco de dados relacional.

Um banco sem comandos de definição não teria tabelas.

Um banco sem comandos de manipulação não teria registros.

Um banco sem consultas não entregaria informação.

Um banco sem controle de acesso seria uma colônia sem escudos.

Um banco sem transações seria um teletransporte que materializa metade da pessoa em cada sala.

SQL é uma linguagem completa de interação com bancos relacionais.


2. Uma breve origem da linguagem SQL

A história do SQL começa na IBM, durante os anos 1970, quando pesquisadores trabalhavam com o modelo relacional proposto por Edgar F. Codd.

Codd apresentou uma nova forma de organizar dados usando relações, que na prática seriam representadas por tabelas.

Em vez de navegar manualmente por estruturas rígidas e ponteiros físicos, o usuário poderia declarar o resultado desejado.

Essa ideia foi revolucionária.

Em uma linguagem procedural tradicional, você descreve cada passo:

  1. abra o arquivo;

  2. leia o registro;

  3. compare o código;

  4. avance;

  5. repita;

  6. grave o resultado.

Em SQL, você declara:

SELECT NOME
FROM CLIENTE
WHERE CODIGO = 100;

Você diz o que deseja.

O banco decide como encontrar.

Essa diferença entre linguagem procedural e declarativa é fundamental para o programador COBOL.

COBOL normalmente descreve o fluxo.

SQL descreve o resultado.

Quando ambos trabalham juntos, temos uma poderosa combinação:

  • COBOL controla a lógica da aplicação;

  • SQL acessa e manipula os dados;

  • Db2 escolhe o plano de acesso;

  • o sistema operacional garante execução, segurança e recuperação.

É quase como uma equipe da ponte de comando:

  • COBOL é o capitão;

  • SQL é o oficial de operações;

  • Db2 é o computador central;

  • z/OS é a própria nave;

  • RACF é o chefe de segurança;

  • JES2 coordena os trabalhos;

  • CICS mantém a operação on-line;

  • e o programador é o tripulante tentando não causar um DELETE sem WHERE.


3. As cinco grandes famílias do SQL

Os comandos SQL costumam ser classificados em cinco grupos principais:

CategoriaSignificadoFinalidade
DDLData Definition LanguageCriar e alterar estruturas
DMLData Manipulation LanguageInserir, atualizar e excluir dados
DQLData Query LanguageConsultar dados
DCLData Control LanguageControlar permissões
TCLTransaction Control LanguageControlar transações

Essa divisão é didática.

Em alguns livros, o SELECT aparece dentro de DML. Em outros, é separado como DQL. Alguns produtos também apresentam variações de comportamento e sintaxe.

Não entre em guerra klingon por causa da classificação.

O mais importante é compreender a responsabilidade de cada comando.


4. DDL — Data Definition Language

DDL é a linguagem de definição de dados.

Ela cria e modifica a estrutura lógica dos objetos do banco.

Imagine que você esteja construindo uma nova nave da Frota Estelar.

Antes da tripulação embarcar, é necessário definir:

  • quantos decks existirão;

  • onde ficará a engenharia;

  • qual será a capacidade do reator;

  • onde serão instalados os escudos;

  • quantos alojamentos existirão;

  • como os corredores estarão conectados.

No banco, essa construção é feita com DDL.

Os comandos mais conhecidos são:

CREATE
ALTER
DROP
TRUNCATE
RENAME

4.1 CREATE — criando objetos

O CREATE cria novos objetos.

Exemplo:

CREATE TABLE CLIENTE
(
    ID_CLIENTE   INTEGER      NOT NULL,
    NOME         VARCHAR(100) NOT NULL,
    EMAIL        VARCHAR(150),
    DATA_CADASTRO DATE,
    SALDO        DECIMAL(11,2),
    PRIMARY KEY (ID_CLIENTE)
);

Aqui estamos criando uma tabela chamada CLIENTE.

Cada coluna possui um tipo:

  • INTEGER: número inteiro;

  • VARCHAR: texto de tamanho variável;

  • DATE: data;

  • DECIMAL: número decimal;

  • NOT NULL: a coluna não pode ficar vazia;

  • PRIMARY KEY: identifica cada registro de forma única.

O CREATE também pode criar:

CREATE INDEX
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE
CREATE TABLESPACE
CREATE PROCEDURE
CREATE TRIGGER

No Db2 for z/OS, o universo pode incluir objetos como:

  • database;

  • tablespace;

  • table;

  • index;

  • view;

  • alias;

  • synonym;

  • sequence;

  • stored procedure;

  • function;

  • package;

  • plan.

Nem todos são criados exatamente da mesma maneira em todos os bancos.

Essa é uma lição importante: SQL é padronizado, mas cada fabricante possui extensões e particularidades.


4.2 ALTER — reformando a nave durante a viagem

O ALTER modifica uma estrutura existente.

Por exemplo, imagine que a tabela CLIENTE já esteja em produção, mas agora a empresa deseja armazenar o telefone.

ALTER TABLE CLIENTE
ADD COLUMN TELEFONE VARCHAR(20);

Não foi necessário destruir a tabela.

Apenas adicionamos uma nova coluna.

Também podemos adicionar uma restrição:

ALTER TABLE CLIENTE
ADD CONSTRAINT CK_SALDO
CHECK (SALDO >= 0);

Ou aumentar o tamanho de uma coluna, dependendo do banco:

ALTER TABLE CLIENTE
ALTER COLUMN EMAIL
SET DATA TYPE VARCHAR(250);

Entretanto, o ALTER exige cuidado.

Modificar uma tabela vazia é simples.

Modificar uma tabela com:

  • 500 milhões de linhas;

  • dezenas de índices;

  • programas COBOL dependentes;

  • views;

  • triggers;

  • replicação;

  • rotinas de carga;

  • processos on-line;

é outra história.

Em ambientes mainframe, uma alteração estrutural pode exigir análise de impacto, regeneração de objetos, rebind de packages, testes de compatibilidade e planejamento de janela.

A pergunta não é apenas:

“O comando funciona?”

A pergunta madura é:

“Qual será o impacto dessa alteração em todo o ecossistema?”


4.3 DROP — autodestruição autorizada

O DROP remove um objeto.

DROP TABLE CLIENTE;

Esse comando pode remover:

  • a definição da tabela;

  • seus dados;

  • índices relacionados;

  • dependências, conforme o produto e as opções utilizadas.

É uma operação destrutiva.

Não confunda:

DELETE FROM CLIENTE;

com:

DROP TABLE CLIENTE;

O primeiro remove registros.

O segundo remove a própria tabela.

É como comparar:

  • retirar todos os tripulantes de uma nave;

  • explodir a nave inteira.

São situações completamente diferentes.

Em ambientes críticos, comandos DROP devem obedecer a controles rígidos, permissões específicas, aprovação de mudança e procedimentos de recuperação.


4.4 TRUNCATE — esvaziando o compartimento

O TRUNCATE remove todas as linhas de uma tabela, mas preserva sua estrutura.

TRUNCATE TABLE CLIENTE;

Após o comando:

  • a tabela continua existindo;

  • suas colunas continuam existindo;

  • os índices permanecem definidos;

  • as permissões normalmente permanecem;

  • os dados são removidos.

O TRUNCATE costuma ser mais rápido do que um DELETE sem WHERE, porque pode tratar a remoção em nível de páginas ou estruturas internas, evitando a mesma quantidade de trabalho linha por linha.

Mas isso varia conforme o SGBD.

Também é preciso verificar:

  • possibilidade de rollback;

  • comportamento do log;

  • restrições de integridade;

  • relacionamentos com outras tabelas;

  • triggers;

  • identidade;

  • opções específicas do produto.

A frase “TRUNCATE não pode ser desfeito” não é universal.

Em alguns bancos e contextos, pode haver comportamento transacional. Em outros, a operação possui restrições diferentes.

A regra de ouro é:

Nunca confie em uma frase genérica sobre banco de dados sem verificar o produto e a versão.


4.5 RENAME — mudando o nome da nave

O RENAME altera o nome de um objeto.

Exemplo genérico:

RENAME TABLE CLIENTE TO CLIENTES;

A sintaxe pode variar.

O cuidado está nas dependências.

Se você renomear uma tabela usada por:

  • programas COBOL;

  • jobs;

  • views;

  • stored procedures;

  • APIs;

  • relatórios;

  • scripts;

  • rotinas ETL;

todos esses consumidores poderão falhar.

Renomear não é apenas mudar uma etiqueta.

Em produção, pode significar alterar centenas de referências.


5. DML — Data Manipulation Language

DML é a linguagem de manipulação de dados.

Depois que a estrutura existe, precisamos inserir, alterar e remover registros.

Os comandos centrais são:

INSERT
UPDATE
DELETE
MERGE

5.1 INSERT — novos tripulantes a bordo

O INSERT adiciona registros.

INSERT INTO CLIENTE
(
    ID_CLIENTE,
    NOME,
    EMAIL,
    DATA_CADASTRO,
    SALDO
)
VALUES
(
    1001,
    'Vagner Bellacosa',
    'vagner@example.com',
    CURRENT_DATE,
    1500.00
);

É recomendável indicar explicitamente as colunas.

Evite depender da ordem física:

INSERT INTO CLIENTE
VALUES (1001, 'Vagner Bellacosa', ...);

Esse formato pode funcionar, mas é mais frágil.

Se a estrutura mudar, o comando pode quebrar ou inserir valores na posição errada.

Em sistemas reais, também podemos inserir dados a partir de outra consulta:

INSERT INTO CLIENTE_HISTORICO
SELECT *
FROM CLIENTE
WHERE DATA_CADASTRO < DATE('2020-01-01');

Esse padrão é usado em:

  • arquivamento;

  • migração;

  • cargas;

  • histórico;

  • preparação de ambientes de teste.


5.2 UPDATE — corrigindo a rota

O UPDATE altera registros existentes.

UPDATE CLIENTE
SET SALDO = SALDO + 500
WHERE ID_CLIENTE = 1001;

O maior perigo está na ausência do WHERE.

UPDATE CLIENTE
SET SALDO = 0;

Esse comando zera o saldo de todos os clientes.

Em uma tabela pequena de laboratório, isso vira aprendizado.

Em produção, vira reunião de crise, incidente, auditoria, relatório executivo e talvez uma visita nada amistosa do almirante.

Antes de executar um UPDATE, uma técnica valiosa é testar o filtro com SELECT:

SELECT *
FROM CLIENTE
WHERE ID_CLIENTE = 1001;

Somente depois:

UPDATE CLIENTE
SET SALDO = SALDO + 500
WHERE ID_CLIENTE = 1001;

Essa pequena disciplina evita grandes tragédias.


5.3 DELETE — removendo registros

O DELETE elimina linhas.

DELETE FROM CLIENTE
WHERE ID_CLIENTE = 1001;

Novamente, cuidado com o WHERE.

DELETE FROM CLIENTE;

Remove todas as linhas.

Ao contrário do DROP, a estrutura permanece.

Ao contrário do TRUNCATE, o DELETE pode trabalhar seletivamente:

DELETE FROM LOG_APLICACAO
WHERE DATA_EVENTO < CURRENT_DATE - 365 DAYS;

Essa exclusão remove apenas registros antigos.

Em grandes volumes, pode ser necessário apagar em lotes para evitar:

  • crescimento excessivo de log;

  • locks prolongados;

  • contenção;

  • impacto em concorrência;

  • grandes unidades de trabalho;

  • dificuldade de recuperação.


5.4 MERGE — o oficial multifunção

O MERGE combina decisões de atualização e inserção.

A lógica é:

  • se o registro já existe, atualize;

  • se não existe, insira.

Exemplo conceitual:

MERGE INTO CLIENTE C
USING CLIENTE_CARGA N
ON C.ID_CLIENTE = N.ID_CLIENTE

WHEN MATCHED THEN
    UPDATE SET
        C.NOME  = N.NOME,
        C.EMAIL = N.EMAIL

WHEN NOT MATCHED THEN
    INSERT
    (
        ID_CLIENTE,
        NOME,
        EMAIL
    )
    VALUES
    (
        N.ID_CLIENTE,
        N.NOME,
        N.EMAIL
    );

O MERGE é muito utilizado em:

  • ETL;

  • sincronização;

  • replicação;

  • Data Warehouse;

  • cargas incrementais;

  • integração entre sistemas;

  • atualização de cadastros.

Ele evita a necessidade de executar primeiro um SELECT, depois decidir entre INSERT ou UPDATE na aplicação.

Menos viagens entre programa e banco podem significar melhor desempenho e lógica mais centralizada.


6. DQL — Data Query Language

DQL é a linguagem de consulta de dados.

Seu grande representante é o SELECT.

SELECT NOME, SALDO
FROM CLIENTE;

Mas o universo do SELECT é gigantesco.

Ele pode:

  • filtrar;

  • ordenar;

  • agrupar;

  • calcular;

  • combinar tabelas;

  • numerar linhas;

  • comparar períodos;

  • executar subconsultas;

  • criar resultados analíticos;

  • produzir indicadores;

  • alimentar relatórios;

  • apoiar decisões.


6.1 WHERE — ativando os sensores

O WHERE filtra linhas.

SELECT *
FROM CLIENTE
WHERE SALDO > 1000;

Sem WHERE, todas as linhas são consideradas.

Com WHERE, selecionamos apenas o conjunto necessário.

Operadores comuns:

=
<>
>
<
>=
<=
BETWEEN
IN
LIKE
IS NULL
EXISTS

Exemplo:

SELECT NOME
FROM CLIENTE
WHERE ESTADO IN ('SP', 'RJ', 'MG');

6.2 ORDER BY — organizando a formação

SELECT NOME, SALDO
FROM CLIENTE
ORDER BY SALDO DESC;

DESC significa decrescente.

ASC significa crescente.

Sem ORDER BY, não se deve assumir uma ordem garantida.

Mesmo que o banco pareça devolver sempre igual, isso pode mudar conforme:

  • plano de acesso;

  • índice;

  • paralelismo;

  • reorganização;

  • estatísticas;

  • versão do banco.

Resultado sem ORDER BY é como uma formação de naves sem comandante: pode parecer organizada até o momento em que tudo muda.


6.3 GROUP BY — agrupando frotas

SELECT ESTADO, COUNT(*) AS QUANTIDADE
FROM CLIENTE
GROUP BY ESTADO;

O GROUP BY reúne linhas por uma característica.

Funções agregadas comuns:

COUNT
SUM
AVG
MIN
MAX

Exemplo:

SELECT ESTADO,
       COUNT(*) AS CLIENTES,
       SUM(SALDO) AS SALDO_TOTAL
FROM CLIENTE
GROUP BY ESTADO;

6.4 JOIN — conectando sistemas estelares

O JOIN combina dados de tabelas relacionadas.

SELECT C.NOME,
       P.NUMERO_PEDIDO,
       P.VALOR
FROM CLIENTE C
INNER JOIN PEDIDO P
    ON P.ID_CLIENTE = C.ID_CLIENTE;

Sem JOIN, as informações permaneceriam separadas.

Tipos comuns:

  • INNER JOIN;

  • LEFT JOIN;

  • RIGHT JOIN;

  • FULL JOIN;

  • CROSS JOIN.

O INNER JOIN retorna correspondências.

O LEFT JOIN preserva todas as linhas da tabela da esquerda.

Exemplo:

SELECT C.NOME,
       P.NUMERO_PEDIDO
FROM CLIENTE C
LEFT JOIN PEDIDO P
    ON P.ID_CLIENTE = C.ID_CLIENTE;

Mesmo clientes sem pedidos aparecerão.


7. DCL — Data Control Language

DCL controla permissões.

Os principais comandos são:

GRANT
REVOKE

Em uma nave, nem todo tripulante pode:

  • acessar o reator;

  • disparar torpedos;

  • alterar o computador central;

  • consultar arquivos secretos;

  • iniciar a autodestruição.

No banco, também não deveria ser assim.


7.1 GRANT — concedendo autorização

GRANT SELECT
ON TABLE CLIENTE
TO USER ANALISTA01;

O usuário recebe autorização para consultar a tabela.

Também podemos conceder permissões como:

SELECT
INSERT
UPDATE
DELETE
ALTER
CONTROL
EXECUTE

O conjunto exato depende do produto.

Uma boa prática de segurança é o princípio do menor privilégio:

Conceda apenas o acesso necessário para executar a função.

Um analista que apenas consulta relatórios não precisa de permissão para apagar tabelas.


7.2 REVOKE — retirando autorização

REVOKE SELECT
ON TABLE CLIENTE
FROM USER ANALISTA01;

O acesso é removido.

Isso é importante quando:

  • alguém muda de função;

  • um contrato termina;

  • um usuário deixa a empresa;

  • uma aplicação é desativada;

  • uma permissão foi concedida indevidamente;

  • uma auditoria identifica excesso de privilégio.

No Db2 for z/OS, o controle de acesso pode envolver a interação entre autorizações do Db2 e mecanismos externos de segurança, como RACF, dependendo da arquitetura adotada.

Segurança de banco não deve ser tratada como um detalhe colocado no final do projeto.

Ela precisa nascer junto com a solução.


8. TCL — Transaction Control Language

TCL controla transações.

Os comandos mais conhecidos são:

COMMIT
ROLLBACK
SAVEPOINT

Esta é uma das partes mais importantes para quem desenvolve sistemas corporativos.


9. O que é uma transação?

Uma transação é uma unidade lógica de trabalho.

Imagine uma transferência bancária:

  1. retirar R$ 500 da conta A;

  2. adicionar R$ 500 à conta B;

  3. registrar o movimento;

  4. confirmar a operação.

Não podemos permitir que apenas metade aconteça.

Se o valor sair da conta A, mas não entrar na conta B, o sistema ficará inconsistente.

A transação deve ser tratada como um conjunto indivisível.

Ou tudo funciona.

Ou tudo é desfeito.


9.1 COMMIT — missão confirmada

O COMMIT confirma as alterações.

UPDATE CONTA
SET SALDO = SALDO - 500
WHERE NUMERO = 100;

UPDATE CONTA
SET SALDO = SALDO + 500
WHERE NUMERO = 200;

COMMIT;

Depois do COMMIT, a unidade de trabalho é concluída.

No Db2, o COMMIT também possui impacto em:

  • locks;

  • log;

  • concorrência;

  • recuperação;

  • cursores;

  • duração da unidade de trabalho.

Executar commits com pouca frequência pode criar transações gigantescas.

Executar commits a cada linha pode causar sobrecarga e comprometer a lógica da aplicação.

É necessário equilíbrio.


9.2 ROLLBACK — abortar missão

Se algo falhar:

ROLLBACK;

As alterações da unidade de trabalho são desfeitas.

Exemplo:

UPDATE CONTA
SET SALDO = SALDO - 500
WHERE NUMERO = 100;

-- Falha ao atualizar a conta de destino

ROLLBACK;

O saldo da conta de origem volta ao estado anterior.

O ROLLBACK é o botão de emergência.


9.3 SAVEPOINT — ponto de restauração

O SAVEPOINT cria um marco dentro da transação.

SAVEPOINT ETAPA_1 ON ROLLBACK RETAIN CURSORS;

A sintaxe varia conforme o banco.

Depois, pode ser possível retornar ao ponto:

ROLLBACK TO SAVEPOINT ETAPA_1;

Isso permite desfazer apenas parte do trabalho.

Imagine uma missão com cinco etapas.

Após a terceira, você cria um checkpoint.

Se a quinta falhar, pode voltar à terceira, em vez de reiniciar tudo.


10. As propriedades ACID

Transações confiáveis são frequentemente explicadas pelo acrônimo ACID.

Atomicidade

Ou tudo acontece, ou nada acontece.

A transferência bancária não pode ficar pela metade.

Consistência

A transação leva o banco de um estado válido para outro estado válido.

Regras e constraints devem ser preservadas.

Isolamento

Transações simultâneas não devem interferir de maneira incorreta umas nas outras.

Durabilidade

Após o COMMIT, os dados devem sobreviver a falhas.

ACID é uma das razões pelas quais bancos relacionais permanecem essenciais em sistemas financeiros, governamentais, industriais e corporativos.


11. DELETE, TRUNCATE e DROP: o trio das entrevistas

Essa comparação aparece constantemente.

DELETE

Remove linhas.

DELETE FROM CLIENTE
WHERE ESTADO = 'SP';
  • aceita WHERE;

  • pode remover algumas ou todas as linhas;

  • a tabela permanece;

  • normalmente participa de transações;

  • pode gerar trabalho de log linha a linha.

TRUNCATE

Esvazia a tabela.

TRUNCATE TABLE CLIENTE;
  • remove todas as linhas;

  • não usa WHERE;

  • preserva a estrutura;

  • costuma ser mais rápido;

  • possui particularidades conforme o banco.

DROP

Remove o objeto.

DROP TABLE CLIENTE;
  • remove estrutura;

  • remove dados;

  • pode afetar dependências;

  • exige extremo cuidado.

Resumo Bellacosa:

DELETE   = desembarcar alguns ou todos os tripulantes
TRUNCATE = esvaziar completamente a nave
DROP     = desmontar a nave no estaleiro

12. SQL dentro de um programa COBOL

No mundo mainframe, SQL pode aparecer embutido no COBOL.

Exemplo:

       EXEC SQL
           SELECT NOME,
                  SALDO
             INTO :WS-NOME,
                  :WS-SALDO
             FROM CLIENTE
            WHERE ID_CLIENTE = :WS-ID-CLIENTE
       END-EXEC.

As variáveis precedidas por : são host variables.

Elas fazem a ponte entre COBOL e SQL.

Após a execução, o programa deve verificar o SQLCODE ou SQLSTATE.

Exemplo:

       EVALUATE SQLCODE
           WHEN 0
               DISPLAY 'CLIENTE ENCONTRADO'
           WHEN 100
               DISPLAY 'CLIENTE NAO ENCONTRADO'
           WHEN OTHER
               DISPLAY 'ERRO SQL: ' SQLCODE
       END-EVALUATE.

Em muitos ambientes Db2:

  • SQLCODE = 0: sucesso;

  • SQLCODE = +100: nenhuma linha encontrada ou fim do cursor;

  • valor negativo: erro;

  • valor positivo diferente de 100: aviso ou condição específica.

Nunca ignore o SQLCODE.

Ignorar o retorno do banco é como ignorar um alerta vermelho na ponte porque o café ainda está quente.


13. Cursores em COBOL e Db2

Quando um SELECT retorna várias linhas, usamos cursor.

Fluxo tradicional:

  1. DECLARE CURSOR;

  2. OPEN;

  3. FETCH;

  4. repetir até SQLCODE +100;

  5. CLOSE.

Exemplo simplificado:

       EXEC SQL
           DECLARE C1 CURSOR FOR
           SELECT ID_CLIENTE,
                  NOME
             FROM CLIENTE
            ORDER BY ID_CLIENTE
       END-EXEC.

       EXEC SQL
           OPEN C1
       END-EXEC.

       PERFORM UNTIL SQLCODE = +100

           EXEC SQL
               FETCH C1
                INTO :WS-ID-CLIENTE,
                     :WS-NOME
           END-EXEC

           IF SQLCODE = 0
               DISPLAY WS-ID-CLIENTE ' ' WS-NOME
           END-IF

       END-PERFORM.

       EXEC SQL
           CLOSE C1
       END-EXEC.

O programador precisa entender o impacto do COMMIT sobre cursores.

Dependendo de como o cursor foi declarado, um COMMIT pode fechá-lo.

Uma opção conhecida é:

WITH HOLD

Exemplo:

DECLARE C1 CURSOR WITH HOLD FOR
SELECT ...

Isso pode preservar o cursor através de commits, respeitando as regras do Db2.


14. Cuidados com COMMIT em processamento batch

Imagine um programa COBOL que atualiza 10 milhões de registros.

Fazer um único COMMIT no final pode resultar em:

  • unidade de trabalho enorme;

  • crescimento de log;

  • locks prolongados;

  • dificuldade de restart;

  • grande rollback em caso de erro;

  • impacto em outros processos.

Por outro lado, fazer COMMIT a cada registro pode:

  • aumentar o custo;

  • reduzir desempenho;

  • dificultar consistência;

  • gerar excesso de pontos de sincronização.

Uma estratégia comum é confirmar em lotes:

a cada 1.000 registros
a cada 5.000 registros
a cada 10.000 registros

O número ideal depende de:

  • volume;

  • tempo de execução;

  • tamanho das linhas;

  • concorrência;

  • capacidade de log;

  • estratégia de restart;

  • requisitos de negócio;

  • janela batch.

Não existe um número mágico universal.

O profissional experiente mede, testa e conversa com DBA, produção e arquitetura.


15. Passo a passo para praticar SQL

Vamos montar uma pequena estação de treinamento.

Passo 1 — criar a tabela

CREATE TABLE TRIPULANTE
(
    ID_TRIPULANTE INTEGER NOT NULL,
    NOME          VARCHAR(100) NOT NULL,
    POSTO         VARCHAR(50),
    NAVE          VARCHAR(50),
    CREDITOS      DECIMAL(10,2),
    PRIMARY KEY (ID_TRIPULANTE)
);

Passo 2 — inserir registros

INSERT INTO TRIPULANTE
VALUES
(1, 'James Kirk', 'Capitao', 'Enterprise', 5000.00);

INSERT INTO TRIPULANTE
VALUES
(2, 'Spock', 'Oficial de Ciencia', 'Enterprise', 4800.00);

INSERT INTO TRIPULANTE
VALUES
(3, 'Montgomery Scott', 'Engenheiro Chefe', 'Enterprise', 4500.00);

Passo 3 — consultar

SELECT *
FROM TRIPULANTE;

Passo 4 — filtrar

SELECT NOME, POSTO
FROM TRIPULANTE
WHERE CREDITOS > 4600;

Passo 5 — atualizar

UPDATE TRIPULANTE
SET CREDITOS = CREDITOS + 500
WHERE ID_TRIPULANTE = 3;

Passo 6 — confirmar

COMMIT;

Passo 7 — testar rollback

UPDATE TRIPULANTE
SET CREDITOS = 0;

ROLLBACK;

Após o rollback, os créditos devem retornar ao estado anterior.

Passo 8 — adicionar coluna

ALTER TABLE TRIPULANTE
ADD COLUMN PLANETA_ORIGEM VARCHAR(50);

Passo 9 — conceder acesso

GRANT SELECT
ON TABLE TRIPULANTE
TO USER CADETE01;

Passo 10 — remover um registro

DELETE FROM TRIPULANTE
WHERE ID_TRIPULANTE = 3;

Esse laboratório apresenta praticamente todas as categorias principais.


16. Erros clássicos do SQL Padawan

Executar UPDATE sem WHERE

UPDATE FUNCIONARIO
SET SALARIO = 1000;

Todos os salários serão alterados.

Executar DELETE sem WHERE

DELETE FROM FUNCIONARIO;

Todos os registros serão removidos.

Usar SELECT *

SELECT *
FROM CLIENTE;

É útil para testes, mas em programas e consultas profissionais pode trazer colunas desnecessárias, aumentar tráfego e criar dependências frágeis.

Prefira:

SELECT ID_CLIENTE,
       NOME,
       EMAIL
FROM CLIENTE;

Não tratar NULL

NULL não é zero.

NULL não é espaço.

NULL significa ausência de valor conhecido.

Isto está errado:

WHERE EMAIL = NULL

O correto é:

WHERE EMAIL IS NULL

Ignorar transações

Atualizar tabelas relacionadas sem pensar em COMMIT e ROLLBACK é um convite à inconsistência.

Ignorar o plano de acesso

Uma consulta correta pode ser lenta.

É preciso compreender:

  • índices;

  • estatísticas;

  • cardinalidade;

  • joins;

  • filtros;

  • ordenações;

  • acesso por tabela ou índice;

  • custo estimado.

No Db2, EXPLAIN é uma ferramenta essencial nessa jornada.


17. Curiosidades do universo SQL

SQL já foi chamado de SEQUEL

A linguagem desenvolvida inicialmente na IBM era associada ao nome SEQUEL, de Structured English Query Language.

Por razões relacionadas a marca, o nome foi encurtado para SQL.

Por isso algumas pessoas pronunciam:

“és-quê-éle”

e outras:

“síquel”.

Ambas as formas aparecem no mercado.

SQL é declarativo

Você descreve o resultado, não necessariamente o caminho.

SELECT NOME
FROM CLIENTE
WHERE ID_CLIENTE = 100;

Você não manda o banco:

  • abrir o índice;

  • ir à página;

  • localizar a linha;

  • carregar a coluna.

O otimizador decide o plano.

SELECT pode não pertencer à DQL em todas as classificações

Algumas referências tratam SELECT como parte da DML.

A classificação DQL é muito usada em materiais didáticos, mas não representa uma verdade absoluta e universal.

Nem todo comando existe igualmente em todo banco

A sintaxe e o comportamento variam entre:

  • Db2;

  • Oracle;

  • PostgreSQL;

  • SQL Server;

  • MySQL;

  • MariaDB;

  • SQLite.

Aprenda o conceito e depois confirme a implementação.


18. Como entrevistas cobram esses conhecimentos

O entrevistador raramente quer apenas ouvir a lista:

DDL, DML, DQL, DCL e TCL.

Ele quer perceber se você entende situações reais.

Perguntas possíveis:

Qual a diferença entre DELETE, TRUNCATE e DROP?

Responda considerando:

  • linhas;

  • estrutura;

  • filtro;

  • log;

  • transação;

  • desempenho;

  • impacto.

O que acontece se um UPDATE não tiver WHERE?

Todas as linhas elegíveis serão atualizadas.

Por que não fazer um único COMMIT em um batch gigantesco?

Pode gerar unidade de trabalho extensa, locks, log elevado, rollback demorado e dificuldade de restart.

Quando usar MERGE?

Quando é necessário inserir registros inexistentes e atualizar os já existentes com base em uma condição.

Qual a função do GRANT?

Conceder privilégios sobre objetos ou operações.

O que significa SQLCODE +100?

Em muitos cenários Db2, indica que nenhuma linha foi encontrada ou que o cursor chegou ao final.

Por que um índice pode melhorar o SELECT e prejudicar o INSERT?

O índice acelera algumas buscas, mas precisa ser mantido a cada inserção, atualização ou exclusão.

Essa última pergunta já mostra que banco de dados é uma disciplina de equilíbrio.


19. O caminho depois dos comandos básicos

Após dominar as famílias SQL, avance para:

  1. filtros e operadores;

  2. funções escalares;

  3. agregações;

  4. joins;

  5. subqueries;

  6. CTEs;

  7. window functions;

  8. views;

  9. constraints;

  10. índices;

  11. transações;

  12. níveis de isolamento;

  13. locking;

  14. deadlocks;

  15. EXPLAIN;

  16. otimização;

  17. stored procedures;

  18. triggers;

  19. particionamento;

  20. segurança e auditoria.

Não tente aprender tudo em um único warp.

A evolução acontece em camadas.

Primeiro, compreenda o que cada comando faz.

Depois, entenda quando deve ser usado.

Em seguida, estude o impacto.

Finalmente, aprenda a operar em escala.


20. Easter egg: o protocolo Kobayashi Maru do SQL

Existe um teste não oficial que todo programador enfrenta em algum momento.

Você está conectado em uma base.

Recebe a tarefa:

“Corrigir apenas um registro.”

Digita:

UPDATE CLIENTE
SET STATUS = 'INATIVO';

E percebe, um segundo depois, que esqueceu o WHERE.

Este é o Kobayashi Maru do SQL.

A diferença é que, neste teste, existe uma chance de sobrevivência:

  • não faça COMMIT;

  • execute ROLLBACK;

  • respire;

  • valide os dados;

  • revise o processo;

  • nunca mais atualize antes de testar o filtro com SELECT.

Kirk trapaceou no Kobayashi Maru.

O programador SQL aprende a usar transações.


Conclusão — Da primeira consulta ao comando da ponte

SQL não é apenas uma coleção de comandos.

É uma forma estruturada de pensar sobre dados.

DDL constrói o universo.

DML movimenta seus habitantes.

DQL observa e interpreta.

DCL protege as fronteiras.

TCL mantém a linha temporal consistente.

Para o programador COBOL, dominar essas categorias significa compreender melhor como as aplicações corporativas realmente funcionam.

Um programa não vive sozinho.

Ele depende de tabelas, índices, permissões, locks, transações, logs, packages, planos de acesso, unidades de trabalho e mecanismos de recuperação.

O iniciante memoriza:

SELECT
INSERT
UPDATE
DELETE

O profissional pergunta:

  • Quantas linhas serão afetadas?

  • Existe índice adequado?

  • O filtro está correto?

  • Qual será o nível de isolamento?

  • Quando ocorrerá o COMMIT?

  • Como o processo será reiniciado?

  • O usuário possui autorização?

  • Qual será o impacto sobre outros sistemas?

  • O programa está tratando o SQLCODE?

  • Existe uma estratégia de rollback?

Essa é a diferença entre escrever SQL e entender SQL.

Comece com uma tabela pequena.

Faça inserts.

Teste updates.

Use rollback.

Crie uma coluna.

Conceda uma permissão.

Abra um cursor em COBOL.

Observe o SQLCODE.

Depois repita.

O conhecimento não vem de decorar uma imagem com cinco caixas coloridas. Ele nasce quando você executa, erra em laboratório, investiga o comportamento e compreende por que cada comando existe.

E lembre-se, Padawan:

Um SELECT mostra o que existe.
Um INSERT cria um novo registro.
Um UPDATE muda a realidade.
Um DELETE apaga evidências.
Um COMMIT sela a linha do tempo.

Portanto, antes de pressionar Enter, confira o WHERE.

A Frota Estelar agradece. 

sexta-feira, 30 de agosto de 2019

☕🔥 “KONOSUBA: LEGEND OF CRIMSON” — O FILME ONDE O DATACENTER DAS EXPLOSÕES ENTROU EM OVERCLOCK E QUASE DESTRUIU O MUNDO 💀🖥️

 

Bellacosa Mainframe e Konosuba o filme

☕🔥 “KONOSUBA: LEGEND OF CRIMSON” — O FILME ONDE O DATACENTER DAS EXPLOSÕES ENTROU EM OVERCLOCK E QUASE DESTRUIU O MUNDO 💀🖥️


☕📚 INFORMAÇÕES GERAIS

📖 Título Original

Kono Subarashii Sekai ni Shukufuku wo! Kurenai Densetsu
(この素晴らしい世界に祝福を!紅伝説)

🌍 Título Internacional

KonoSuba: God's Blessing on This Wonderful World! Legend of Crimson

✍️ Autor Original

Natsume Akatsuki

🎨 Ilustrador da Light Novel

Kurone Mishima

🏢 Estúdio

J.C.STAFF

📅 Data de Lançamento

  • Japão: 30 de Agosto de 2019

⏱️ Duração

  • Aproximadamente 90 minutos

🎭 Gêneros

  • Isekai

  • Fantasy

  • Comédia

  • Aventura

  • Paródia

  • Romance cômico

🔞 Classificação

16+
por conter:

  • humor adulto,

  • fanservice,

  • violência cômica,

  • linguagem sugestiva,

  • piadas absurdas.


☕🖥️ O FILME — QUANDO O “SERVIDOR DAS EXPLOSÕES” ENTROU EM COLAPSO TOTAL

Legend of Crimson não é apenas um filme.

É praticamente:

“um incidente crítico de produção envolvendo magia nuclear, usuários avançados emocionalmente instáveis e um datacenter medieval construído por lunáticos.”

O longa pega tudo que KONOSUBA fazia bem:

  • caos,

  • vergonha alheia,

  • explosões,

  • sarcasmo,

  • personagens quebrados…

e aumenta tudo para níveis absurdos.

Mas existe algo importante:
esse filme aprofunda Megumin de uma forma que a série nunca tinha feito.


☕📖 SINOPSE

Após receber uma carta alarmante, Megumin descobre que sua vila natal — a lendária Vila dos Crimson Demons — pode estar ameaçada.

Kazuma, Aqua, Darkness e Megumin então viajam até a região.

O problema?

A vila inteira é composta por pessoas tão problemáticas quanto Megumin.

Resultado:

  • explosões,

  • delírios de grandeza,

  • poses dramáticas,

  • cientistas mágicos irresponsáveis,

  • e uma quantidade criminosa de energia caótica.

É como:

visitar o datacenter principal e descobrir que TODOS os administradores são iguais à Megumin.


☕🔥 O GRANDE DIFERENCIAL DO FILME

A série sempre tratou Megumin como:

  • engraçada,

  • excêntrica,

  • obcecada por Explosion.

O filme finalmente mostra:

  • sua origem,

  • sua insegurança,

  • sua família,

  • sua cultura,

  • e o motivo psicológico por trás da obsessão.

Pela primeira vez:
KONOSUBA mistura:

  • comédia absurda,

  • crescimento emocional,

  • romance leve,

  • e identidade pessoal.

O filme é:

“a auditoria completa do sistema operacional da Megumin.”


☕🧠 A HISTÓRIA — O CLÃ MAIS INSTÁVEL DA FANTASIA

A Vila dos Crimson Demons parece ter sido criada por:

  • roteiristas sem supervisão,

  • engenheiros sem limites,

  • e operadores apaixonados por scripts perigosos.

Todos os habitantes:

  • falam de forma teatral,

  • fazem poses dramáticas,

  • criam nomes absurdos,

  • e se comportam como protagonistas de anime o tempo inteiro.

É uma sátira maravilhosa:

  • da cultura chuuni,

  • do exagero anime,

  • e da romantização do poder absoluto.

O mais genial?
Megumin, que parecia única…
na verdade era:

a pessoa MAIS normal da vila.


☕💣 MEGUMIN — O “SCRIPT NUCLEAR” MAIS HUMANO DA FRANQUIA

O filme transforma Megumin em uma personagem muito mais profunda.

Antes:
ela era apenas:

  • a maga explosiva engraçada.

Agora entendemos:

  • seu orgulho,

  • insegurança,

  • necessidade de reconhecimento,

  • e ligação emocional com Explosion.

Explosion deixa de ser apenas piada.

Ela vira:

a identidade emocional da personagem.

Megumin acredita que:

  • abrir mão de Explosion
    seria:

  • abrir mão de quem ela é.

Isso é brilhante.

Porque o filme fala sobre:

identidade pessoal em um mundo que exige eficiência.


☕🖥️ KAZUMA — O OPERADOR QUE FINALMENTE ENTENDE SUA PARTY

Kazuma continua:

  • sarcástico,

  • preguiçoso,

  • estrategista,

  • emocionalmente cansado.

Mas o filme mostra um lado mais humano dele.

Principalmente:

  • na relação com Megumin,

  • no respeito pelas inseguranças dela,

  • e na maneira como ele apoia sua decisão final.

Kazuma percebe algo importante:

pessoas não são apenas “builds eficientes”.

Elas também precisam:

  • sonhos,

  • identidade,

  • orgulho,

  • e propósito emocional.


☕💧 AQUA — O SISTEMA DIVINO MAIS BARULHENTO DA HISTÓRIA

Aqua continua sendo:

  • caótica,

  • inútil em situações simples,

  • e uma máquina ambulante de incidentes.

Mas o filme reforça algo clássico de KONOSUBA:
ela frequentemente salva situações absurdas sem perceber.

Ela representa:

sistemas legados absurdamente poderosos administrados sem documentação.


☕⚔️ DARKNESS — O FIREWALL NOBRE EM SURTO OPERACIONAL

Darkness continua trazendo:

  • humor masoquista,

  • caos social,

  • e colapsos emocionais.

Mas no filme ela também ajuda a equilibrar:

  • tensão,

  • ação,

  • e dinâmica do grupo.

A party funciona porque:
ninguém ali é normal.


☕👿 SYLVIA — O “MALWARE” MAIS ABSURDO DO UNIVERSO KONOSUBA

Sylvia é uma antagonista perfeita para o filme.

Ela mistura:

  • ameaça real,

  • humor grotesco,

  • exagero absoluto,

  • e caos visual.

Sua presença faz o filme parecer:

um ataque cibernético mágico em larga escala.

E ao contrário de muitos vilões genéricos:
ela é memorável justamente por ser ridiculamente exagerada.


☕🎨 O STUDIO J.C.STAFF — O UPGRADE VISUAL DO DATACENTER

O filme teve produção do:

☕🎨 J.C.STAFF

E a diferença visual é enorme.

O longa possui:

  • animação mais fluida,

  • explosões cinematográficas,

  • iluminação mais refinada,

  • direção de ação superior,

  • e cenas muito mais ambiciosas.

Mas o mais importante:
ele preserva completamente:

  • o timing cômico,

  • as expressões exageradas,

  • e a identidade caótica da franquia.

É:

um upgrade de infraestrutura sem perder compatibilidade com o sistema legado.


☕🧩 TEMÁTICAS ESCONDIDAS

☕💀 1. IDENTIDADE VS EFICIÊNCIA

O filme pergunta:

vale abandonar quem você é para se tornar mais eficiente?

Megumin poderia aprender outras magias.
Mas isso destruiria sua identidade.

É uma metáfora poderosa sobre:

  • individualidade,

  • vocação,

  • paixão,

  • e autenticidade.


☕🖥️ 2. A FAMÍLIA COMO ORIGEM DO CAOS

A vila inteira explica:
por que Megumin é daquele jeito.

O filme mostra:

  • heranças emocionais,

  • cultura familiar,

  • influência social,

  • e pertencimento.


☕🔥 3. O VALOR DAS IMPERFEIÇÕES

Kazuma entende algo essencial:

  • eficiência não é tudo.

Pessoas precisam:

  • sonhos,

  • orgulho,

  • excentricidade,

  • e significado emocional.

KONOSUBA sempre defendeu isso.

Mas o filme torna essa mensagem explícita.


☕🌍 IMPACTO CULTURAL

Legend of Crimson foi enorme para a franquia.

O filme:

  • consolidou Megumin como ícone absoluto,

  • fortaleceu o fandom,

  • expandiu o romance Kazuma/Megumin,

  • e mostrou que KONOSUBA funcionava perfeitamente no cinema.

As cenas de Explosion viraram:

  • memes,

  • edits,

  • wallpapers,

  • referências culturais otaku.

O longa ajudou a manter a franquia viva durante os anos sem anime principal.


☕🏆 CONCLUSÃO — O FILME QUE TRANSFORMOU EXPLOSÕES EM FILOSOFIA OPERACIONAL

Legend of Crimson é:

  • engraçado,

  • caótico,

  • emocional,

  • visualmente explosivo,

  • e surpreendentemente humano.

No fundo…
o filme fala sobre:

continuar sendo você mesmo mesmo quando o mundo exige otimização.

Megumin escolhe Explosion.
Não porque é eficiente.
Mas porque:

  • ela ama aquilo,

  • aquilo define sua identidade,

  • e abandonar isso significaria abandonar a si mesma.

E assim…
KONOSUBA entrega algo inesperado:

uma reflexão sobre individualidade escondida dentro de um datacenter medieval operado por lunáticos obcecados por explosões mágicas.

sábado, 24 de agosto de 2019

Sempre um Isekai : O Isekai e o Contrato Social Quebrado – Parte VII

 

Bellacosa Mainframe e a quebra do contrato social parte vii

☕ Um Café no Bellacosa Mainframe

O Isekai e o Contrato Social Quebrado – Parte VII

Quando um Programador COBOL Descobre que Talvez Nunca Tenhamos Querido Fugir para Outro Mundo... Apenas Recuperar Este

Depois de seis capítulos falando sobre trabalho, impostos, burnout, Truck-kun, guildas, salarymen e contratos sociais, cheguei a uma conclusão inesperada.

Talvez tenhamos feito a pergunta errada o tempo todo.

A pergunta nunca foi:

"Por que as pessoas gostam tanto de isekai?"

A verdadeira pergunta talvez seja outra.

"O que aconteceu com o nosso mundo para que tanta gente prefira viver em um mundo que nem existe?"

Essa mudança de perspectiva altera completamente a conversa.

Porque, pela primeira vez, o problema deixa de ser a fantasia.

E passa a ser a realidade.


O Portal Nunca Foi a Solução

Imagine que amanhã alguém realmente abrisse um portal.

Do outro lado...

Existe um reino medieval.

Elfas.

Anões.

Dragões.

Magia.

Guildas.

Castelos.

Você pisaria lá?

Talvez.

Mas depois de alguns dias provavelmente sentiria falta de muitas coisas.

Da água quente.

Da medicina.

Do café passado na hora.

Da internet.

Da família.

Da pizza de sexta-feira.

Do cachorro abanando o rabo quando você chega em casa.

Percebe?

Nós não queremos abandonar tudo.

Queremos abandonar apenas aquilo que nos machuca.


O Grande Equívoco

Durante anos ouvimos uma frase.

"Trabalhe duro que tudo dará certo."

Milhões de pessoas acreditaram nela.

Estudaram.

Fizeram faculdade.

Pós-graduação.

MBA.

Certificações.

Cursos.

Idiomas.

Treinamentos.

Especializações.

Depois descobriram que a equação era muito mais complicada.

Esforço continua sendo importante.

Mas ele não controla sozinho o resultado.

Existem fatores econômicos.

Mudanças tecnológicas.

Crises.

Inflação.

Políticas públicas.

Mercado.

O trabalhador percebe, então, que dedicação é necessária, mas nem sempre suficiente para garantir o futuro imaginado.


O Programador Conhece Esse Erro

Todo desenvolvedor já passou por isso.

Você segue exatamente a documentação.

Executa todos os passos.

Compila sem erro.

O programa entra em produção.

Mesmo assim...

O resultado está errado.

Não porque você programou mal.

Mas porque a regra do negócio mudou.

Muitos trabalhadores sentem exatamente isso.

Eles executaram corretamente o algoritmo ensinado pela sociedade.

Mas a especificação foi alterada enquanto o programa já estava rodando.


O Que Perdemos Pelo Caminho?

Ganhos tecnológicos?

Inúmeros.

Vivemos mais.

Temos melhor medicina.

Mais conhecimento.

Mais comunicação.

Mais conforto.

Mas será que perdemos alguma coisa no caminho?

Tempo.

Silêncio.

Comunidade.

Pertencimento.

Previsibilidade.

Confiança.

Talvez seja isso que sentimos falta.


O Reino Não é Melhor

Ele Apenas Parece Mais Humano

Se analisarmos friamente.

Um mundo medieval seria duríssimo.

Fome.

Doenças.

Guerras.

Violência.

Vida curta.

Então...

Por que continua atraente?

Porque os isekais não vendem o mundo medieval.

Eles vendem relações humanas.

Na taverna todos conversam.

Na guilda todos se conhecem.

Na vila todos ajudam.

Existe espaço para amizade.

Para reconhecimento.

Para pertencimento.

São necessidades profundamente humanas.


O Dinheiro Nunca Foi o Único Problema

Claro.

Salário importa.

Impostos importam.

Inflação importa.

Aposentadoria importa.

Tudo isso faz diferença.

Mas talvez exista algo ainda mais importante.

A sensação de que sua vida possui significado.

Existem pessoas extremamente bem remuneradas vivendo em burnout.

E pessoas com renda modesta profundamente felizes.

O dinheiro resolve muitos problemas.

Mas não resolve todos.


O Verdadeiro Sistema de RPG

Percebi algo curioso.

Nossa sociedade também possui níveis.

Infância.

Escola.

Faculdade.

Primeiro emprego.

Casamento.

Filhos.

Casa.

Aposentadoria.

É quase uma árvore de habilidades.

A diferença é que ninguém mostra a barra de experiência.

Ninguém explica quanto falta para subir de nível.

E, às vezes, parece que completamos todas as missões...

...mas o personagem continua parado.


Talvez Estejamos Procurando a Missão Errada

Nos isekais.

Existe sempre um objetivo.

Salvar o reino.

Derrotar o Rei Demônio.

Reconstruir uma vila.

Fundar uma cidade.

No mundo moderno.

Muita gente trabalha décadas sem conseguir responder uma pergunta simples.

"Para quê?"

Essa ausência de propósito talvez seja uma das maiores dores da vida contemporânea.


O Que Aconteceria Se o Portal Abrisse?

Essa pergunta me acompanhou durante toda a série.

Se amanhã aparecesse um círculo mágico diante de mim.

Um sacerdote dissesse:

— Venha salvar nosso mundo.

Eu responderia.

— Posso fazer uma pergunta antes?

Existe aposentadoria?

Existe imposto sobre espada mágica?

O Rei muda as regras da guilda depois que completei trinta e cinco anos de missões?

Preciso responder pergaminhos corporativos no domingo?

Existe reunião às cinco da tarde de sexta-feira?

O tesoureiro desconta contribuição previdenciária da recompensa por derrotar dragões?

Se a resposta fosse "sim"...

Talvez eu ficasse por aqui mesmo.


Bellacosa Mainframe

Depois de escrever esta série inteira, percebi uma ironia quase poética.

Nós nunca tivemos tanta tecnologia.

Nunca produzimos tanto.

Nunca aprendemos tão rápido.

Nunca estivemos tão conectados.

E, ao mesmo tempo, nunca vimos tantas pessoas perguntando silenciosamente:

"É só isso?"

Talvez o sucesso do isekai não revele um desejo de abandonar a Terra.

Revele um desejo muito mais profundo.

Recuperar uma vida onde o trabalho tenha sentido.

Onde os impostos sejam percebidos como parte de um pacto justo entre cidadão e Estado.

Onde o esforço tenha uma relação mais clara com a recompensa.

Onde as regras não mudem no meio da jornada.

Onde exista tempo para amar.

Para descansar.

Para criar.

Para envelhecer com dignidade.

Talvez ninguém queira realmente morar numa taverna medieval.

Nem enfrentar um dragão.

Nem dormir ao relento.

O que queremos é infinitamente mais simples.

Queremos voltar a acreditar que vale a pena acordar na segunda-feira.

Porque, no fundo...

O maior portal mágico não é aquele que leva para outro mundo.

É aquele que nos permite olhar para este mundo e dizer:

"Agora sim... este lugar também pode ser chamado de lar."


Epílogo do Programador COBOL

No mainframe existe um princípio interessante.

Quando um sistema começa a apresentar erros repetitivos, não adianta apenas reiniciar a máquina.

É preciso investigar a causa.

Corrigir a lógica.

Revisar as regras.

Eliminar a origem do problema.

Talvez nossa sociedade esteja tentando fazer exatamente o contrário.

Continuamos pedindo que as pessoas reiniciem.

Façam outro curso.

Trabalhem mais.

Produzam mais.

Se adaptem mais.

Enquanto esquecemos de revisar o programa principal.

E talvez seja por isso que milhões de pessoas continuam sonhando com um portal mágico.

Não porque desistiram da realidade.

Mas porque ainda acreditam que um mundo melhor é possível.

A única diferença...

É que, em vez de construí-lo aqui...

Estamos procurando por ele do outro lado de um círculo de invocação.

☕ UM CAFÉ NO BELLACOSA MAINFRAME

O Isekai e o Contrato Social Quebrado

Quando um Programador COBOL Descobre que Talvez Nunca Tenhamos Querido Fugir para Outro Mundo... Apenas Entender Este.

PRIMEIRA REGRA DO PORÃO NENHUM ARTIGO DEVE FICAR ESCONDIDO DOS LEITORES

Entre nesta série sobre trabalho, impostos, burnout, sociedade, salarymen, guildas, promessas quebradas e o verdadeiro significado da fuga para mundos paralelos. Escolha um capítulo, abra a prévia ou leia diretamente no Bellacosa Mainframe.

00
SYSTEM DIAGNOSIS

O Verdadeiro Rei Demônio Talvez Seja o Holerite

Quando um Programador COBOL Descobre que o Isekai Não Vende Magia... Vende um Mundo Onde o Esforço Ainda Vale Alguma Coisa.

Uma introdução à relação entre o sucesso do gênero isekai, a exaustão do trabalhador moderno, os descontos no salário, a perda de propósito e o desejo de recomeçar em outro mundo.

HOLERITE TRABALHO ISEKAI CONTRATO SOCIAL
Ler artigo completo ↗
01
CONTRACT ABEND

O Isekai e o Contrato Social Quebrado — Parte I

Quando um Programador COBOL Descobre que Talvez o Verdadeiro Bug Nunca Tenha Estado no Código... Mas na Promessa Feita ao Trabalhador.

A promessa de trabalhar, contribuir, construir uma carreira e receber segurança no futuro começa a apresentar falhas de processamento.

CONTRATO SOCIAL APOSENTADORIA DIGNIDADE
Ler artigo completo ↗
02
ECONOMY IPL

O Isekai e o Contrato Social Quebrado — Parte II

Quando um Programador COBOL Descobre que os Anos 1990 Talvez Tenham Sido o Grande IPL da Economia Mundial... e Nem Todos os JOBs Voltaram a Executar.

Globalização, tecnologia, automação, terceirização e produtividade reinicializaram a economia mundial, mas muitos trabalhadores ficaram aguardando uma resposta do sistema.

ANOS 1990 GLOBALIZAÇÃO AUTOMAÇÃO
Ler artigo completo ↗
03
MISSION ACCEPTED

O Isekai e o Contrato Social Quebrado — Parte III

Quando um Programador COBOL Descobre que a Guilda dos Aventureiros Talvez Tenha um RH Muito Melhor que o Nosso.

Na guilda existem missões claras, riscos conhecidos, recompensas publicadas e liberdade para escolher o próximo trabalho. No escritório moderno, nem sempre.

GUILDA RH RECOMPENSA
Ler artigo completo ↗
04
CANCEL JOB

O Isekai e o Contrato Social Quebrado — Parte IV

Quando um Programador COBOL Descobre que o Truck-kun Nunca Foi um Caminhão... Mas um Botão de CANCEL JOB para uma Geração Inteira.

Truck-kun representa a interrupção brutal de uma vida repetitiva, exausta e sem perspectiva. Um símbolo sombrio do desejo de cancelar a rotina e recomeçar.

TRUCK-KUN BURNOUT CANCEL JOB
Ler artigo completo ↗
05
SALARYMAN MODE

O Isekai e o Contrato Social Quebrado — Parte V

Quando um Programador COBOL Descobre que Quase Todo Protagonista de Isekai é um Salaryman... e Isso Está Muito Longe de Ser Coincidência.

Programadores, funcionários de escritório e trabalhadores invisíveis protagonizam histórias de recomeço porque representam milhões de pessoas presas em rotinas semelhantes.

SALARYMAN ESCRITÓRIO PROPÓSITO
Ler artigo completo ↗
06
TIME AVAILABLE

O Isekai e o Contrato Social Quebrado — Parte VI

Quando um Programador COBOL Descobre que Talvez o Verdadeiro Feitiço do Isekai Não Seja a Magia... Mas o Tempo para Viver.

O maior luxo de um mundo fantástico talvez não seja lançar feitiços, mas ter tempo para conversar, descansar, conviver, caminhar e participar de uma comunidade.

TEMPO COMUNIDADE QUALIDADE DE VIDA
Ler artigo completo ↗
07
RETURN CODE 00

O Isekai e o Contrato Social Quebrado — Parte VII

Quando um Programador COBOL Descobre que Talvez Nunca Tenhamos Querido Fugir para Outro Mundo... Apenas Recuperar Este.

A conclusão da série propõe que talvez o verdadeiro sonho nunca tenha sido abandonar o mundo real, mas recuperar dignidade, propósito, tempo, comunidade e esperança.

ESPERANÇA RECONSTRUÇÃO FUTURO
Ler artigo completo ↗
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...