Pesquisar este blog

Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens

sábado, 17 de junho de 2023

Prova de conceito - POC - Jogo passa fase tipo Mario - Da pra fazer jogo sem saber nada de nada, só precisa de tempo e dedicação!

Achados de Backup: Prova de Conceito de um Jogo

Sempre bom dar uma vasculhada nos backups, as vezes achamos coisas bem interessantes!

Não consegui lembrar sequer o nome do programa que me possibilitou a criação dessa maravilha da tecnologia!

Da pra fazer jogo sem saber nada de nada, só precisa de tempo e dedicação!


Video 1 : Prova de Conceito

O pacote com o 'jogo'

https://drive.google.com/file/d/1ksC0HJBei3hpJ-psqVj0xjzsLEgIVGSw/view?usp=drive_link



O programa que criou essa maravilha foi o 

MMF2 - Multimedia Fusion 2

abri o pacote com o jogo no programa demo (download ai acima) e separei o 'fonte', ficou aqui

https://drive.google.com/file/d/13DCyWp2SLZcYkc5zOSQ_svYpPn4TCLmu/view?usp=sharing

segunda-feira, 18 de julho de 2022

Quando eu passei duas vezes no concurso do Banco do Brasil

E não é que eu nem lembrava que tinha passado duas vezes no concurso do BB ?!?!!?!

O site que mostra a aprovação é o

https://www37.bb.com.br/portalbb/resultadoConcursos/resultadoconcursos/arh0_lista.bbx?cid=730565

Captura de tela de minha dupla aprovação no Banco do Brasil
Figura1: Aprovado no BB duas vezes!

O texto que escrevi ta aqui embaixo,... -------------------------------------------------------------------------------------------------------------------------------------------------------...

Ia ser uma publicacao normal, mas nao rolou porque passa da quantidade de caracteres que a plataforma do linkedin permite...

A Ju conversou comigo hoje cedo sobre sair de um emprego e depois voltar pra ele, acabei divagando aqui na conversa e me afloraram algumas memorias que vou registrar pra não esquecer.

Consegui lembrar que vivi essa situação ao menos uma vez, quando prestei serviço pra IBM e voltei depois de um breve periodo na CI&T, que até hoje ainda não sei ao certo porque pedi pra sair e que é disparado a melhor firma que trabalhei, pode perguntar pro meu filho Vinicius e pro proprio dono, o Cesar Gon, que quando me desliguei, fiz questão de achar ele pra dizer isso pessoalmente!

As minhas passagens pela IBM foram tranquilas, tenho amigos que levo até hoje, ontem mesmo troquei ideia com a Greicy que esta lá no Banco Itaú há quase 5 anos, me peguei pensando que o tempo voa... quando dei um trampo lá no CTO do Itaú almoçei com ela e isso ja deve fazer uns bons 3 - 4 anos.

Na CI&T arrumei amigos novos, e reencontrei muitos outros que eu tinha trabalhado na sede da Stefanini em Jaguariuna, aqui do lado de casa, que foi o meu primeiro trabalho fora do mundo do funcionalismo público, valeu Valfredo, pela oportunidade!

Lembrei tambem de um caso muito peculiar e inusitado, eu um xóven com seus 20 e poucos anos, trabalhava feliz e contente na agencia Barão de Itapura do Banco do Brasil aqui em Campinas, um dia o gerente saiu pra ir seilá pra onde... e coincidencias da vida e parafraseando o poeta 'a gente sempre se encontra duas vezes na vida' e o mundo é pequeno; hoje trabalho de novo com ele no Banco Original.

O gerente que entrou no lugar não era um cara facil de lidar, cobranças descabidas, criticas na frente de todos, metas irreais, obrigação de fazer horas extras... não era só um sentimento meu, era geral. Eu me ferrei com o chefe novo, logo que ele chegou resolveu trocar meu horario, eu tava de boinha trabalhando minhas 6 horinhas de jornada de bancario, do meio dia as 18:15, conseguia ir pra Unicamp nas aulas de manha e de noite.

Com o passar do tempo a galera foi saindo, saindo leia-se trocando de agencia, eu tentei, tentei muito, mas não rolava, à época, o Amarelinho não tinha um processo claro para movimentação de funcionario sem comissão, que era meu caso, escrevi pra gestao de pessoas regional, nacional e pro diretor de pessoas, nada de alguem me ajudar.

Ai dei uma sorte daquelas e achei a solução, eu mesmo! Fui fazer o concurso de novo do Banco do Brasil e pensei que se eu passasse deveriam me chamar pra alguma agencia aqui da região, eu estava topando qualquer parada, tava muito ruim o clima na agencia e meu trabalho em si.

Hoje a galera chama a situação que eu vivi de "ambiente tóxico de trabalho" e "assedio moral", lembrei que até meu poster do matrix que eu tinha no meu cafofo lá na agencia o gerente novo mandou tirar.

Enfim, passei no concurso, mas antes de me chamarem pra tomar posse eu consegui uma transferencia pra um projeto piloto de agencias nivel 5, fiquei uns meses trabalhando com a Graça lá na superintencia no centro e montamos a agencia no Shopping Dom Pedro, foi uma delicia, trampinho gostoso, do lado de casa, no meio do caminho de casa pra Unicamp, horario certinho do meio dia as 6 de novo, foi uma das melhores épocas que tive no amarelinho.

Um dia me ligaram pra avisar que eu tinha passado no concurso e que tinha seila uma semana pra me apresentar e tomar posse... adivinha onde ?!?!?!?!?!

Enfim, fiquei alguns anos na agencia do Shopping, acabou que mudou todo mundo, eu tinha me formado, estava crente na minha cabeça que eu seria promovido e puf, chega um novo gerente, perdi o tesão... e acabei voltando pra Barão de Itapura, pra trabalhar num posto de atendimento que tinha naquele Elefante Branco da Dom Pedro, o CTI e acabei ficando, seila, acho que nem 3 meses que foi quando a Paula me chamou pra ir pra Tecnologia lá em Brasilia, em um processo seletivo interno que outro dia eu conto, por Brasilia fiquei longos anos, aprendi um oficio novo, dois na verdade e como tudo na vida se repete, eu novamente achei que seria promovido, dessa vez era certo, o Mané tinha prometido e tudo na minha cabeça levava a crer que seria mesmo, mas ai o Perez aposentou e junto com ele sua vaga de AP-4, puf, perdi o tesão de novo.

Depois dessa, acho que fiquei mais 1 ano no BB e pedi pra sair. Tinha deixado de ser concursado, 'funcionario publico', bancario e me tornaria um programador, analista, engenheiro de software, o nome que o valha!

Até que virei bancario de novo, agora no Banco Original.

Resumo da ópera, se nao esta legal, tente mudar, pode demorar, um dia voce consegue!

Mude de setor, de empresa, de atividade!

Só nao saia batendo portas e brigando com a galera porque pode ser que um dia voce volte, por vontade propria ou por simples destino!

E quando voltar, se voltar, as coisas não serao as mesmas, muitas pessoas ja nao estarao por lá e talvez os motivos que te levaram a sair nem existam mais.

É isso, no final das contas eu continuo fazendo amigos no trabalho!...

-------------------------------------------------------------------------------------------------------------------------------------------------------

lá no linkedim mesmo

https://www.linkedin.com/posts/buga-lu_saia-numa-boa-vai-que-um-dia-voc%C3%AA-volta-activity-6950591226962149376-5rX1

quarta-feira, 11 de maio de 2022

Novatos no mainframe - Era pra ser um livro.

Notas de Mainframe do Buga: Meu Livro no GitBook

Entre tantas iniciativas e projetos que comecei e não terminei, encontrei este aqui: um compilado de anotações sobre mainframe, linguagens, bancos de dados e experiências que vivi ao longo da carreira. Resolvi compartilhar tudo no GitBook, para ajudar quem está começando ou quer se aprofundar nesse universo.

O que você encontra no livro

  • Linguagens de Programação: ASSEMBLER, COBOL, PL/1, C, REXX, EASYTRIEVE, JAVA, NATURAL, CLIST
  • Bancos de Dados: IMS, ADABAS, DB2, ORACLE
  • Dicas, curiosidades, comandos e exemplos práticos para o dia a dia no ambiente mainframe
  • Conteúdo atualizado periodicamente com novas experiências e aprendizados

Acesse gratuitamente

O conteúdo está disponível de forma aberta no GitBook. Basta acessar o link abaixo:

Notas de Mainframe do Buga no GitBook

terça-feira, 10 de agosto de 2021

TSO ISRDDN MEMBER(xpto) - Achar onde um determinado carga esta!


Por vezes precisei procurar onde um maldito carga executado, CLIST, REXX ou que seja que era excutado direto via TSO estava .

O comando em epigrafe resolve o mistério!

Mainframe, mega dica boa



Atualizacao em 11.06.2025, via IA

Como usar o ISRDDN no Mainframe TSO/ISPF

O que é o ISRDDN?

O ISRDDN é uma ferramenta diagnóstica do z/OS, fundamental para quem trabalha com TSO/ISPF no mainframe. Ela permite listar todos os DDNAMEs (datasets, bibliotecas, arquivos) alocados na sua sessão TSO, facilitando a localização de módulos, cargas e bibliotecas em uso no momento.

Principais funcionalidades

  • Lista todos os DDNAMEs e datasets alocados na sessão TSO/ISPF.
  • Mostra em quais bibliotecas estão os módulos executáveis (load modules).
  • Ajuda a identificar duplicidades, conflitos e bibliotecas vazias.
  • Permite examinar, editar, navegar e executar comandos sobre os datasets listados.
  • Exibe a ordem de busca de módulos (STEPLIB, ISPLLIB, LINKLIST, LPA, etc.).

Como acessar o ISRDDN

  1. No ISPF, digite TSO ISRDDN ou DDLIST na linha de comando e pressione Enter.
  2. Será exibida uma tela com todos os DDNAMEs e datasets alocados na sua sessão.
  3. Você pode pesquisar, navegar, editar ou examinar qualquer dataset diretamente dessa lista.

Exemplo de uso prático

  • Descobrir de onde um programa está sendo carregado: Procure pelo nome do módulo nas bibliotecas LOAD listadas (STEPLIB, ISPLLIB, LINKLIST, etc.).
  • Verificar se uma atualização está ativa: Veja se o módulo atualizado está na biblioteca correta e em uso.
  • Diagnóstico de problemas: Identifique bibliotecas duplicadas, vazias ou conflitos de datasets.
  • Análise de ambiente: Veja todas as bibliotecas que sua sessão está usando, incluindo as do sistema e pessoais.

Recursos avançados

  • Visualizar ENQs (locks) e contendas.
  • Navegar na memória (útil para suporte avançado).
  • Adicionar bibliotecas do sistema à visualização para checar se um módulo está em LPA ou LINKLIST.

Resumo

O ISRDDN é uma ferramenta essencial para suporte, análise e troubleshooting em ambientes mainframe. Com ele, você descobre exatamente de onde está vindo qualquer módulo ou carga em uso na sua sessão, facilitando o diagnóstico e a administração do ambiente z/OS.

segunda-feira, 10 de setembro de 2018

javafx scene builder download - esse funciona de verdade! Curso em Video Java

JavaFX Scene Builder: download e configuração

Atualização 2024 09 25

Apenas pela historia, nada deve funcionar mais hoje em dia ou perdeu a função.

Aqui o link que esta ativo em 11.09.2018 pra baixar o JAVAFX SCENE BUILDER pra usar no curso em video junto com o NetBeans ou com alguma outra, seilá, vai que voce esta precisando igual eu!

http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

Estou a fazer um treinamento de Java pela internet em videos dum tal de "curso em video", como tenho noçoes super reduzidas de linguagens não mainframe ou mesmo orientadas a objeto, embarquei da aula 1 pra frente e vamos ver o que dá.

Um dos problemas que encontrei foi o raio do javafx scene builder, que quando o zé fez o video tinha pra baixar de boas no site da Oracle e hoje (2018) ninguém mais acha em lugar nenhum!

Depois de muito bater a cabeça cheguei ao site do link acima que deixa baixar de boa, era pra ter vindo junto com meu NetBeans (sim, instalei o NetBeans pra fazer o curso, tambem tem o IntelliJ e o Eclipse pra usar aqui na maquina, mas vamos seguir a receita de bolo pra ver se aprendo certinho seguindo os exemplos no passo a passo). E foi justamente isso que fez eu escrever essa postagem que é pra eu nao esquecer mais!...

Bom, pega lá o .fxml que não abrir no tal do Scene Builder e vamos a configuração, afinal já baixei o programa ali do link la em cima ou aqui de baixo do pcloud

esse daqui é o da Oracle mesmo

https://drive.google.com/file/d/1cadbrJ5sPcVDI9PGaxE0_smP5Pag5ZwL/view?usp=sharing

e instalei ele em :

"C:\Program Files (x86)\Oracle\JavaFX Scene Builder 2.0"

Vou lá no NetBeans na opcao de ferramentas e

Clica em Ferramentas seguido de Opções no NetBeans
Figura 1 - Clica em Ferramentas seguido de Opções

Lá nas opções, ah, como fiquei no desespero baixei um outro Scene Builder e instalei ele em

"C:\Users\bugolino\AppData\Local\SceneBuilder"

voltando... lá nas opções :

Java, JavaFX, procurar onde está o Scene Builder
Figura 2 - Java, JavaFX, Procurar onde esta o Scene Builder

Pronto, agora dando dois cliques no fxml vai abrir a interface do Scene Builder!...

Java FX Scene Builder - Splash Screen
Figura 3 - Java FX Scene Builder - Splash Screen

é isso, deixa eu colocar aqui uma imagem do MTM 2018 (Master The Mainframe) que achei bem legal e vai que perco depois no google photos e nao acho nunca mais, igual o logo da BugaSoft

Banner Master The Mainframe 2018
Figura 4 - Banner Master The Mainframe que achei da horinha

quarta-feira, 8 de agosto de 2018

Master The Mainframe 2018 - Acesso a mainframe de graça, pra todos!

Master the Mainframe: Competição Global de Mainframe da IBM

Logotipo Master the Mainframe
Figura 1 - Logotipo - Master the Mainframe

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

Em tese é um concurso, está em sua décima quarta edição agora em 2018, eu recomendo pra todos! Iniciantes e dinossauros quase extintos! Sempre tem uns negócios novos, alguma coisa que você só tinha ouvido falar e o mais legal de tudo:

  • Você tem um usuário e senha pra usar
  • A parada é fabulosa, entra lá, segue uns desafios, veja as edições anteriores e desenferruje-se ou aprenda o novo!
  • Se você é estudante de faculdade, aproveita que os caras sempre mandam brinde!

http://mtm2018.mybluemix.net/

Lembra de registrar como "Try the Learning System" System

terça-feira, 2 de maio de 2017

IBM Debug Tool perdendo os break points a cada execução e não guarda a configuração da tela

JCL para Recuperar Configuração do Debug Tool no Mainframe

No mainframe, o Debug Tool utiliza dois arquivos de controle: um para salvar os breakpoints e outro para guardar suas configurações personalizadas. Como no ambiente em que trabalho os arquivos são deletados automaticamente sem aviso, já perdi minhas preferências algumas vezes. Para não passar mais por isso, montei um JCL que recria tudo de forma automática. Agora, sempre que entro no sistema, rodo junto com o HRECALL e mantenho minha configuração do jeito que gosto!


//C001BUGA JOB BUGA,BUGA,CLASS=K       RESTART=STEP#002
/*NOTIFY WALBUGA
//*--------------------------------------------------------------------
//* Aloca arquivos utilizados pelo debug tool no z/OS
//*--------------------------------------------------------------------
//STEP#001  EXEC PGM=IEFBR14
//SAVINGS     DD DSN=WALBUGA.DBGTOOL.SAVESETS,
//               DISP=(NEW,CATLG,DELETE),
//               UNIT=SYSDA,SPACE=(CYL,(20,10)),
//               DCB=(LRECL=3204,BLKSIZE=0,DSORG=PS,RECFM=VB)
//SETTINGS    DD DSN=WALBUGA.DBGTOOL.SAVEBPS,
//               DISP=(NEW,CATLG,DELETE),
//               UNIT=SYSDA,SPACE=(CYL,(20,10)),
//               DCB=(LRECL=3204,BLKSIZE=0,DSORG=PO,RECFM=VB),
//               DSNTYPE=LIBRARY
//*--------------------------------------------------------------------
//* Carrega configuracoes que o Buga gosta!
//*--------------------------------------------------------------------
//STEP#002  EXEC PGM=IEBGENER
//SYSIN      DD DUMMY
//SYSPRINT   DD SYSOUT=X
//SYSUT1     DD *
      COMMENT YES - DO NOT MODIFY THIS LINE 12/18/2018 10:50:06 AM;
      SET ASSEMBLER OFF;
      SET ASSEMBLER STEPOVER EXTONLY;
      SET AUTOMONITOR ON NOLOG CURRENT;
      SET CHANGE STATEMENT;
      SET COLOR TURQUOISE NONE     HIGH TITLE HEADERS;
      SET COLOR GREEN     NONE     LOW  TITLE FIELDS;
      SET COLOR TURQUOISE REVERSE  LOW  MONITOR AREA;
      SET COLOR TURQUOISE REVERSE  LOW  MONITOR LINES;
      SET COLOR WHITE     REVERSE  LOW  SOURCE AREA;
      SET COLOR TURQUOISE REVERSE  LOW  SOURCE PREFIX;
      SET COLOR YELLOW    REVERSE  LOW  SOURCE SUFFIX;
      SET COLOR RED       REVERSE  HIGH SOURCE CURRENT;
      SET COLOR GREEN     NONE     LOW  SOURCE BREAKPOINTS;
      SET COLOR TURQUOISE NONE     HIGH PROGRAM OUTPUT;
      SET COLOR YELLOW    NONE     LOW  TEST INPUT;
      SET COLOR GREEN     NONE     HIGH TEST OUTPUT;
      SET COLOR BLUE      REVERSE  HIGH LOG LINES;
      SET COLOR WHITE     NONE     HIGH COMMAND LINE;
      SET COLOR GREEN     REVERSE  HIGH WINDOW HEADERS;
      SET COLOR BLUE      REVERSE  HIGH TOFEOF MARKER;
      SET COLOR RED       NONE     HIGH TARGET FIELD;
      SET DEFAULT LISTINGS;
      SET DEFAULT DBG;
      SET DEFAULT MDBG;
      SET DEFAULT SCROLL PAGE;
      SET DEFAULT VIEW STANDARD;
      SET DEFAULT WINDOW SOURCE;
      SET DISASSEMBLY OFF;
      SET DYNDEBUG ON;
      SET ECHO ON;
      SET EXECUTE ON;
      SET EXPLICITDEBUG OFF;
      SET FIND BOUNDS 1 *;
      SET HISTORY ON 100;
      SET IGNORELINK OFF;
      SET LDD SINGLE;
      SET LIST TABULAR OFF;
      SET LIST BY SUBSCRIPT OFF;
      SET LOG OFF;
      SET LOG KEEP 1000;
      SET LOG NUMBERS ON;
      SET LONGCUNAME ON;
      SET MONITOR DATATYPE OFF;
      SET MONITOR LIMIT 1000;
      SET MONITOR NUMBERS ON;
      SET MONITOR WRAP ON;
      SET MSGID OFF;
      SET PACE 2;
      SET PF1      "?"... =   ?;
      SET PF2      "STEP" = STEP;
      SET PF3      "QUIT" = QUIT;
      SET PF4      "LIST" = LIST;
      SET PF5      "FIND" = IMMEDIATE FIND;
      SET PF6      "AT/CLEAR" =AT TOGGLE;
      SET PF7      "UP" =   IMMEDIATE UP;
      SET PF8      "DOWN" = IMMEDIATE DOWN;
      SET PF9      "GO" =   GO;
      SET PF10     "ZOOM" = IMMEDIATE ZOOM;
      SET PF11     "ZOOM LOG" =IMMEDIATE ZOOM LOG;
      SET PF12     "RETRIEVE" =IMMEDIATE RETRIEVE;
      SET PF13     "?"... =   ?;
      SET PF14     "STEP" = STEP;
      SET PF15     "QUIT" = QUIT;
      SET PF16     "LIST" = LIST;
      SET PF17     "FIND" = IMMEDIATE FIND;
      SET PF18     "AT/CLEAR" =AT TOGGLE;
      SET PF19     "UP" =   IMMEDIATE UP;
      SET PF20     "DOWN" = IMMEDIATE DOWN;
      SET PF21     "GO" =   GO;
      SET PF22     "ZOOM" = IMMEDIATE ZOOM;
      SET PF23     "ZOOM LOG" =IMMEDIATE ZOOM LOG;
      SET PF24     "RETRIEVE" =IMMEDIATE RETRIEVE;
      SET POPUP 15;
      SET PROMPT LONG;
      SET REFRESH OFF;
      SET RESTORE SETTINGS AUTO;
      SET RESTORE BPS AUTO;
      SET RESTORE MONITORS AUTO;
      SET REWRITE 50;
      SET SAVE SETTINGS AUTO;
      SET SAVE BPS AUTO FILE WALBUGA.DBGTOOL.SAVEBPS;
      SET SAVE MONITORS AUTO;
      SET SCROLL DISPLAY ON;
      SET SUFFIX ON;
      SET WARNING ON;
      WINDOW SIZE 3 LOG;
      WINDOW SIZE 28 SOURCE;
      WINDOW SIZE 8 MONITOR;
      SET SCREEN ON;
      SET SCREEN 1 MONITOR SOURCE LOG;
      SET KEYS ON 12;
      SET MONITOR COLUMN ON;
//SYSUT2     DD DSN=WALBUGA.DBGTOOL.SAVESETS,
//              DISP=(OLD,CATLG,DELETE),
//              UNIT=SYSDA,SPACE=(CYL,(20,10)),
//              DCB=(LRECL=3204,BLKSIZE=0,DSORG=PS,RECFM=VB)
//

Dica: Usando esse JCL, você nunca mais perde suas configurações do Debug Tool, mesmo que o sistema delete seus arquivos sem aviso. Personalize o nome dos datasets conforme sua necessidade!

Figura 1: Tela do Debug Tool no mainframe z/OS mostrando arquivos de configuração e breakpoints alocados
Figura 1: Debug Tool iniciando o debug de um programa

quinta-feira, 3 de novembro de 2016

Mass Insert DB2 - Inserindo uma caralhada de dados no on-line de uma vez só! Da hora, funciona!

Pequena alteração? Só um insert...

Esses dias me deparei com uma alteração de um programa (já entregue, testado e evidenciado) que precisou de uma “pequena alteração”, só um insert dizia o pedido.

Esse tipo de situação é muito corriqueira (lembro uma vez que trabalhei um carnaval inteiro (desde a sexta feira antes do carnaval até a quarta de cinzas porque tinha que ir pra produção no almoço da quarta de cinzas – esse fiz questão (só pra saber que não era urgente porra nenhuma e que não teria a volumetria informada nunca) de colocar contador de execução e emissão de relatório pra eu saber a real utilização da parada – BINGO, nem o cara que pediu usou na tal quarta de cinzas! Um tempo depois chegou uma solicitação pra desencanar da parada (o “projeto” inicial era bem trabalhoso e saiu só um cotoquinho na quarta de cinzas – afinal milagre é outro departamento, mágica ainda vai!) acho que até hoje deve ter um texto meu no código fonte bem puto explicitando que as vezes fazemos papel de palhaço atendendo pedidos que sabemos que não vai ter futuro, mas que os chefes nas camaradagens e nas boas vizinhanças acabam aceitando (mesmo também sabendo e concordando que não vai vingar) sinceramente não entenderei jamais os meandros do mundo corporativo!

Lembrei de uma vez que o Mané pediu um lê-grava na sexta pra entregar na segunda que era boiada... humpft, outro final de semana e madrugadas, mas esse usaram bastante!

Enfim, voltando a minha pequena alteração de hoje (outubro 2016). Depois que conversei com o figura que fez a solicitação inicial e na hora que integrou tudo reparou que precisava da “alteração” porque esqueceu na hora de “especificar” ou o “cliente” mudou de ideia, enfim, me pagam para além de fazer mágica, resolver pepinos e aqui estou!

A parada era simples, de verdade! Só ler uma tabela recebida via linkage e ir inserindo os caras que não fossem “branco” numa tabela XPTO. Como trabalhei bastante tempo com sistemas on-line de alta performance e diga-se de passagem quando comecei a trabalhar com isso foi justamente retirando os acessos ao DB2 substituindo-os para acesso a arquivos VSAM e outras soluções bem interessantes (como as TS residentes para “tabelas” pequenas).

Isso posto – como diria o nosso advogado Rodrigo – sei e tenho a noção que sair da QR (o programa é CICS e não é ThreadSafe) e ir pra L8 uma porrada de vezes pra gravar no DB2 não é uma boa ideia. Sai então pra pesquisa, afinal alguem já deve ter tido uma situação parecida de fazer uma inserção em massa no DB2 de uma vez só.

A pesquisa foi relativamente simples, tem bastante coisa de DB2 que aparece quando ‘googla’ direitinho (procurei por multiple-row-insert), vi o manual do DB2 – 11 e localizei o que eu precisava. Só os exemplos que estavam meio capengas, mas nada que com uma fuçada aqui e ali não resolvesse.

A parada ficou bem legal pro que eu precisava e deixa eu colocar o código aqui pra não esquecer – afinal pra isso que fiz esse blog!...

Simplificando... a tabela ‘digamos’ que tenha só 2 campos SMALLINT e not null os 2 e a chave é os 2.

As variáveis:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
/                                                              
*---------------------------------------------------------------*
*   MASS INSERT DB2                                            
*---------------------------------------------------------------*
01  FILLER             PIC X(30) VALUE 'MASS INSERT'.
01  GD-MASS-INSERT.
   03 I                PIC S9(4) COMP VALUE 1.
   03 GD-NR-LINHAS     PIC S9(4) COMP VALUE 0.
   03 GD-CAMPO1        PIC S9(4) COMP OCCURS 1000.
   03 GD-CAMPO2        PIC S9(4) COMP OCCURS 1000.
/                                                               

Na section do insert fiz um loopzinho básico pra varrer a entrada e mover os dados válidos e acumular quantos eram eles.

O insert é bem “normal”

    EXEC SQL
        INSERT INTO BVISANET.TABELA_XPTO
        (CAMPO_HUM, CAMPO_DOIS)
        VALUES (:GD-CAMPO01, :GD-COMPO02)
        FOR :GD-NR-LINHAS ROWS
        NOT ATOMIC CONTINUE ON SQLEXCEPTION
    END-EXEC.

E no meu caso nem se deu certo ou não eu precisava, nos testes deu uns erros 253 que indica que “olha eu tentei fazer o que voce pediu, mas não garanto porque deu caca” e o 254 que olha amigo, não rolou nem unzinho! Em ambos ou se quiser analisar a parada mais a fundo tem o “GET DIAGNOSTICS” que sai do escopo desse post (afinal nem usei a criança).

O “NOT ATOMIC” é pra não parar se der erro, afinal eu quero uma inserção em massa, os erros depois vejo o que faço com eles, quer dizer, nesse caso nada!

Fiquei puto com a “pequena alteração” ainda mais sabendo que meu patrão não recebe um centavo disso - na real quem deveria saber e cobrar sequer fica sabendo ou se sabe faz o lance da boa vizinhança, e enfim, entramos no mesmo lance do mundo corporativo que não entendo. mas aprendi uma nova e como não manjo nada de DB2 acho que foi bem produtivo!

Deixa eu colocar a fotinho do TSO pra eu lembrar que sou trouxa e trabalho depois do horário (achei que fosse coisa do meu outro serviço, mas parece que é crônico, afinal tudo é urgente e pra ontem!) e mais trouxa ainda porque não entro na justiça processando meu empregador!...

Figura 1: Buga Troxa

Figura 1: Buga Troxa

Os Códigos de SQL da versão 11 do DB2 podem ser pesquisados no link abaixo

http://www.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/codes/src/tpc/db2z_n.html

Nota:

Ver com o Aldenon ou com o Thiago se eles ainda tem o e-mail de outra vez que trabalhei igual maluco nas madrugada pra abrir o criptograma na mão com todos os passos e tals...

Achei!
Re: Documentação da função CVN 17 de 22.06.2013 tem o anexo e tudo com o passo a passo! (esse só pra eu lembrar mesmo porque tem muita informação $40, vulgo confidencial) e pra não esquecer que se o viadinho do Chahad tivesse descolado o programinha que ele usava tinha resolvido isso instantâneamente!

segunda-feira, 11 de julho de 2016

Manuais do Roscoe - Ca-Roscoe Release 6 - RPF Language Guide - Roscoe User Guide

Manuais CA Roscoe para Mainframe – Download

Tudo bem que atualmente o pessoal está usando o RDz, o MicroFocus e outras ferramentas "modernas" para programar em mainframe, mas sempre vai ter alguém que precisa do bom e velho Roscoe. Então deixa eu salvar os manuais aqui pra não perder.

Manuais Individuais

Nome do Arquivo Tamanho Download
b001733e - User Guide.pdf 1.4 MB Download
b001723e - System Reference Guide.pdf 988 KB Download
b001712e - System Commands Guide.pdf 554 KB Download
b001702e - Security Administration Guide.pdf 307 KB Download
b001692e - RPF Language Guide.pdf 1.2 MB Download
b001682e - Release Guide.pdf 264 KB Download
b001673e - Programs and Utilities Guide.pdf 958 KB Download
b001662e - Messages and Codes Guide.pdf 1,017 KB Download
b001653e - Installation Guide.pdf 476 KB Download
b001642e - Getting Started.pdf 390 KB Download
b001632e - Extended Facilities for System Programmers Guide.pdf 824 KB Download
b001622e - Extended Development Tools Guide.pdf 450 KB Download
b001613e - Command Reference Guide.pdf 1.8 MB Download

Pacote Completo

Pacotão - B001743E.TGZ

quarta-feira, 22 de junho de 2016

PROTEÇÃO DE CÓDIGO FONTE VIA OFUSCAMENTO - Cobol - magos do mainframe - Exemplos

Atualização do TCC: Slides, Vídeo e Arquivos sobre Ofuscamento de Código

Atualização 14.11.2022 – O vídeo parece que perdi, vou procurar em algum backup pra ver se acho, tinha subido no Dropbox, mas aparentemente minha conta foi pro espaço.

Em tempo, achei as lâminas da apresentação:

E no YouTube:

Finalizado o TCC.

O vídeo está tosco porque cortou na hora de mandar pro YouTube, deve ter ficado em casa a versão certinha, mas como é pra eu não esquecer, deixa ele aqui pra garantir.

Tem o PDF e o WORD do TCC entregue. (Coloquei o WORD também porque enche o saco copiar e colar de PDF!)

Vídeo 1: Apresentação

Assista ao vídeo da apresentação no YouTube

quinta-feira, 19 de maio de 2016

Pra não esquecer - Naffer

Memórias e saudades do Naffer

Sinceramente não lembro sempre fui péssimo para datas, o uso de ferramentas do tipo agenda sempre me foram muito úteis, agora nos tempos de nuvem e com integração de todos os lados essa tarefa de lembrar ficou muito mais fácil, porém o que queria lembrar era algo meio mórbido, no caso a data que um grande camarada meu veio a falecer... esse tipo de coisa você não coloca na agenda, ainda mais que não fui ao velório então sequer existe registro de alguma atividade relacionada a esse evento em “minha agenda”, coloquei entre aspas porque quem a comanda hoje (na maioria dos eventos é o google).

Enfim, a tarefa até que foi simples porque lembrei de uma singela lembrança que postei no facebook quando soube de seu falecimento sobre um joguinho de trocar letras on-line tipo scramble que esse meu amigo adorava passar seu tempo vago jogando.

Achei a tal da publicação e lembrei mais ou menos a data não é precisa, mas isso também não importa. O que importa é o que um dia a Ju me falou de um pai de um paciente que morreu de câncer e o maior medo dele – lagrimas escorrem do meu olho nesse momento, pausa volto depois de me recompor – era o de esquecer.

E não sei dizer o porque mas ontem lembrei do Naffer algumas vezes durante o dia, como minha memória de curto e médio prazo é quase inexistente quem me deu um toque sobre isso foi a Ju - Ou... você já falou do Naffer umas 4 vezes hoje! – dai eu tentar lembrar se fazia um ano que ele tinha falecido ou mesmo descobrir o porque da memoria ativada, não faz uma ano, faz um pouquinho mais, pelo que consegui resgatar ele deu baixa em 22 de março de 2014... ai só sobrou o que realmente importava, o não esquecer.

Me lembro apenas da ultima lembrança que tive ontem (não falei que minha memoria é péssima) enfim, foi a de um dormindo a noite antes de sair de carro para ir a algum lugar. Fazia alguns anos que já isso não mais acontecia na minha vida; resumindo, costumava trabalhar nas madrugadas de quarta para quinta-feira (mesmo tendo trabalhado na quarta e ter jornada normal na quinta, 11 horas de descanso entre as jornadas é para os fracos – ossos do óficio como diria o seu Irá) e num dado momento depois de algumas modificações e ajustes na estrutura da equipe ficamos só eu e o Naffer realizando essa magnifica tarefa. Eu ia pra casa normalmente na quarta feira, dormia um pouco mais cedo que o habitual e acordava umas 2:30 para ir trampar, comia alguma coisa, separava besteiras e um suco de caixinha ou similar, pegava o maço de Marlboro a chave do carro, descia até a garagem (sempre com as luzes acesas) e dirigia 20 minutos pelo planalto central quase sem ninguém nas estradas, ligava pro Naffer na descida do Carrefour (com comando de voz) avisando ele que eu estava chegando em 5 minutos. Eu nunca me atraso, não precisava ligar, ele sabia que eu estaria lá na portaria do condomínio dele na hora marcada 5 pras 3 (la vem novas lagrimas, acho que devo ter parado cedo demais de tomar o remédio de depressão, ou deve ser normal quando a gente lembra que nunca mais vamos ver alguém), conversa de nada novo, do tipo e ai bastante frio , essa chuva que não passa ou essa seca ta brava esse ano, ou mesmo alguma coisa que ele falava de futebol e eu só balançava a cabeça afinal nunca me interessei ou entendi algo desse universo, o Naffer curtia o tal do Futebol, não tanto quanto o Thyago Luiz mas gostava bastante, sempre dava um jeito de ir trampar com alguma camisa de time de futebol que ficava apertando a pança de leve. 5 minutos depois já estávamos no imponente complexo central de tecnologia do conglomerado do Banco do Brasil, vulgo, sede IV. Revisavamos os “check-list” do que tínhamos que fazer, uma analisada ou outra de ultima hora em algum pedaço de código que tenha gerado dúvida (como não lembro, mas sinto que nunca encontrei nenhuma merda digna de nota que ele tenha feito, exceto não comentar nada dentro do código, mas que com o tempo e muita encheção de saco ele começou a fazer isso e até hoje posso dizer que está entre os 5 melhores analistas/programadores que já conheci) e ficávamos aguardando a baixa no TIM e o newcopy para acompanhar se deu tudo certo ou se tínhamos de sair ligando pra Deus e o mundo pra dar newcopy na mão ou recompilar tudo de novo com a versão antiga e sair pra prancheta analisando o que deu errado (algumas vezes voltamos pra prancheta e não achamos o erro, baixamos a versão de novo na outra semana e magicamente dessa vez funcionou... lembrei aqui de uma exit do cics do ICSF que não voltava nunca se a compilação não fosse estática... até hoje não sei se já arrumaram isso), voltando ao mineiro quieto que como diria o Leandro muito quieto demora pra responder porque enquanto ele pensa ele esta localizando dentro da memoria dele o código do label (o programa era tão doido que nem section tinha, e os labels tinham código tipo o K200 que ia lá no AMOA procurar o registro uma vez que não achamos no log (nossa eu também ainda lembro!) e não cabia na AWS do roscoe de tanta linha que tem, enfim, o cara manjava, muito do negocio!

Nos nossos churrascos sempre na dele, quietão conversando com um ou outro, circulando pelas rodinhas, bebia moderadamente e costumava voltar de taxi sempre, seilá porque mas como ele era extremamente reservado devia ser algum trauma de andar com motorista bêbado ou seilá, acho que essa é a mais provável, trauma, uma vez que ele não dirigia. Devo ter perguntado alguma vez o porque ou alguém deve ter me contado, mas olha ai, não lembro, esqueci... que merda!... Gostava bastante também de falar de filmes velhos (seilá o que é velho hoje, mas uma vez me arrisquei a pegar um que o Aldisio tinha emprestado pra ele - ledo engado esse DVD da NetMovies deve ter sido extraviado! – nossa esse foi outro mercado que surgiu muito rápido e desapareceu mais rápido ainda (aluguel de filmes por “courrier”) – enfim, os dois haviam falado extremamente bem do filme e tal do ator, do carro, do enredo, resumo da ópera, filmão! Filmão porra nenhuma, puta filme tosco do caralho... spoiler alert - um cara que rouba um carro, sai fugindo pelos estado unidos e se mata no final batendo o carro contra uma barricada da policia, infelizmente, fica aqui meu pedido de desculpas, mas não lembro o nome do filme e não tenho certeza se ele roubava o carro ou se o filme já começava com ele no carro e nem ficamos sabendo qual o crime que ele cometeu ou mesmo o porque de estra em fuga. Talvez quando eu fique velho, fale isso pra molecada de algum filme que achei o máximo (tipo matrix) e eles tenham essa mesma impressão.

Ele estava sempre matutando alguma coisa pra implementar de melhoria no sistema... suas sacadas e tiradas de sarro eram sutis e palavrões nunca eram proferidos, exceto em situações extremamente tragicomicas do tipo de alguém vir com um problema daqueles que já ficou mais de semana tentando resolver e senta do lado dele explica tudo e ele só prestando atenção e anotando uma ou outra coisa em sua companheira inseparável folha de papel A4 ininteligivel para outros humanos, depois de algum tempo e de analisar o código (sempre em silencio) ele vira e pergunta, você fez tal coisa no código ? (ele já sabia a resposta, era sempre uma pergunta retórica) sempre a resposta era ou que fez ou que não fez (afinal não existe outra possibilidade para essa resposta, se respondesse não sei ou não lembro não estaria trabalhando na nossa equipe, quer dizer, não lembro eu respondia direto, mas ia rapidinho procurar e voltava com a resposta (essa daqui aprendi com o Perez!). E depois da resposta que vinha o bordão clássico, então é ai que fudeu!

Agora deixa eu ir dormir que são 5 da manhã, qualquer dia continuo, se não continuar fica aqui uma pitada de lembrança pra essa cuca que não lembra muito bem das coisas.

terça-feira, 19 de abril de 2016

Aplicativos de Camaradas - COBOL Up

Era pra ter saido pela BugaSoft, mas não deu certo...

https://play.google.com/store/apps/details?id=br.com.elabore.cobolup

Infelizmente não testei, afinal sou metido a rico e tenho um iphone!

COBOL Up

Alexsandro Ferreira Pinheiro Ferramentas

Este app é compatível com todos os seus dispositivos.

Instalado

O aplicativo COBOL UP tem como objetivo auxiliar todos os "COBOLEIROS" a sanarem as suas dúvidas e adquirir conhecimento. Através do COBOL UP é possível obter detalhes dos erros que ocorrem no programa COBOL e no ambiente mainframe.

Os erros que podem ser consultados são:

  • File Status - VSAM
  • EIBRESP
  • SQLCODE - DB2
  • System Abend
  • User Abend

Baixe também a nossa versão PREMIUM, além de não ter anúncios, contém SQLCODES que não estão disponíveis nessa versão.

Espero que o app seja útil no seu dia a dia :D.

terça-feira, 19 de maio de 2015

Não me venha falar de Data Juliana ! Agora eu sei ! Dia do Ano - Day of Year

Saindo da caverna e encontrando a luz!

Por muitos anos sempre me diziam data gregoriana (dd.mm.aaaa, sendo dd dia do mês, mm mês e aaaa ano e todas suas variações) e data juliana (dddaaaa, sendo ddd dias de 1 a 365 (366 em bissexto) e aaaa ano com 4 dígitos, sendo ano 0 o nascimento de Jesus) principalmente quando estávamos trabalhando com algum programa que sabe-se lá porque o codificador resolveu que 92 era mais legal que 02/04 (dois de abril, vai que... nunca se sabe), vai entender...

Nunca havia parado para pensar sobre o assunto e sempre trabalhei utilizando esse vocabulário, enfim, acabei de dar uma lida no que vem a ser data juliana e nada tem a ver com o que sempre me falaram que era e que eu aceitei sem nunca ter ido buscar mais informações, afinal fazia sentido, era só um nome para um tipo de representação de data, mas o problema é que estava errado!

O que sempre me disseram ser data Juliana tem o nome de Day of Year, simples assim, nada além disso que é justamente a explicação que sempre me deram: quantos dias já passaram desde o primeiro de janeiro no ano corrente.

Nunca entenderei as razões do porque terem cravado o termo data Juliana para o dia do ano, da mesma maneira que nunca entenderei porque dizem "A BOOK" para um book do COBOL.

Como diz a NASA "Sem essa de Data Juliana!... ", essa tabela é de DIA DO ANO

\

1

2

3

4

5

6

7

8

9

10

11

12

1

001

032

060

091

121

152

182

213

244

274

305

335

2

002

033

061

092

122

153

183

214

245

275

306

336

3

003

034

062

093

123

154

184

215

246

276

307

337

4

004

035

063

094

124

155

185

216

247

277

308

338

5

005

036

064

095

125

156

186

217

248

278

309

339

6

006

037

065

096

126

157

187

218

249

279

310

340

7

007

038

066

097

127

158

188

219

250

280

311

341

8

008

039

067

098

128

159

189

220

251

281

312

342

9

009

040

068

099

129

160

190

221

252

282

313

343

10

010

041

069

100

130

161

191

222

253

283

314

344

11

011

042

070

101

131

162

192

223

254

284

315

345

12

012

043

071

102

132

163

193

224

255

285

316

346

13

013

044

072

103

133

164

194

225

256

286

317

347

14

014

045

073

104

134

165

195

226

257

287

318

348

15

015

046

074

105

135

166

196

227

258

288

319

349

16

016

047

075

106

136

167

197

228

259

289

320

350

17

017

048

076

107

137

168

198

229

260

290

321

351

18

018

049

077

108

138

169

199

230

261

291

322

352

19

019

050

078

109

139

170

200

231

262

292

323

353

20

020

051

079

110

140

171

201

232

263

293

324

354

21

021

052

080

111

141

172

202

233

264

294

325

355

22

022

053

081

112

142

173

203

234

265

295

326

356

23

023

054

082

113

143

174

204

235

266

296

327

357

24

024

055

083

114

144

175

205

236

267

297

328

358

25

025

056

084

115

145

176

206

237

268

298

329

359

26

026

057

085

116

146

177

207

238

269

299

330

360

27

027

058

086

117

147

178

208

239

270

300

331

361

28

028

059

087

118

148

179

209

240

271

301

332

362

29

029

 

088

119

149

180

210

241

272

302

333

363

30

030

 

089

120

150

181

211

242

273

303

334

364

31

031


090

 

151

 

212

243

 

304

 

365

Tabela 1: Dias do Ano x Dia do Mês

Deixa eu colocar aqui o video do Caetano que nunca tinha visto e achei bem da hora!