Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

11/24/2015

Apostila de Banco de Dados DB2 para Mainframes


A apostila Banco de Dados DB2 para Mainframes foi desenvolvido pela Mainframe School treinamentos em seus cursos sendo um ótimo material de estudos totalmente em português. O material mostra uma introdução sobre o DB2 para Mainframes sendo indicado para estudantes de concursos públicos e profissionais de TI em geral. Vale a pena conferir.

Download PDF

Créditos

11/08/2015

Instalando o Hercules z/OS 1.10 no Windows


Este post explica como instalar e iniciar o Hercules no Windows rodando o z/OS 1.10, vou colocar aqui todos passos necessários para instalar no Windows ou um verdadeiro mainframe e em execução.

1.1 Pré-requisitos

1.1.1 HARDWARE

Obviamente, temos de ter um PC/Notebook com uma boa especificação, caso contrário, a implementação deste emulador será muito lenta. No meu caso, rodo sem problemas sob um Dual Core o Hercules e até o primeiro Pentium 4 de 1,8 GHz, dando uma proporção de desempenho MIPS bastante aceitável.

De qualquer forma, uma das coisas que para emulação é muito armazenamento, especialmente se Hercules ou o que en cima- executar página. Portanto, para esta instalação, você deve ter pelo menos 1 GB de RAM para inicializar o z/OS "nua", ou seja, apenas JES2, TSO e VTAM. Se executar o DB2, CICS, etc., seria aconselhável ter pelo menos 2 GB de RAM mínima para o Hercules sozinho. Isto significa que além de Windows também precisa de memória para ser executado.

Na minha máquina particular, eu tenho 2 GB de RAM, e "apenas" tem que Hercules, ou seja, eu não tenho mais aplicações para executar (e outras emulações de terminal, que explicarei mais tarde). Portanto, eu tenho 1,5 GB de RAM reservados para Hercules e os restantes 512 MB está disponível para o Windows deixou isso irá impedir que o Windows processa-se a paginação, causando problemas de lentidão e falta de desempenho.

Finalmente, para instalar z/OS 1.10, vamos precisar de 17 GB disponíveis, é o que ocupa as imagens do ADCD, que vou explicar mais tarde.

1.1.2 Software

Além de ter a do Windows (testando o ter feito no Windows XP, mas Hercules é executado no Windows 2003 Server ou mesmo Windows 7) instalou o último nível de correção, você deve ter instalado um emulador de terminal IBM 3270. No meu caso, eu tenho PW3270 que é um emulador de telnet gratis para poder acessar o Hercules.

1.1.3 Comunicação

Se nossa equipe vai participar em uma rede, e até mesmo futuros terminais servirá 3270 para outros cargos ou terminais estão rodando em computadores diferentes no próprio Hércules, deve ter configurado adequadamente IP. No meu caso, o meu servidor tem o IP 192 168 254 118 Hercules. Também é importante ter configurado adequadamente o Gateway e outros. Se o computador pode se conectar à Internet está configurada corretamente.

Também é importante para adicionar exceções no firewall, uma vez que, como veremos, as portas TCP abertas para o Hercules que podem ser conectados a qualquer terminal remotamente, por isso é importante para adicionar exceções.

Hercules 1.2 Instalação no Windows

Para a instalação de Hércules, siga estes passos:

1. Vamos ir para o Web http://www.hercules-390.org/ e vamos para a parte de download. Nele, Hercules está disponível para uma variedade de plataformas e sistemas operacionais, para escolher nossa instalação do Windows (no meu caso, o arquivo MSI de 32 bits) e prossiga para baixá-lo.


Fig. 1: Baixar o arquivo Hercules-3.07-w32.msi

2. Uma vez baixado, execute-o e vamos lançar um assistente que vai continuar passo a passo pelos seguintes números:



Fig. 2: Bem-vindo ao assistente.



Fig. 3: Selecionar Pasta de Instalação



Fig. 4: Confirmar dados de instalação



Fig. 5: Instalação concluída

1.3 Instalação ADCD z/OS 1.10

Esta parte da instalação depende inteiramente P2P, não há nenhum site oficial para download como É ILEGAL executar z/OS 1.10, sem a licença correspondente. Se você deseja obter uma cópia legal do z/OS, você deve ir ao site da IBM http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.ADCD.GLOBAL.HTML(READM110) 'e fazer a correspondente e pedido de pagamento subsequente.

1.3.1 É ADCD

O ADCD significa Application Developer / distribuição controlada e é uma versão do z / OS preparado com todos os aplicativos instalados para as empresas que querem desenvolver sob a plataforma de mainframe mas não têm ninguém para trabalhar. Portanto, a IBM configurou az / OS "pronto para correr" com os parâmetros e perfis de endereçamento de partida para o IPL específicas, ter uma sessão TSO sem ter que tocar qualquer parâmetro.

1.3.2 Parametrização do ADCD

Como essa instalação é baseado em um mainframe, temos que saber seus parâmetros e definições para configurar as Hercules de acordo com as especificações de dispositivos e comportamento do ADCD. A este respeito, a web http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.ADCD.GLOBAL.HTML(READM110) 'dá-nos algumas pistas, mas fará um resumo aqui:

Endereços dos Dispositivos:

- Endereços de Disco: 0A80 para 0A9F
- Terminal Endereço: 0700 para 071F e 0900 a 091F
- Endereços de fita: 0500 para 050F e 0580 a 058F
- Endereços TCP CTC-comunicações / IP: 0E20 para 0E22
- Disco IPL: 0A80
- Disco IODF e Catálogo Master: 0A82

Parâmetros de carga:
+----+-----------------------------------------------------------------------------------+
| CS | CLPA and cold start of JES2. Base z/OS system functions i.e. no CICS, DB2, WAS    |
+----+-----------------------------------------------------------------------------------+
| 00 | Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.  |
+----+-----------------------------------------------------------------------------------+
| WS | Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.  |
+----+-----------------------------------------------------------------------------------+
| DC | CLPA, brings in CICS LPA modules, cold start of JES2, starts up DB2 and CICS.     |
+----+-----------------------------------------------------------------------------------+
| DB | Warmstart of JES2 and starts the DB2 and CICS.                                    |
+----+-----------------------------------------------------------------------------------+
| DI | CLPA and cold start of JES2 and loads the IMS Libraries. IMS manually started.    |
+----+-----------------------------------------------------------------------------------+
| CC | CLPA and cold start of JES2, loads the CICS Libraries, starts up CICS, no DB2.    |
+----+-----------------------------------------------------------------------------------+
| CW | Warm start of JES2, and starts up CICS.                                           |
+----+-----------------------------------------------------------------------------------+
| 2C | CLPA, cold start of JES2, starts up DB2, no CICS.                                 |
+----+-----------------------------------------------------------------------------------+
| 2W | Warm start of JES2, starts up DB2, no CICS.                                       |
+----+-----------------------------------------------------------------------------------+
| IC | CLPA and cold start of JES2 and load the IMS, start IMS, no DB2 or CICS.          |
+----+-----------------------------------------------------------------------------------+
| IW | Warm start of JES2 start IMS, no DB2 or CICS.                                     |
+----+-----------------------------------------------------------------------------------+
| AC | CLPA and cold start of JES2 load IMS and CICS libraries, start IMS,DB2,and CICS.  |
+----+-----------------------------------------------------------------------------------+
| AW | Warm start of JES2. start IMS, DB/2, and CICS.                                    |
+----+-----------------------------------------------------------------------------------+
| BC | CLPA and cold start of JES2, load WAS libraries, WAS is manually started          |
+----+-----------------------------------------------------------------------------------+
| BW | Warm start of JES2. WAS is manually started.                                      |
+----+-----------------------------------------------------------------------------------+
| 99 | Points to IODF99 for IPL on MP3000.                                               |
+----+-----------------------------------------------------------------------------------+
O LOADER PARAMETER dá muita informação dE IPL a partir de mainframe e é um parâmetro necessário para O z/OS. O parâmetro tem a seguinte estrutura:
+------+-----------------------------------------------------------------------+
| AAAA | Direção do disco onde reside o IODF                                   |
+------+-----------------------------------------------------------------------+
| BB   | Membro de LOAD(BB) dentro da SYS1.IPLPARM parametrizara nossa arraque |
+------+-----------------------------------------------------------------------+
| C    | Parâmetro de mensagens adicionais (M é "mensagem")                    |
+------+-----------------------------------------------------------------------+
| D    | Nucleo alternativo quando falha a carga do nucleo primário            |
+------+-----------------------------------------------------------------------+
Portanto, LOAD PARAMETER será 0A82XXM1 onde XX representa o topo da lista. Por exemplo, LOADPARM 0A82CSM1 irá pesquisar o IODF no disco no 0A82, o sistema inicializa em modo de cold start (sem CICS, DB2, etc.), deixando mensagens descritivas durante a inicialização e é o núcleo alternativo NUCLEUS1 se o primário falhar. Na verdade, primeiro z/OS para executar, você precisa para começar bem, para fazer uma memória limpar, SPOOL, etc.

1.3.3 - Instalação do z/OS e configuração final

A instalação, uma vez feito o download do z/OS de um ambiente P2P é tão simples como criar em sua unidade de disco C: uma pasta chamada ZOS110 e queimá-la com CCKD 26 arquivos de extensão. Cada arquivo é um modelo IBM 3390 3, 2,8 GB de capacidade líquida DISC, só virou-se para um utilitário especial de disco real em um arquivo, assim como você faria no comando DD ou Linux como se torna DVD para o formato ISO. Meios compactados CCKD Contagem chave de dados, que é o formato de arquivo para -não controla setores endereçáveis, tais como os PCS e é comprimido, porque caso contrário, cada arquivo ocuparia quase 3 GB, o que tornaria as nossas instalações ocupadas muito bonito o que mantém até hoje. É comprimido não nos preocupa porque Hercules tem um driver que pode trabalhar com esses volumes compactados.
 +-------------+-------------------------------------------------------------------+
| JARES1.CCKD | Disco Residente IPL                                               | 
+-------------+-------------------------------------------------------------------+
| JARES2.CCKD | Residente                                                         |
+-------------+-------------------------------------------------------------------+
| JASYS1.CCKD | Master Catalog, IODF, configuracões e parametrizações             |
+-------------+-------------------------------------------------------------------+
| JAUSS1.CCKD | Unix System Services , arquivos ZFS e HFS de Unix                 |
+-------------+-------------------------------------------------------------------+
| JAPRD1.CCKD | SMP/E: Produtos instalados                                        |
+-------------+-------------------------------------------------------------------+
| JAPRD2.CCKD | SMP/E: Produtos instalados                                        |
+-------------+-------------------------------------------------------------------+
| JAPRD3.CCKD | SMP/E: Produtos instalados                                        |
+-------------+-------------------------------------------------------------------+
| JAPRD4.CCKD | SMP/E: Produtos instalados                                        |
+-------------+-------------------------------------------------------------------+
| JADIS1.CCKD | SMP/E: Biblitoeca de distribuição                                 |
+-------------+-------------------------------------------------------------------+
| JADIS2.CCKD | SMP/E: Biblitoeca de distribuição                                 |
+-------------+-------------------------------------------------------------------+
| JADIS3.CCKD | SMP/E: Biblitoeca de distribuição                                 |
+-------------+-------------------------------------------------------------------+
| JADIS4.CCKD | SMP/E: Biblitoeca de distribuição                                 |
+-------------+-------------------------------------------------------------------+
| JADIS5.CCKD | SMP/E: Biblitoeca de distribuição                                 |
+-------------+-------------------------------------------------------------------+
| JADIS6.CCKD | SMP/E: Biblitoeca de distribuição                                 |
+-------------+-------------------------------------------------------------------+
| JADB81.CCKD | DB2 Versão 8                                                      |
+-------------+-------------------------------------------------------------------+
| JADB82.CCKD | DB2 Versão 8                                                      |
+-------------+-------------------------------------------------------------------+
| JADB83.CCKD | DB2 Versão 8                                                      | 
+-------------+-------------------------------------------------------------------+
| JADB84.CCKD | DB2 Versão 8                                                      | 
+-------------+-------------------------------------------------------------------+
| JADB91.CCKD | DB2 Versão 9                                                      | 
+-------------+-------------------------------------------------------------------+
| JADB92.CCKD | DB2 Versão 9                                                      | 
+-------------+-------------------------------------------------------------------+
| JACIC1.CCKD | Sistema Transaccional CICS                                        |
+-------------+-------------------------------------------------------------------+
| JAIMS1.CCKD | Sistema Transaccional IMS                                         |
+-------------+-------------------------------------------------------------------+
| JAWAS1.CCKD | Produtos WebSphere                                                |
+-------------+-------------------------------------------------------------------+
| JAWAS2.CCKD | Produtos WebSphere                                                |
+-------------+-------------------------------------------------------------------+
| JAWAS3.CCKD | Produtos WebSphere                                                |
+-------------+-------------------------------------------------------------------+
| SARES1.CCKD | Stand Alone Rescue (Recuperação em caso de falha grave            |
+-------------+-------------------------------------------------------------------+
As imagens são desse jeito no Windows

Com esta lista, de acordo com a configuração de endereços de disco e terminais, que são capazes de gerar o arquivo de configuração que é então utilizado pelo Hercules, o chamado hercules.cnf, que terá o seguinte conteúdo:
# --------------------------------------------------------------------------------------- 
# Hercules Emulator Control file...
# Description: 
# MaxShutdownSecs: 15
# --------------------------------------------------------------------------------------- 
#
# Fichero de Configuracion para Hercules & IBM ADCD z/OS 1.10
#
CPUSERIAL 123456        # Numero de Serie CPU
MODEL     603           # Modelo de maquina
CPUMODEL  2094          # Tipo de maquina – un z9 EC –
MAINSIZE  1024          # Memoria Principal en Megabytes – 1 GB de RAM
XPNDSIZE  0             # Memoria Expandida –no se utiliza-
CNSLPORT  23            # Puerto TCP donde conectaran las consolas
NUMCPU    2             # Numero de CPUs (Dual Core 2, QuadCore 4)
TZOFFSET  +0100         # Huso Horario (GMT +1 Europa/Madrid)
OSTAILOR  OS/390        # Ajuste de Rendimiento para OS/390 o z/OS
PANRATE   FAST          # Tasa de refresco Hercules
ARCHMODE  ESAME         # Modo Operacion S/370, ESA/390 o ESAME (64bit)
PGMPRDOS  LICENSED      # Permiso de ejecución z/OS en Hercules
# --------------------------------------------------------------------------------------- 
# Parametro de Arranque IPL
# --------------------------------------------------------------------------------------- 
#
LOADPARM  0A82CSM1      # z/OS 1.10
#
# --------------------------------------------------------------------------------------- 
# Display Terminals
# --------------------------------------------------------------------------------------- 
0700    3270
0701    3270
0702    3270
0703    3270
0704    3270
# --------------------------------------------------------------------------------------- 
# DASD Devices
# --------------------------------------------------------------------------------------- 
0A80    3390    C:ZOS110\JARES1.CCKD
0A81    3390    C:ZOS110\JARES2.CCKD
0A82    3390    C:ZOS110\JASYS1.CCKD
0A83    3390    C:ZOS110\JAUSS1.CCKD
0A84    3390    C:ZOS110\JAPRD1.CCKD
0A85    3390    C:ZOS110\JAPRD2.CCKD
0A86    3390    C:ZOS110\JAPRD3.CCKD
0A87    3390    C:ZOS110\JAPRD4.CCKD
0A88    3390    C:ZOS110\JADIS1.CCKD
0A89    3390    C:ZOS110\JADIS2.CCKD
0A8A    3390    C:ZOS110\JADIS3.CCKD
0A8B    3390    C:ZOS110\JADIS4.CCKD
0A8C    3390    C:ZOS110\JADIS5.CCKD
0A8D    3390    C:ZOS110\JADIS6.CCKD
0A8E    3390    C:ZOS110\JADB81.CCKD
0A8F    3390    C:ZOS110\JADB82.CCKD
0A90    3390    C:ZOS110\JADB83.CCKD
0A91    3390    C:ZOS110\JADB84.CCKD
0A92    3390    C:ZOS110\JADB91.CCKD
0A93    3390    C:ZOS110\JADB92.CCKD
0A94    3390    C:ZOS110\JACIC1.CCKD
0A95    3390    C:ZOS110\JAIMS1.CCKD
0A96    3390    C:ZOS110\JAWAS1.CCKD
0A97    3390    C:ZOS110\JAWAS2.CCKD
0A98    3390    C:ZOS110\JAWAS3.CCKD
0A99    3390    C:ZOS110\SARES1.CCKD
Coloque este arquivo (hercules.cnf) com as configurações na pasta onde foi instalado o Hercules do seu Windows - se escolheu o assistente de configuração padrão, ele estará em C:\Program Files\Hercules\Hercules 3,07 (32 Bit) - e enquanto os arquivos do ADCD que gravamos na pasta C:\ZOS110, agora vamos rodar o Hercules.

Liberando Acesso nas Imagens

Antes de começar a rodar temos que tirar da pasta das imagens o acesso de leitura;



1.4 Executando o Hércules

Agora, nós temos todos os componentes prontos para rodar a primeira vez o Hercules em seu PC. Para fazer isso, vai na pasta onde esta instalado o Hercules e procure pelo arquivo hercules.exe e de dois cliques neste executável. Isto irá abrir uma janela de linha de comando e, igual a uma tela como a figura a seguir:



A Fig. 6: Início da Hercules

Se você pressionar a tecla ESC, temos uma representação gráfica do Hercules com todos as imagens e processadores disponiveis:



A Fig. 7: Representação gráfica de Hercules

Você pode reparar na nossa figura acima, nós temos a lista de dispositivos que definimos. 3270 é o terminal para podermos acessar o Hercules, já os 3390 são discos. Se eles são verdes como todos discos - que é que eles são detectados e estão ativos. Se eles são cinza, isso significa que eles não estão ainda ligadas, tais como terminais de fitas e 3490.

1.4.1 Conectando a Console Master

Como acontece em instalações de mainframe de grandes, precisamos de um ou vários terminais 3270 que se tornem a nossa console do sistema direto (ou Console Master), onde vamos dar os comandos para z/OS durante a inicialização. Além disso, precisamos também nos conectar com a TSO, CICS, etc. Portanto, temos que ter um/dois emuladores de telnet abertos e configurados para o nosso Hercules. Para fazer isso, vamos vamos usar o emulador PW3270 que é um emulador gratis - Clique Aqui



1.5 - Iniciando o IPL no z/OS 1.10

Depois de instalado o emulador de telnet, configurado e conectado no nosso Hercules chegou o momento de iniciar o z/OS, temos de ir para a janela de execução do Hércules, para fazer a inicialização do disco de IPL z/OS, que é o JARES1 que tem o endereço 0A80. Assim, você pode fazer o IPL de duas maneiras: a partir da representação gráfica do Hercules ou digitando IPL 0A80 na console do Hercules:

1 - Pelo Modo Gráfico: Pressione a L (IPL), em seguida, pressione G (o endereço 0A80)



Fig. 13: A carga do z/OS a partir da representação gráfica

NOTA: No Hercules observe em Peripherals onde esta o disco 0A80 esta na Unidade G - depois de ter clicado L (ipL) clique G que o IPL será iniciado neste endereço.

2 - Pelo Modo Console: escreva na tela de comandos da console do Hercules o comando IPL 0a80 e pressione Enter.



Fig. 14: Carregando o z/OS a partir do console

Se nos concentrarmos em nossa sessão de 3270 do endereço 700, (se você abriu dois observe que uma delas você recebera mensagens - esta será a console master) que deve começar a ver mensagens.

1.5.1 INITIALIZATION SYSPLEX

Como é a primeira vez que você esta rodando o z/OS, você vai receber uma mensagem no console da seguinte forma:

IXC414I CANNOT JOIN SYSPLEX ADCDPL WHICH IS RUNNING IN MONOPLEX MODE: CONFIGURA
TION REQUIREMENT
 IXC404I SYSTEM(S) ACTIVE OR IPLING: ADCD
IXC420D REPLY I TO INITIALIZE SYSPLEX ADCDPL, OR R TO REINITIALIZE XCF.
Isto porque inicializamos pela primeira vez um chamado SYSPLEX ADCDPL, responda na console com o comando
R 00, R
o I (Inicializar). E continuará a implementação do sistema, como de costume. Isso só pode ser feito uma vez que temos os seguintes tempos e nos pediu para não inicializar nada.

1.5.2 - Carga do z/OS

Uma vez passado o NIP, o texto deve mover-se à turquesa verde e o console começará a mostrar um monte de mensagens informativas e de carga dos subsistemas. Mensagens têm sempre um código de mensagem e texto abaixo. A cor das mensagens é também importante, uma vez que terá um ou outro tratamento com base na mesma:

- VERDE: Estas são mensagens informativas. Não há necessidade de atenção.
- Branco: Eles são mensagens de cuidado, para que o operador deve prestar atenção a fazer o que lhes é dado (responder a uma pergunta, etc.).
- ROJO: São mensagens de advertência severa de erro possível. Essas mensagens têm um código que terá que olhar no manual do z/OS para sua origem e as ações a tomar para resolver o aviso ou erro.

O processo de carregamento z/OS, colocara nesta ordem os seguintes subsistemas:

- WLM: Workload Manager: Estas mensagens são reconhecidos pelo código IWMXXXX. Na verdade, você recebe uma mensagem de aviso em vermelho dizendo que, na ausência de processamento de políticas predefinidas, que usará uma política padrão.
- JES2: Job Entry Subsystem. Reconhecemos isso porque faz de COLD-START e deixa as mensagens em branco com os códigos começando com $HASPXXX
- VTAM: Virtual Telecommunication Access Mode: O sistema de comunicações, as mensagens começando com o código ISTXXXX
- ZFS: O sistema Unix: Suas mensagens começando com o código BPXXXXX
- TSO: Time Sharing Option. São as mensagens iniciadas com IKTXXXX do sistema. Na verdade, se olharmos para estes dois, já podemos entrar no nosso máquina:

$HASP373 TSO      STARTED

IEF403I TSO – STARTED – TIME=11.56.33

IKT007I TCAS ACCEPTING LOGONS

1.5.3 - Acessando o TSO

Na figura da imagem abaixo, esta escrito LOGON IBMUSER, temos que dar este comando para acessar o TSO com este usuário - nesta versão de z/OS temos esses usuários disponíveis para acessar ;



Fig. 15: Logo de entrada do sistema z/OS desde terminal 701

Para facilitar esta abaixo os usuários com as senhas para o z/OS 1.10
+------------------+-----------------+
| Userid           | Password        |
+------------------+-----------------+
| ADCDMST          | SYS1 or ADCDMST |
| IBMUSER          | SYS1 or IBMUSER |
| SYSADM           | SYS1 or SYSADM  |
| SYSOPR           | SYS1 or SYSOPR  |
| ADCDA - ADCDZ    | TEST            |
| WEBADM           | WEBADM          |
| OPEN1 thru OPEN3 | SYS1            |
| ZOSMFAD          | ZOSMFAD         |
+------------------+-----------------+
A seguinte tela vai nos pedir a senha do usuário IBMUSER



Fig. 16: LOGON IBMUSER

Digite a senha e tecle enter, estaremos entrando a sessão:



Fig. 17: mensagem de boas vindas. Pressione Enter



Fig. 18: Menu principal ISPF

1.6 Fechando o z/OS

É importante que quando chegarmos a usar o z / OS, vamos fechar de uma forma ordenada. Não devemos esquecer que os processos de ter partes memória e disco partes, de modo que desligar "da maneira mais difícil" pode causar perda de dados. Portanto, para desligar o sistema de uma forma ordenada, nós siga estes passos:

1.6.1 Saindo do TSO

Se você clicar repetidamente em PF3, vamos deixar o TSO. Se você tiver modificado os dados, o ISPF nos perguntar o que fazer com o tempo, caso em que temos de eliminar ou salvar, como vemos.



Fig. 19: Saindo do TSO

Uma vez respondidas com a opção 2 (enter), vamos encontrar o prompt READY. Digite LOGOFF e tecle enter para sair.



Fig. 20: TSO READY - Digite logoff para sair;

E retornando para o logotipo do z/OS Figura 15. Neste momento, poderíamos fechar sem problema a sessão do TSO.

1.6.1 Parando o z/OS

A ideia agora é começar a fechar um por um todos os processos que o sistema, mas, felizmente, nas versões do ADCD z/OS já tem um procedimento que para tirar os aplicativos rapidamente, chamado de SHUTALL. Assim, digitando na console S SHUTALL (tecle enter será retirada do ar vários aplicativos), o sistema começará a fechar em ordem, mas terá que responder a algumas pendencias da console:
   1 *01.47.41          *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
   2 * POLICY


















  IEE612I CN=L700     DEVNUM=0700 SYS=ADCD
  s SHUTALL

  IEE163I MODE= RD
Como você pode ver, o número da pergunta é 02. Portanto, devemos responder o seguinte: R 03, Y
     *01.47.41          *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
     * POLICY
     *01.51.50          *02 BPXI078D STOP OF ZFS REQUESTED. REPLY 'Y' TO
     * PROCEED. ANY OTHER REPLY WILL CANCEL THIS STOP.
     *01.51.54          *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
     *ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
    - 01.51.54 STC00614  IEF404I BPXAS - ENDED - TIME=01.51.54
    - 01.51.54 STC00611  IEF404I BPXAS - ENDED - TIME=01.51.54
    - 01.51.54 STC00615  IEF404I BPXAS - ENDED - TIME=01.51.54
    - 01.51.54 STC00609  IRRB005I (#) RACF SUBSYSTEM TERMINATION IS COMPLETE.
    - 01.51.55           IEF404I RACF - ENDED - TIME=01.51.55
    - 01.51.55           IEF352I ADDRESS SPACE UNAVAILABLE








  IEE612I CN=L700     DEVNUM=0700 SYS=ADCD
  02,y

  IEE163I MODE= RD
Fig. 21: Respondendo a pergunta do z/OS

Retirando o DLF

Na console de esses dois comandos para tirar do ar o DLF;
F DLF,MODE=D
P DLF
Retirando o Jes2 Na tela da console de o comando $pjes2
     *01.55.28          *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
     * POLICY
     *02.03.30          *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
     *ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
    - 02.03.54           d a,l
      02.03.54           IEE114I 02.03.54 2015.310 ACTIVITY 804               C
       JOBS     M/S    TS USERS    SYSAS    INITS   ACTIVE/MAX VTAM     OAS
      00000    00001    00000      00030    00010    00000/00000       00002
       JES2     JES2     IEFPROC  NSW  S











  IEE612I CN=L700     DEVNUM=0700 SYS=ADCD
  $pjes2

  IEE163I MODE= RD
Fig. 22: Retirando o Jes2 do ar

Quando na console der o comando que o Jes2 saiu do ar
  00  02.04.41           $HASP085 JES2 TERMINATION COMPLETE
    - 02.04.41           IEF404I JES2 - ENDED - TIME=02.04.41
De o comando Z EOD (EOD – End Of Day) para fechar o z / OS
     *01.55.28          *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
     * POLICY
     *02.03.30          *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
     *ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
      02.04.34           $HASP314 INIT 7    DRAINED  ******** C=ABCD
    - 02.04.34 STC00634  IEF404I INIT - ENDED - TIME=02.04.34
    - 02.04.34 STC00635  IEF404I INIT - ENDED - TIME=02.04.34
      02.04.34           $HASP314 INIT 8    DRAINED  ******** C=ABCD
      02.04.34           $HASP314 INIT 9    DRAINED  ******** C=ABCD
      02.04.34           $HASP314 INIT 10   DRAINED  ******** C=ABCD
      02.04.34           CNZ4213I SYSLOG PROCESSING HAS ENDED
     *02.04.36          *IEE037D LOG NOT ACTIVE
    - 02.04.36           IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
    -          GROUP N1       MEMBER N1$SYS1
      02.04.36           $HASP9085 JES2 MONITOR ADDRESS SPACE STOPPED FOR JES2
    - 02.04.36           IEF404I IEESYSAS - ENDED - TIME=02.04.36
    - 02.04.36           IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
    -          GROUP SYSJ2$XD MEMBER N1$SYS1$$$$$$$$$
  00  02.04.41           $HASP085 JES2 TERMINATION COMPLETE
    - 02.04.41           IEF404I JES2 - ENDED - TIME=02.04.41
  IEE612I CN=L700     DEVNUM=0700 SYS=ADCD
  z eod

  IEE163I MODE= RD
Fig. 23: Jes2 fora do ar

Depois de o comando QUIESCE
     *01.55.28          *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
     * POLICY
     *02.03.30          *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
     *ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
      02.04.34           $HASP314 INIT 10   DRAINED  ******** C=ABCD
      02.04.34           CNZ4213I SYSLOG PROCESSING HAS ENDED
     *02.04.36          *IEE037D LOG NOT ACTIVE
    - 02.04.36           IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
    -          GROUP N1       MEMBER N1$SYS1
      02.04.36           $HASP9085 JES2 MONITOR ADDRESS SPACE STOPPED FOR JES2
    - 02.04.36           IEF404I IEESYSAS - ENDED - TIME=02.04.36
    - 02.04.36           IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
    -          GROUP SYSJ2$XD MEMBER N1$SYS1$$$$$$$$$
      02.04.41           $HASP085 JES2 TERMINATION COMPLETE
    - 02.04.41           IEF404I JES2 - ENDED - TIME=02.04.41
  00- 02.06.42           z eod
      02.06.42           IEE334I HALT EOD SUCCESSFUL
     *02.06.42          *IEE362A SMF ENTER DUMP FOR SYS1.MAN1 ON ZASYS1
      02.06.42           IEE360I SMF NOW RECORDING ON SYS1.MAN2 ON ZASYS1
       TIME=02.06.42
  IEE612I CN=L700     DEVNUM=0700 SYS=ADCD
  QUIESCE

  IEE163I MODE= RD
Fig. 24: Comando quiesce - terminando a sessão no nosso hercules



Fig. 25: Fechando o Hercules



Fig. 22: Hercules parada completa.

1.6.2 Encerramento do Hercules


Agora sim podemos sair do Hercules sem comprometer as imagens do z/OS, na console do Hercules tecle ESC vai cair na tela gráfica dos discos, a partir de Hercules ou plotagem W (Po W er) e, em seguida, Y para confirmar, e Hercules irá fechar - se clicar no X do canto superior direito também podera ser feito sem nenhum problema



Depois de sair esta tela some em instantes;



Espero que este post ajudou a fazer um começo e um desligamento ordenado. Nas seguintes entradas, eu vou buscá-la preenchida com TCP / IP e outras configurações. - Clique Aqui

11/04/2015

Criando um Programa Cobol pelo TSO - Mainframe


Este post explica como criar e compilar um programa COBOL no TSO.

Introdução

Primeiro de tudo, você deve entender como um programa COBOL é compilado. Nós temos uma fonte, rodamos um job que copila e dai temos um objeto ou executável. Uma vez que o programa objeto, podemos executar ele que mostrara um resultado obtido.

Então, primeiro, temos uma biblioteca onde ele será o nosso arquivo de origem, editar um membro onde a linguagem de programação COBOL. Esta biblioteca é definido como qualquer JCL biblioteca, ou seja, particionado e com bloco fixo de 80.

Em segundo lugar, precisamos de ter uma biblioteca onde, uma vez compilado, deixe o programa executável ou objeto resultado da nossa programação. Esta biblioteca, que contém um objeto, NÃO deve ser definido como bloco fixo de 80, mas como U ou indefinido (undefined). Isto é muito importante por causa da não definição da biblioteca, ele não irá funcionar.

E, finalmente, precisamos de um JCL para chamar as ferramentas de compilação e montagem, que vai ler o nosso membro de origem COBOL e nos deixar o objeto na biblioteca criada com formato de U, usando as variáveis ​​e parâmetros apropriados.

Criando o programa COBOL (fonte)

Se você não tiver, nós criamos uma biblioteca particionado e com um formato de registro fixo de 80 caracteres. No nosso exemplo, a chamada ADCD.LIB.JCL. Nesta biblioteca, criamos um membro do chamado OLAMUNDO contendo o seguinte programa (OLÁ MUNDO é o clássico):
   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help

 EDIT       ADCD.LIB.JCL(OLAMUNDO) - 01.05                  Columns 00001 00072
 ****** ***************************** Top of Data ******************************
 000001        IDENTIFICATION DIVISION.
 000002        PROGRAM-ID. HOLAMUN.
 000003        AUTHOR. JAVIER CASTILLA PARA EUSKAL ENCONTER Y MAINFRAMECORNER
 000004        INSTALLATION. IBM-ZOS.
 000005         DATE-WRITTEN. 13 FEBRERO DE 2013.
 000006         DATE-COMPILED.
 000007         SECURITY. NONE.
 000008        ENVIRONMENT DIVISION.
 000009         CONFIGURATION SECTION.
 000010          SOURCE-COMPUTER. MIORDENADOR.
 000011          OBJECT-COMPUTER. MIORDENADOR.
 000012          SPECIAL-NAMES.
 000013            DECIMAL-POINT IS COMMA.
 000014        DATA DIVISION.
 000015        WORKING-STORAGE SECTION.
 000016
 000017        PROCEDURE DIVISION.
 000018        001-MAIN.
 000019
 000020        DISPLAY "OLA MUNDO - RODAMOS UM PROGRAMA COBOL"
 000021        GOBACK.
 ****** **************************** Bottom of Data ****************************
 Command ===>                                                  Scroll ===> PAGE
  F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up
  F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel

Criando o objeto de programa

Esta etapa envolve dois pontos: Primeiro, já temos criados a biblioteca de objetos de software com formato de U (não canso de repetir) e em segundo lugar, iniciar o JCL para nos ler o membro cobol fonte, e irá compilar e vai deixar o objeto nos objetos de biblioteca programa.

Criando objetos de biblioteca

É simples: O JCL abaixo vamos pegar o objeto fonte ADCD.LIB.JCL(OLAMUNDO) e vamos gravar o objeto na ADCD.Z110.VTAMLIB(OLAMUNDO);

Compilando um COBOL

Para compilar o programa usamos o seguinte JCL:
   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help

 EDIT       ADCD.LIB.JCL(OLAMUND1) - 01.01                  Columns 00001 00072
 Command ===> sub                                              Scroll ===> CSR
 ****** ***************************** Top of Data ******************************
 000001 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
 000002 //  MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
 000003 //STEP0    EXEC IGYWCLG,PARM.COBOL='LIB,APOST,XREF,MAP,OFFSET'
 000004 //STEPLIB  DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
 000005 //* --------------------------------------------------------------
 000006 //* COMPILAR Y LINKEDITAR HOLAMUN (HOLAMUNDO EUSKAL ENC Y MFCORNER)
 000007 //* SYSLIB  ES LA LIB. DE COPYS
 000008 //* SYSIN   ES LA LIB. DE PROGRAMAS FUENTES
 000009 //* SYSLMOD ES LA LIB. DE PROGRAMAS OBJETOS O EJECUTABLES
 000010 //* --------------------------------------------------------------
 000011 //COBOL.SYSIN   DD DSN=ADCD.LIB.JCL(OLAMUNDO),DISP=SHR
 000012 //LKED.SYSLMOD  DD DSN=ADCD.Z110.VTAMLIB(OLAMUNDO),DISP=SHR
 000013 /*
Os parâmetros em negrito são as que precisam editar ele não deve trabalhar no nosso exemplo:

- COBOL.SYSIN DD é o registro onde irá apontar para o nosso COBOL fonte.

- STEPLIB DD é o registro que irá apontar para a biblioteca de objetos.

- LKED.SYSLMOD guia DD é onde definimos o objeto membro que é criado resultado da compilação.

Uma vez liberado JCL deve terminar Cond.Code 0. Se apenas um outro, tem que olhar para fora para certo se o trabalho tem sido um erro na transcrição do programa e corrigir o programa de origem. Se consultarmos Livreiro ADCD.Z110.VTAMLIB, deve ser um membro criado chamado OLAMUNDO.
   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help

 EDIT       ADCD.LIB.JCL(OLAMUND1) - 01.01                  Columns 00001 00072
 Command ===> sub                                              Scroll ===> CSR
 ****** ***************************** Top of Data ******************************
 000001 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
 000002 //  MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
 000003 //STEP0    EXEC IGYWCLG,PARM.COBOL='LIB,APOST,XREF,MAP,OFFSET'
 000004 //STEPLIB  DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
 000005 //* --------------------------------------------------------------
 000006 //* COMPILAR Y LINKEDITAR HOLAMUN (HOLAMUNDO EUSKAL ENC Y MFCORNER)
 000007 //* SYSLIB  ES LA LIB. DE COPYS
 000008 //* SYSIN   ES LA LIB. DE PROGRAMAS FUENTES
 000009 //* SYSLMOD ES LA LIB. DE PROGRAMAS OBJETOS O EJECUTABLES
 000010 //* --------------------------------------------------------------
 000011 //COBOL.SYSIN   DD DSN=ADCD.LIB.JCL(OLAMUNDO),DISP=SHR
 000012 //LKED.SYSLMOD  DD DSN=ADCD.Z110.VTAMLIB(OLAMUNDO),DISP=SHR
 000013 /*
 000014
 000015
 IKJ56250I JOB TSOAD05J(JOB00293) SUBMITTED
 ***
Rodou
 05.47.12 JOB00293 $HASP165 TSOAD05J ENDED AT N1  MAXCC=0 CN(INTERNAL)
 *** 

A execução do programa COBOL

Para executar o programa, basta fazer uma CHAMADA TSO é o membro ao abrigo do programa. No nosso exemplo, o comando seria:
TSO CALL 'ADCD.Z110.VTAMLIB(OLAMUNDO)'
Dando o comando no TSO;
   Menu  Functions  Confirm  Utilities  Help

 BROWSE            ADCD.LIB.JCL                              Row 00278 of 00481
            Name     Prompt       Size   Created          Changed          ID
 _________ OLAMUND1 *RC=0           23  2008/11/06  2015/11/04 05:32:58  IBMUSER
 _________ OLCUTL                   23  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDOPMEMO                100  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDOPPGM                  83  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDORIMLD                 17  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDSE                     21  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PORTRACF                 16  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PORTTOOL                305  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PROCTEST                  7  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PROFILE                 388  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMHP                  35  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMID                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIE                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIG                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIP                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIT                  35  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMJV                 123  2008/11/06  2008/11/06 15:55:48  IBMUSER
 Command ===> tso call 'ADCD.Z110.VTAMLIB(OLAMUNDO)'           Scroll ===> PAGE
  F1=Help    F2=Split   F3=Exit    F5=Rfind   F7=Up      F8=Down    F9=Swap
 F10=Left   F11=Right  F12=Cancel
Resultado
   Menu  Functions  Confirm  Utilities  Help

 BROWSE            ADCD.LIB.JCL                              Row 00278 of 00481
            Name     Prompt       Size   Created          Changed          ID
 _________ OLAMUND1 *RC=0           23  2008/11/06  2015/11/04 05:32:58  IBMUSER
 _________ OLCUTL                   23  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDOPMEMO                100  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDOPPGM                  83  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDORIMLD                 17  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PDSE                     21  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PORTRACF                 16  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PORTTOOL                305  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PROCTEST                  7  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ PROFILE                 388  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMHP                  35  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMID                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIE                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIG                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIP                  65  2008/11/06  2008/11/06 15:55:48  IBMUSER
 _________ Q80SMIT                  35  2008/11/06  2008/11/06 15:55:48  IBMUSE
 OLA MUNDO - RODAMOS UM PROGRAMA COBOL
 ***

Vamos rodar um jcl para ver o resultado;
   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help

 EDIT       ADCD.LIB.JCL(COBOL003) - 01.06                  Columns 00001 00072
 Command ===>                                                  Scroll ===> CSR
 ****** ***************************** Top of Data ******************************
 000001 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
 000002 //  MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
 000003 //* -------------------------------------------
 000004 //* RODANDO UM COBOL POR JCL
 000005 //* -------------------------------------------
 000006 //STEP10    EXEC PGM=OLAMUNDO
 000007 //STEPLIB   DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
 000008 //SYSPRINT DD SYSOUT=*
 000009 /*
 000010
 000011
 000012
 000013
 000014
 000015
 000016
 000017
 000018
 000019
Resultado
   Display  Filter  View  Print  Options  Help
 -------------------------------------------------------------------------------
 SDSF OUTPUT DISPLAY TSOAD05J JOB00185  DSID     2 LINE 0       COLUMNS 02- 81
 COMMAND INPUT ===>                                            SCROLL ===> PAGE
********************************* TOP OF DATA **********************************
                         J E S 2  J O B  L O G  --  S Y S T E M  S Y S 1  --  N

09.20.37 JOB00185 ---- WEDNESDAY, 04 NOV 2015 ----
09.20.37 JOB00185  IRR010I  USERID IBMUSER  IS ASSIGNED TO THIS JOB.
09.20.37 JOB00185  ICH70001I IBMUSER  LAST ACCESS AT 09:12:17 ON WEDNESDAY, NOVE
09.20.37 JOB00185  $HASP373 TSOAD05J STARTED - INIT 1    - CLASS A - SYS SYS1
09.20.37 JOB00185  IEF403I TSOAD05J - STARTED - TIME=09.20.37
09.20.38 JOB00185  IEF404I TSOAD05J - ENDED - TIME=09.20.38
09.20.38 JOB00185  $HASP395 TSOAD05J ENDED
------ JES2 JOB STATISTICS ------
  04 NOV 2015 JOB EXECUTION DATE
           22 CARDS READ
           45 SYSOUT PRINT RECORDS
            0 SYSOUT PUNCH RECORDS
            2 SYSOUT SPOOL KBYTES
         0.00 MINUTES EXECUTION TIME
        1 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
          //  MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
          //* -------------------------------------------
          //* RODANDO UM COBOL POR JCL
          //* -------------------------------------------
          IEFC653I SUBSTITUTION JCL - 1AD40G12,'IBMUSER',NOTIFY=IBMUSER,MSGCLASS
          TIME=(0,7)
        2 //STEP10    EXEC PGM=OLAMUNDO
        3 //STEPLIB   DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
        4 //SYSPRINT DD SYSOUT=*
          /*
        5 //SYSIN     DD *               GENERATED STATEMENT
ICH70001I IBMUSER  LAST ACCESS AT 09:12:17 ON WEDNESDAY, NOVEMBER 4, 2015
IEF236I ALLOC. FOR TSOAD05J STEP10
IEF237I 0A81 ALLOCATED TO STEPLIB
IEF237I JES2 ALLOCATED TO SYSPRINT
IEF237I JES2 ALLOCATED TO SYSIN
IEF237I JES2 ALLOCATED TO SYSOUT
IEF285I   IBMUSER.TSOAD05J.JOB00185.D0000103.?         SYSOUT
IEF142I TSOAD05J STEP10 - STEP WAS EXECUTED - COND CODE 0000
IEF285I   ADCD.Z110.VTAMLIB                            KEPT
IEF285I   VOL SER NOS= ZARES1.
IEF285I   IBMUSER.TSOAD05J.JOB00185.D0000102.?         SYSOUT
IEF285I   IBMUSER.TSOAD05J.JOB00185.D0000101.?         SYSIN
IEF373I STEP/STEP10  /START 2015308.0920
IEF374I STEP/STEP10  /STOP  2015308.0920 CPU    0MIN 00.17SEC SRB    0MIN 00.04S
IEF375I  JOB/TSOAD05J/START 2015308.0920
IEF376I  JOB/TSOAD05J/STOP  2015308.0920 CPU    0MIN 00.17SEC SRB    0MIN 00.04S
OLA MUNDO - RODAMOS UM PROGRAMA COBOL
******************************** BOTTOM OF DATA ********************************
  F1=HELP      F2=SPLIT     F3=END       F4=RETURN    F5=IFIND     F6=BOOK
  F7=UP        F8=DOWN      F9=SWAP     F10=LEFT     F11=RIGHT    F12=RETRIEVE
Clique Aqui