Pesquisar este blog

quinta-feira, 14 de maio de 2020

Teclado Buga pro PCOMM - Personal Comunications - Emulador de terminal 3270 da IBM

Teclado Buga pro PCOMM - Personal Comunications - Emulador de terminal 3270 da IBM



Atualizacao em 06.06.2025
To aqui ressucitando velhos fantasmas!




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

Aqui ó que maravilha - teclado do buga.kmp
Figura -1 : Teclado do buga.kmp

Captura de onde tem que ir pra configurar/apontar pro teclado personalizado
Figura 0: pcsws.exe em execucao









 Quem é das antigas igual eu, curte uma customizada no teclado do seu 3270, cada um trabalha de um jeito e sua produtividade aumenta bem quando esta trabalhando em algo que voce esta acostumado.


Estou usando o

Figura 1: pcomm 6.0


Devo ter algum mais novo ou mesmo um que nao seja Trial, mas enfim, vamos seguir com esse splash Screen que foi o que encontrei.


O teclado esta aqui.


https://drive.google.com/file/d/0B59qH6QDRq_uRDRCMGViTTV2bG8/view?usp=sharing



Que eu lembre onde deixei num futuro proximo que venha a precisar, porque hoje procurei e demorei pra achar!



Segue ultima configuração do Personal Communications que fiz aqui pra testar com o Zowe.


Se um dia perder o 3270 da IBM, tem desse cara aqui que da conta do recado para brincar.

Vista TN3270 - Tom Brennan

http://www.tombrennansoftware.com/download.html

http://www.tombrennansoftware.com/vista127_2014-11-12.exe

em todos os casos, vamos deixar o link aqui pra download da versao que baixei hoje (06.06.2025) 
https://drive.google.com/file/d/1cUnMYzfzCeKlJxkPI4E1VC0aP-U_DS9t/view?usp=sharing

quinta-feira, 16 de abril de 2020

Perdeu a senha do usuario do banco de dados ou alguem tem e nao sabe mais qual era! Show me password! Oracle SQL Developer

Show Me Password - Oracle SQL Developer

Sobre a versão que estou usando

Figura 1 - Sobre a versão que estou usando

Olha como fica bonitinho

Figura 2 - Olha como fica bonitinho

Oracle SQL Developer versao 4.0.3.16 nessa funciona a que subi aqui pra baixar!...

O site do malucao que fez o brinquedo:

http://show-me-password.tomecode.com/

Vai que eu perco e não consigo achar depois nos favoritos salvos.

Vai que um dia eu perco o link de verdade ou o site do cara some, ou mesmo o projeto lá no github (https://github.com/tomecode/show-me-password-sqldev-jdev) dá um problema, enfim, sempre bom garantir um backup - abaixo site do grande desenvolvedor dessa maravilha!...

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

Show Me password

The "Show me password" is a simple extension for Oracle SQL Developer or Oracle JDeveloper i.e. simple extension (tool) that decrypts all saved (encrypted) password for database connections, application server connection, servers etc. in SQL Developer or JDeveloper.

Extension for Oracle SQL Developer (version: 19.x/18.x/17.x/4.x)

Show Me Password

Requirements

  • Oracle SQL Developer 4.x/17.x/18.x/19.x or higher
  • Java 1.7 (or higher)

Download and Install

  • Download the latest version of the extension for Oracle SQL Developer 4.x/17.x/18.x/19.x/23.x/... to your machine. The extension will be packaged as zip file - pls. don't unzip the extension;)
  • In SQL Developer, navigate to Help -> Check for Updates... Instead of choosing from the existing update centers, select the "Install From Local File" option, and specify the path to the zip file you downloaded.
  • Restart SQL Developer to complete the extension installation

How to use

  • If you click on the menu "File" > "Show Password," window will appear displaying table containing the following columns: connection name, database host, SID, username, and the decrypted (saved) password for each database connection stored in SQL Developer.

Note

  • If the extension fails to work, you can resolve the issue by removing the "system_cache" folder from the application directory: /SQL Developer/system*/system_cache e.g.: in windows: C:\Users\<user>\AppData\Roaming\SQL Developer\system<versonNumber>\system_cache and restart SQL Developer
  • Or just create new issue in github... and I will try to find some time to fix it;)

Extension for Oracle SQL Developer (version: 3.x)

Show Me Password

Requirements

Download and Install

  • Download the latest version of the extension for Oracle SQL Developer 2.x or 3.x to your machine
  • Unzip it and copy JAR file to the $SQL_DEVELOPER_HOME/sqldeveloper/extensions/
  • Restart SQL Developer to complete the extension installation

How to use

  • If you click on the menu: "File"->"Show password" a window will appear that contains a table (with columns: connection type, connection name, user name and decrypted (saved) password to database) with list of all stored connections in JDeveloper

Extension for Oracle JDeveloper 12c (version: 12.x/...)

Show Me Password

Requirements

Download and Install

  • Download the latest version (1.0.0) of the extension for Oracle JDeveloper to your machine. The extension will be packaged as a zip file - pls. don't unzip the extension;)
  • In JDeveloper, navigate to Help -> Check for Updates... Instead of choosing from the existing update centers, select the "Install From Local File" option, and specify the path to the zip file you downloaded.
  • Restart JDeveloper to complete the extension installation

How to use

  • If you click on the menu: "File"->"Show password" a window will appear that contains a table (with columns: connection type, connection name, user name and decrypted (saved) password to database) with list of all stored connections in JDeveloper

Extension for Oracle JDeveloper 11g (version: 11.x)

Requirements

Download and Install

  • Download the latest version of the extension for Oracle JDeveloper 11.x to your machine
  • Unzip downloaded extension and copy it to $JDEVELOPER_HOME_11g/jdeveloper/jdev/extensions/
  • Restart JDeveloper to complete the extension installation

How to use

  • It's the same as in other versions. :)"



quarta-feira, 13 de novembro de 2019

A delicada situação dos bancos (Itaú, BB, Bradesco, Caixa, Santander) frente a evolução tecnológica e o avanço dos bancos digitais.

A delicada situação dos bancos (Itaú, BB, Bradesco, Caixa, Santander) frente a evolução tecnológica e o avanço dos bancos digitais

O problema não é o mainframe, são os processos!

Tudo isso porque li uma matéria do Itaú...

https://economia.estadao.com.br/noticias/negocios,transformacao-com-fintechs-nos-angustia-toda-noite-diz-setubal,70002995258

Do nada me chega essa daqui abaixo (atualizado em 11.10.2019)

https://valor.globo.com/opiniao/coluna/o-principio-do-fim-para-os-grandes-bancos.ghtml

Segue meu texto original


De uma aula introdutória de economia lá nos idos de 1998 tomei conhecimento da ameaça de novos entrantes, nunca estudei a fundo, longe disso, mas as ideias do Michel Porter - esse das 5 forças e o famoso 4 P consegui pegar o principio, na minha Pós em Negocios Financeiros uns anos depois tive contato novamente e por vezes me deparei com o cenário! Eu mesmo já fui um novo entrante quando montamos a fábrica de rodinhas e shapes de skate. Bom, introdução feita, seguem os comentários...

Esses dias mesmo me peguei fazendo uma conta de padaria para estimar os valores desembolsados pelos bancos para a IBM, isso sempre foi uma barreira para a entrada de novos "players" no mercado... Você não poderia ter banco há alguns anos sem o processamento mega hiper blaster e sem igual de um mainframe! E isso amiguinho era muito caro, digo, é muito caro! Voltando a conta de padaria, não tenho os dados mas chuto que os top 4 (BB, ITAÚ, BRADESCO, CAIXA) devam ter algo perto de meio milhão de MIPS instalado cada um, isso em valores atuais deve ser algo em torno de uns 2.5 bilhões de reais - CAPEX como chamam os entendidos - e isso é só o valor pra comprar os computadores!!! Depois tem um valor mensal pelo uso (tanto dos softwares como do hardware), no mês eu chuto mais uns 30 milhões pra IBM desembolsados por cada um. Esse valor de largada inviabiliza qualquer tentativa de se abrir um banco! Ah, mas esses são os top 4, beleza pega o Santander que é o quinto - não lembro de cabeça e se sair para procurar perco a linha do raciocínio - mas ele gastou alguns bilhões pra montar o data Center aqui do lado de casa, o Itaú idem com Mogi. É um rio de dinheiro! Enfim, quero reafirmar que você não conseguia abrir um banco sem um mainframe.

Alguma coisa mudou, na década de 90 a "baixa plataforma" iria acabar com o mainframe, foram feitas algumas tentativas de migração de mainframe pra micro computador mas não era nem de longe alguém querendo abrir um banco eram os próprios bancos tentando reduzir a conta para com um grande sócio, a IBM. Resumo, não deu certo a capacidade de processamento estava muito aquém do necessário.

Alguma coisa mudou 2. Tudo evolui, o mainframe evoluiu, os micros também...

Sem falar em armazenamento!

Quando vi um mainframe pelo primeira vez me vi dentro de um microcomputador! Entende-se mainframe aqui como o andar inteiro onde ficava todo o aparato tecnológico necessário para o seu pleno funcionamento.

Bom, estou falando de armazenamento, pois bem, estava em desativação uma "colmeia", basicamente era um grande depósito de fitas magnéticas, um conjunto de módulos acoplados (acho que eram 12 no total) com um robô que se encarregava de pegar as fitas e carrega-las em disco quando alguém solicitava um arquivo que estava gravado em alguma das milhares de fitas que la estavam. Sabe a capacidade dessa colmeia ? 10 teras, o mesmo que a capacidade de 10 celulares top de linha da Samsung hoje!

A última vez que li as especificações de um mainframe lembro de algo que me chamou a atenção... Não é o objetivo, nunca foi, mas adaptou-se e o mainframe hoje (um único mainframe) consegue sozinho rodar algo em torno de 10.000 máquinas/servidores Linux, é algo assombroso pra uma máquina que tem o tamanho de uma geladeira de americano de duas portas, eu desconheço por completo como que a IBM comercializa isso, você ter um mainframe pra rodar Linux, mas existe e é muito legal para comparação.

Hoje é possível criar essa mesma quantidade de servidores/máquinas na Amazon/Google/ ou mesmo na própria IBM sem ter que desembolsar nada de investimento inicial, paga-se apenas o que usar!

O que aconteceu de mágico ? Nada!

Não foi algo disruptivo como afirmam, foi apenas uma evolução natural da tecnologia...

O que antes era uma vantagem competitiva e barreira a novos entrantes se tornou um dos maiores pesadelos dos grandes bancos, o mainframe!

É um baita dinheiro que se paga para a IBM, mas o processamento em PCs (bare metal, virtualizados, nuvem ou o que quer que seja) para os volumes que os grandes bancos possuem não fica muito mais barato a ponto de valer a pena monetariamente, mas mesmo assim eles estão caminhando para a transformação que pode significar sua derrocada em menos de uma década.

Para quem quer começar o custo do mainframe é proibitivo, porém do processamento em PCs é viável e atualmente já dão conta do processamento necessário.

O problema dos grandes bancos não é o mainframe, mas os processos internos que acabaram sendo incorporados ao longo das décadas.

Existem instalações que você sequer consegue ver a compilação de um programa pra tentar ajudar seu coleguinha! Código fonte de outro sistema ? Jamais! Consultar um dado de produção ? Ficou louco ?!?!

As disciplinas de computação que são ensinadas nas faculdades e que são vistas como verdade não possuem paralelo no mundo mainframe, mas mesmo assim tentam incorporar coisas que não fazem sentido, quer exemplo? Veja um teste unitário automatizado em Java, em mainframe sequer é possível fazer a analogia do que viria a ser o teste unitário! É outro conceito, não se aplica! Gasta-se um tempão fazendo atividades que não levam a lugar algum! Como um teste "mockado" que não chegou a ir no banco de dados, cara é mainframe, o banco vai estar lá...e funcionando!

A moda agora é o Ágil! Desculpe pessoal, mas deixa eu contar, o desenvolvimento de software no mainframe nasceu ágil!

Eu trabalhei em uma equipe que rodava ágil no mainframe antes mesmo de ser modinha ou mesmo de termos consciência que o que fazíamos tinha esse nome, os mais antigos sempre lembravam que antigamente todo mundo trabalhava igual a nossa equipe, mas eram outros tempos, fomos os últimos sobreviventes.

Nosso time era pequeno, multidisciplinar, autogerenciavel, todo mundo sabia exatamente o que o outro estava fazendo e se estava precisando de ajuda, éramos donos do negócio, tinhamos iniciativa, comprometimento, responsabilidade e autonomia ímpares! Fazíamos entregas rotineiras (2 a 3 vezes por mês) de novas funcionalidades e melhorias no sistema, realizavamos testes automatizados, controle de versão com retorno instantâneo em caso de deploy com problemas. Precisava de um dado de produção, tá aqui, na mão, agora! Eu mesmo acessava a tabela ou o arquivo para consultar o que quer que fosse necessário. Precisa corrigir um dado, processar algo urgente? Um job@ resolve seu problema e se for urgente, urgente mesmo da até pra rodar na janela do on-line! Por vezes esbarravamos em processos que iam além de nossos conhecimentos e poderes, mas devido a criticidade do sistema esses impedimentos eram resolvidos muito rapidamente, o ser um sistema crítico era o abre portas para que os processos rodassem rápido e que a ajuda chegasse a galope, uma pena pois deveria ser assim com todos os sistemas. Poderia falar horas a fio sobre isso, mas fica para outra oportunidade.

Os processos incorporados na rotina ao longo dos anos foi o que acabou fazendo com que projetos começassem a demorar cada vez mais.

No tempo de uma Sprint você sequer consegue enviar seu pacote para o ambiente de homologação!

Vai precisar adicionar uma coluna em uma tabela! Lá se foi sua Sprint e você nem viu sinal da nova coluna!

Ah, mas o problema é que não temos as ferramentas para DevOps no mainframe! Balela, tem tudo e nem precisa de nada novo, a própria IBM pra quem for preguiçoso tem o UrbanCode que faz um deploy automatico com interface gráfica e tudo! Não precisa nunca ter visto um Jcl na vida pra conseguir usar, mas isso é outro tópico e todos os grandes bancos têm suas ferramentas para deploy em produção de versões de aplicaçoes no mainframe de maneira automatica.

Sair do mainframe esperando que os tempos de projetos serão menores, que irão dar conta de lançar produtos na velocidade de uma startup é uma utopia!

Uma startup não tem um "by the book" a ser seguido, o cara precisa enviar pra produção uma alteração que não deu pra testar direito ele vai lá e manda se der problema ele volta e analisa.

Isso é inconcebível de acontecer hoje em dia num grande banco! Mesmo existindo ambiente de produção para baixa controlada se você fizer algo assim será demitido! Se bem que pensando aqui... a propria start up quando fica muito grande acaba incorporando os mesmos processos seguidos pelos grandes bancos e acaba perdendo seu grande diferencial e tem que contratar muito mais gente pra dar conta de um monte de coisa que não precisava e nao existia no começo! Mas isso é assunto pra outro dia.

Uma pena os bancos estarem gastando tempo com conversões de sistemas para "baixa plataforma" tentando ganhar velocidade na entrega de projetos ou mesmo iniciando projetos novos já em PCs sendo que o que precisam é somente voltar para suas raízes tecnológicas de 20, 30, 40 anos atrás.

Um banco digital a partir do zero, hoje em dia, sai em menos de 3 anos, já vi projetos de produtos/soluções bancárias que demoraram mais que isso!

Repito, o problema não é a tecnologia, mainframe ou PC, são os processos.

Entretanto, como não temos fintechs rodando mainframe só confirmarei isso daqui uns 10 anos quando os bancos tiverem concluído a migração quase que total do mainframe para PCs e os projetos continuarem demorando o mesmo tempo que outrora.


Encerrei como deu, to com sono, quando tiver tempo reescrevo.


quinta-feira, 20 de junho de 2019

Senha troca de logotipo Kouprey - MP5 - Central Multimídia Kouprey Com Espelhamento - Marca do Carro

Senha para Troca de Logotipo Kouprey - MP5 - Central Multimídia Kouprey com Espelhamento

Cara, que compra mais bem acertada, pena que o raio do painel ter que ser cortado e eu ter que comprar uma moldura de plástico que não tem nem 5 reais de material por mais de 150, quase a metade do preço do aparelho, mas enfim...

Senha para Troca do Logotipo de Inicialização

A senha para troca do logotipo de inicialização do MP5, central multimídia, seja lá o que mais, é:

6556

Detalhes do Modelo

O modelo é o KPY-6210QR.

Central Multimídia Instalada no Fiat Mobi

Central multimídia Kouprey instalada com moldura no Fiat Mobi
Figura 1 - Kouprey instalado

Central multimídia instalada com moldura top no Mobi.

Links de Compra

Comprei a moldura para o Fiat Mobi no Mercado Livre. Aqui está o link:

Moldura Frente Mobi 2016 2 Din para DVD Multimídia Preto

E a própria central multimídia Kouprey também foi comprada no Mercado Livre. Confira:

Central Multimídia GPS Espelhamento Kouprey

Manuais do Usuário e Instalação

Manual do Usuário: https://www.knok.com.br/download/Manual_do_Usuario.pdf

Manual de Instalação do Comando pelo Volante: https://www.knok.com.br/download/Comando_de_volante.pdf

quarta-feira, 22 de maio de 2019

Como Passei na Certificação Google - Google Cloud Certified - Professional Cloud Architect e voce também pode passar!

Como Passei na Certificação Google - Google Cloud Certified - Professional Cloud Architect e você também pode passar!

Manooooo, pensa num cara caindo de paraquedas no rolê! Essa frase me fez lembrar eu chegando em Brasilia lá nos idos de 2000 e qualquer coisa, que eu também tinha caido de paraquedas!

Quem me conhece sabe que minha praia é a tela preta com letra verde conectado com um mainframe via um terminal 3270 qualquer emulado e de preferencia com 43 linhas x 80 colunas.

Enfim, a firma que estou trabalhando (CI&T) estava precisando certificar alguns seletos funcionarios nas tecnologias do Google... na copa (do mundo de futebol) teve uma iniciativa que nao consegui participar por falta de tempo (digo, por nao priorizar esse item, assim que os coaches gostam que a gente fale atualmente) e que rolou treinamento pra galera que tivesse a fim de fazer, um concurso e a certificacao na faixa. Eu perdi esse bonde mas fiquei com aquilo atras da orelha, pô nada nada 200 verdinhas dos americanos pagas com cartao de credito beira quase os 1000 reais, e no esquema de eu banco pra voce pareceu um ótimo negócio...

Enfim 2, em novembro ou dezembro na ferramenta de comunicacao da firma, o carinhosamente chamado de "Esconde-Drop" (https://deskdrop.co/) porque basicamente voce nunca fica sabendo o que esta acontecendo atraves dele e quando voce precisa procurar algo que acabou de ler já era! É uma ferramenta boa, mas carece de melhorias! Agora voltando, o pessoal publicou que estariam ressarcindo os caboclos que se aventurarem a tirar certificacao do google em 100%, achei joia, sem falar que se nao passasse iam reembolsar metade, achei um grande negocio.

Tentei recuperar as noticias no esconde-drop à época da Copa, consegui achar alguma coisa, conversei com uma meia duzia de cinco ou seis, achei um outro lance que a firma tinha uns curso no Coursera (cursos de coisas do Google) de graça e tals, fui atras das informacoes e consegui descolar uma "trilha" inteira com um monte de cursos pra me preparar pra tal da certificação. Comprei aquelas provas simuladas no e-bay, fiz o simulado do proprio google, assisti os videos, fiz os laboratorios, estudei quase tudo que tinha numa planilha mapeada pelo Ivan com todos os topicos, eu sabia que nao estava 100%, mas como ninguem sabe quanto tem que tira, nem o gabarito da prova, fui lá ver qualé que era.

Me phodi, fiquei bem frustrado, tomei um FAIL na cara depois do submit final do exame, e ficou por isso, dancei! Pedi o reembolso e bola pra frente, nao trabalho com isso mesmo, aprendi um monte de conceito novo, vi coisas que nem imaginava que já existissem e fiz coisas que no mainframe sao impossiveis!... Curti, mas valeu a ideia, nao deu, até escrevi no Linkedin que ta tudo bem nao passar.

Aqui colocar o post do linkedin

https://www.linkedin.com/feed/update/urn:li:activity:6479051901970239489

sexta-feira, 19 de abril de 2019

Data Center - Itaú e Santander - Campinas Barão Geraldo, Mogi Mirim

Data Center - Itaú e Santander - Campinas Barão Geraldo, Mogi Mirim

Fazia tempo que estava procurando e achei o PDF da apresentação do Itaú sobre o Datacenter de Mogi, de quebra ainda achei um pouco de história do do Santander aqui do lado de casa.

Sala central do data center do banco Santander inaugurado em Barão Geraldo: integrado a quatro grandes centros instalados em outros países (César Rodrigues/AAN)

Command Center do banco Santander dentro do DataCenter inaugurado em Barão Geraldo:

Sinceramente não sei o que conseguiram vender à época sobre os empregos que seriam gerados, mas faltou conversar com alguém da área!

Apresentação do Itaú - Centro Tecnológico Mogi Mirim (PDF)

Vídeo 1 - Institucional do Santander

Vídeo 2 - Itaú Mogi Mirim

quinta-feira, 14 de fevereiro de 2019

REXX para localizar string em pacotes do Changeman

Atualizado em 2025 06 11 - Reescreve o post com ajuda do perplexity, nao testei o fonte e nem comparei pra ver se ele mudou alguma coisa, mas bonito devo dizer que ficou!


REXX para localizar string em pacotes do Changeman

Este script REXX realiza uma busca por uma string em todos os membros de um pacote do Changeman, gerando um relatório com os resultados encontrados. Útil para quem precisa localizar rapidamente trechos de código ou referências em ambientes mainframe integrados ao ChangeMan.

Exemplo de uso

Execute o script informando a sigla do sistema, o número do pacote e a string a ser pesquisada.

Código REXX

FINDCHG.REXX

/**  REXX  **/                                                        
arg sigla pacote texto                                                
call valida_parametros;                                                
call verifica_se_pacote_existe;                                        
/* aqui a magica acontece! */                                          
call outtrap "mbrs."                                                  
"LISTD" "'"pdsname"'" "MEMBERS"                                        
call outtrap "off"                                                    
                                                                       
do ndx=1 to mbrs.0                                                    
   if mbrs.ndx = "--MEMBERS--" then leave                              
end                                                                    
ndx=ndx+1                                                              
qtd_membros = mbrs.0 - ndx + 1                                        
say 'Procuraremos a string em ' qtd_membros ' membros.'                
/* "ALLOC FI(RELAT) DA('WALBUGA.OUTDD.SAIDA') MOD REUSE" */            
log = USERID()'.OUTDD.SAIDA'                                          
say log                                                                
/* "ALLOC FI(RELAT) DA(log) MOD REUSE"                                
   "ALLOC F(SYS010) DS('"particionado"("membro")') SHR REUSE"          
   "ALLOC FI(RELAT) DA('WALBUGA.OUTDD.SAIDA') MOD REUSE"  */          
 "ALLOC FI(RELAT) DA('"log"') MOD REUSE"                              
IF RC \= 0 THEN                                                        
   DO                                                                  
      say "----------------------------------------"                  
      say "Erro na alocacao do arquivo de relatorio"                  
      say "----------------------------------------"                  
     EXIT 0                                                            
   END                                                                
/* aqui a magica acontece 2! */                                        
call listdsi "'"pdsname"'"                                            
particionado=sysdsname                                                
/**-----------------------------------------------------------------**/
linha.1="------------------------------------------------"            
linha.2="Inicio do processamento ------------------------"            
linha.3="------------------------------------------------"              
linha.4="Procurando " pdsname " por <" texto ">"                        
linha.5="------------------------------------------------"              
linha.0=5                                                              
"EXECIO" linha.0 "DISKW RELAT (STEM linha."                            
do curmbr = ndx to mbrs.0                                              
   parse value mbrs.curmbr with membro                                  
   membro=strip(membro)                                                
   flag=1                                                              
/* say "member="particionado"("membro")" */                            
/* assim sai o membro */                                                
/* aqui =  'particionadome' ||(membro) */                              
/* aqui = "'"(membro)"'" */                                            
/* say aqui */                                                          
/* "ALLOC F(SYS010) DS('"particionado"("membro")') SHR REUSE" */        
   "ALLOC F(SYS010) DS('"particionado"("membro")') SHR REUSE"          
/* "ALLOC F(SYS010) DS("'"aqui"'") SHR REUSE" */                        
   "EXECIO * DISKR SYS010 (FINIS STEM in."                              
   "FREE F(SYS010)"                                                    
   fnd=0                                                                
   do recid=1 to in.0                                                  
      if pos(texto,in.recid) > 0 then                                  
        do                                                              
           if flag = 1 then                                            
             do                                                        
              linha.1="------------------------------------------------"
              linha.2="----> " membro " contem <" texto ">"            
              say linha.2                                              
              linha.3 = in.recid                                        
              linha.0=3                                                
              "EXECIO" linha.0 "DISKW RELAT (STEM linha."              
              flag=0                                                    
             end                                                        
           linha.1 = in.recid                                          
           linha.0=1                                                    
           "EXECIO" linha.0 "DISKW RELAT (STEM linha."                  
        end                                                            
   end                                                                  
end                                                                    
say '*** Pesquisa finalizada com sucesso ***'                          
linha.1="////////////////////////////////////////////////"            
linha.2="////////////////////////////////////////////////"            
linha.3="////////////////////////////////////////////    "            
linha.4="//////////////////////////////////////////// FIM"            
linha.5="////////////////////////////////////////////////"            
linha.0=5                                                              
"EXECIO" linha.0 "DISKW RELAT (STEM linha."                            
"EXECIO 0 DISKW RELAT (FINIS"                                          
"FREE F(RELAT)"                                                        
exit 0                                                                
                                                                       
/*----------------------- */                                          
valida_parametros:                                                    
/*----------------------- */                                          
if sigla = "" | pacote = "" | texto = "" then                          
 do                                                                    
   clear                                                              
   say ""                                                              
   say "Bem vindo "  USERID()                                          
   say ""                                                              
   say  "Informe: "                                                    
   say  " - sigla do sistema"                                          
   say  " - numero do pacote "                                        
   say  " - string a ser pesquisada"                                  
   say ""                                                              
   say  "Como não foi informado abrirei a opcao de informar abaixo."  
   say ""                                                              
   say  "Digite SAI para sair, tecle ENTER para continuar..."          
   pull ok                                                            
   say ""                                                              
   /* if parse upper (ok) = 'SAI' then         -- VER USO DO UPPER */  
   if ok = 'SAI' then                                                  
    do                                                                
      exit 0                                                          
    end                                                                
 end                                                                  
if sigla = "" then                                                    
   do                                                                  
      say "----------------------------------------------------"      
      say "Erro: Informe a sigla do sistema com duas posicoes"        
      say "----------------------------------------------------"      
      say ""                                                          
      say 'Digite a sigla:'                                            
      pull sigla                                                      
   end                                                                
if pacote = "" then                                                    
   do                                                                  
      say "--------------------------------"                          
      say "Erro: Não foi informado o pacote"                          
      say "--------------------------------"                          
      say ""                                                          
      say "Procuraremos em DESICBIB.CHGMAN.STG.NG0I.#pacote.SRC"      
      say ""                                                          
      say 'Digite o numero do pacote com 6 numeros :'                  
      pull pacote                                                      
   end                                                                
if texto = "" then                                                    
   do                                                                  
      say "-----------------------------------------------------------"
      say "Erro: Não foi informada a string a ser pesquisada no pacote"
      say "-----------------------------------------------------------"
      say ""                                                          
      say 'Digite a string:'                                          
      pull texto                                                      
   end                                                                
return                                                                
                                                                       
                                                                       
/*------------------------------------- */                            
verifica_se_pacote_existe:                                            
/*------------------------------------- */                            
                                                                       
/*         DESICBIB.CHGMAN.STG.NG0I.#000651.SRC */                    
pdsname = 'DESICBIB.CHGMAN.STG.'sigla'0I.#'pacote'.SRC'                
    say '---------------------------------------------------------------'
    say 'Procurando' texto ' em 'pdsname''                                
    say '---------------------------------------------------------------'
    x = SYSDSN("'"pdsname"'")      /* só pros feras!!! ODEIO ISSO */      
    say x ', vamos em frente que o pacote ta lá!'                        
    say '---------------------------------------------------------------'
    if x <> "OK" then                                                    
       do                                                                
          say "Erro: Não conseguimos localizar o pacote #" pacote        
          say "Erro: Não conseguimos localizar o pacote:" pdsname        
          say "Error: " pdsname " > " sysdsn(pdsname)                    
          say "Press Enter to continue"                                  
          pull uresp                                                      
          exit 8                                                          
       end                                                                
    return                                            

Como funciona

  • Valida os parâmetros de entrada (sigla, pacote, texto).
  • Verifica se o pacote existe no Changeman.
  • Lista todos os membros do pacote e busca a string informada em cada um.
  • Gera um relatório de saída com os membros e linhas onde a string foi encontrada.

Observações

  • O script pode ser adaptado para outros padrões de pacotes ou ambientes.
  • Certifique-se de ter as permissões necessárias para executar comandos de alocação e leitura de membros no ambiente mainframe.