17
© Copyright IBM ® Brasil. 2010 Concurso Mainframe Brasil 2010 Parte 2: Experiência Prática

Concurso Mainframe Parte2

Embed Size (px)

Citation preview

Page 1: Concurso Mainframe Parte2

© Copyright IBM® Brasil. 2010

Concurso Mainframe Brasil 2010

Parte 2:

Experiência Prática

Page 2: Concurso Mainframe Parte2

IBM Concurso Mainframe para Estudantes - Brasil

Parte Dois

Tempo para conlusão – de seis a oito horas

A empresa fictícia de jogos on-line para a qual você trabalha precisa de jogadores (clientes) que comprem jogos em lotes de 1–10 unidades antes de poder jogá-los. A compra é efetuada por meio de uma página da Internet que processa o pagamento e envia uma mensagem via WebSphere MQ para uma transação CICS de back-end.

A transação CICS processa essa mensagem e atualiza o crédito do cliente, que fica armazenado em um banco de dados DB2. A seguir, envia uma resposta de volta para o servidor de Internet e o jogador recebe uma confirmação.

Da mesma forma, ao jogar, uma mensagem é enviada para a mesma transação CICS de modo a aumentar o número de jogos jogados e diminuir o crédito disponível. Conforme jogam mais, o status de sua assinatura é alterado e jogadores obtêm recursos adicionais nos jogos on-line.

Page 3: Concurso Mainframe Parte2

Para fazer isso, você tem um ID alocado no banco de dados DB2, bem como para o sistema CICS. É o mesmo id de utilizado para acessar o z/OS.

Ajuda

As referências a seguir podem ajudar você a concluir as tarefas:

– Informações z/OS v1.11(inglês):

http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp

– Informações CICS Transaction Server v3.2 (inglês):

http://publib.boulder.ibm.com/infocenter/cicsts/v3r2/index.jsp

– Informações WebSphere MQ v7 (inglês):

http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp

Oi, aqui é o Bob. (*cof cof*) Estou doente o médico disse que é contagioso, então não vou trabalhar por uns dias. O aplicativo de testes está praticamente pronto, só precisa

ser implantado... Eu acho (*cof*)

Gostaria que você utilizasse a transação CICS via WebSphere MQ para se tornar um membro silver

no banco de dados. Também tenho algumas perguntas para que você responda no decorrer da

Parte 2 para que eu verifique se você está aprendendo corretamente. Envie suas respostas

para mim quando tiver terminado os testes.

Hmmm, essa parece a oportunidade perfeita para testar as suas novas habilidades no

z/OS! Precisamos executar o aplicativo que o Bob desenvolveu para que as mudanças recentes nas transações CICS possam ser

implantadas na produção assim que possível.

Page 4: Concurso Mainframe Parte2

INTRODUÇÃO AO CICS E AO WEBSPHERE MQ

CICS O Servidor de Transações CICS (Customer Information Control System) é o software de processamento de transações gerais da IBM para z/OS. É um servidor de aplicativos potente que satisfaz as necessidades de processamento de transações de empresas de pequeno e grande porte. Ele se baseia em instalações de z/OS e System z para oferecer alta disponibilidade e escalabilidade a um baixo custo por transação; suporta grandes volumes de transações com um tempo de resposta rápido e consistente.

O processamento de transações é um estilo de computação tipicamente realizado por grandes servidores e que oferece suporte a aplicativos interativos. No processamento de transações, todo o trabalho é dividido em operações individuais e indivisíveis que são chamadas de transações. Por exemplo, sacar dinheiro em um caixa eletrônico e atualizar o saldo em um banco de dados. Por sua vez, o processamento em lote é um estilo de computação em que um ou mais programas processam uma série de registros (um lote) com pouca ou nenhuma participação do usuário ou do operador. Por exemplo, imprimir extratos bancários para todos os correntistas prontos para serem enviados por correio.

O processamento de transações middleware, como CICS, permite aos programadores de aplicativos se concentrarem em escrever códigos que ofereçam suporte aos negócios ao proteger os programas de aplicativos dos detalhes do gerenciamento de transações:

• Gerencia o processamento simultâneo de transações.

• Permite o compartilhamento de dados.

• Assegura a integridade dos dados

• Gerencia a priorização da execução de transações.

Quando o processamento de uma transação é iniciado, o CICS executa um programa associado à transação. Esse programa pode transferir controle para outros programas no decorrer da transação, tornando possível montar aplicativos modulares consistindo em muitos programas CICS.

Em um sistema CICS, várias instâncias de uma transação podem ser executadas ao mesmo tempo a qualquer hora. Ao comprar algum produto on-line, seria inconveniente ter de enfileirar essas instâncias e esperar por milhares de outras pessoas.

WebSphere MQ O WebSphere MQ é o principal produto de mensagens da IBM. Pode ser utilizado para enviar dados formatados, na forma de mensagens, entre aplicativos diferentes por meio de um mecanismo assíncrono de entrega de mensagens. Esses aplicativos podem ser escritos em diferentes linguagens de programação e executados em diferentes hardwares e sistemas operacionais. Ao conseguir conectar esses aplicativos em conjunto, você pode economizar muito tempo e dinheiro para os clientes.

As mensagens são armazenadas em filas, para que os programas possam ser executados independentemente um do outro, em diferentes velocidades e momentos, em locais diferentes e sem uma conexão lógica entre eles. O WebSphere MQ permite que diversos aplicativos intercambiáveis acessem a mesma fila ou filas diferentes, o que pode ajudar os clientes a desenvolver uma infraestrutura flexível e escalável que inclui redundância e, assim, reduz o risco de falhas.

Muitas das maiores empresas do mundo têm o CICS e o WebSphere MQ bem no centro de seus negócios.

Page 5: Concurso Mainframe Parte2

Começando Antes de iniciar, obtenha as perguntas que você irá responder ao longo desta parte do concurso.

Elas estão disponíveis em um membro do data set sequencial ZOS.BRA.CONTEST.ANSWER.SHEET.

➔ Usando um ISPF, faça uma cópia desse data set, que você irá preencher conforme realiza as

tarefas.

Nomeie seu data set sequencial de BRAXXXX.BRAXXXX.ANSWERS

Deve estar alocado em faixas (TRKS)

Deve ter uma primary quantity de 1 e secondary quantity de 1.

Deve ter 0 bloco de diretório

O formato de registro deve ser FB (fixed block) e seu tamanho de 80.

O tamanho do bloco deve ser 32000.

O tipo do nome do data set deve estar em branco.

à Certifique-se de que os DOIS primeiros qualificadores de seu data set são seu id de usuário, senão suas respostas não serão marcadas e verificadas corretamente.

Você será avisado quando puder responder a cada uma das perguntas, mas leia os comentários na parte superior da folha de respostas cuidadosamente antes de continuar.

à Forneça seu id de usuário z/OS (ex.: BRAxxxx) no espaço fornecido acima da pergunta 1.

Se tudo der errado, não se preocupe! Exclua o data set procurando por ele

no utilitário 3.4 e digitando D na coluna de comando à esquerda. Em

seguida, tente novamente!

Para copiar um data set, use o utilitário 3.3 do painel primário do ISPF. (Digite = 3.3 na linha de

comando do ISPF.)

Você também pode copiar membros do PDSE a partir deste painel, colocando o nome do

membro entre parênteses acompanhando o nome do data set, por exemplo:

DATA.SET(NOME_DO_MEMBRO).

Page 6: Concurso Mainframe Parte2

CICS Primer Este é um bom momento para oferecer algumas orientações sobre como utilizar o CICS.

Uma transação CICS é iniciada pressionando a tecla CLEAR* para limpar a tela e digitando o identificador da transação, sozinho ou seguido de parâmetros específicos de cada transação, na linha de comando. A linha de comando é uma linha simples, normalmente na parte superior da tela.

É possível digitar o identificador de transações sozinho e seguir os avisos até chegar ao comando completo da transação ou digitar o comando completo da transação na linha de comando. Se não digitar informações suficientes ou se as informações digitadas estiverem erradas, você será avisado para completar ou corrigir o que digitou.

Na transação a seguir, por exemplo, CESF é o identificador de transações e o dado adicional é GOODNIGHT.

CESF GOODNIGHT

Esta transação é utilizada para sair do CICS.

Quando é iniciada, a transação processa os dados adicionais. Ao completar esta transação, a seguinte mensagem aparece:

STATUS: SESSION ENDED

Após uma transação ser completada, pressione a tecla CLEAR* para obter uma tela em branco pronta para a próxima transação.

Para finalizar uma transação, use a tecla PF3.

* A tecla especial 3270 CLEAR não existe na maioria dos teclados. Contudo, os emuladores 3270 a oferecem por meio de um menu de contexto (clique com o botão direito do mouse) ou permitem que ela seja mapeada para uma tecla escolhida por você, normalmente Pause/Break como padrão.

Mais informações sobre o CICS estão disponíveis no CICS Transaction Server v3.2 Information Center:

- http://publib.boulder.ibm.com/infocenter/cicsts/v3r2/index.jsp

Page 7: Concurso Mainframe Parte2

Usando o CICS

Abra uma segunda sessão 3270, mas, em vez de digitar TSO na tela SELECT APPLICATION, digite LOGON APPLID(CICSPRT2).

A tela de entrada no CICS deve aparecer:

à Digite seu id e senha e pressione a tecla Enter (lembre-se que é a tecla Ctrl).

A tela deve aparecer limpa, exceto pela mensagem a seguir na parte inferior:

DFHCE3549 Sign-on is complete (Language ENU).

à Responda às perguntas 1-6 em no seu data set BRAxxxx.BRAxxxx.ANSWERS, agora que você entrou com sucesso no CICS.

Page 8: Concurso Mainframe Parte2

USANDO JCL Pense em como determinada tarefa é realizada no mundo real: você normalmente a divide em uma ou mais etapas, na qual cada etapa completa uma determinada parte do todo e, normalmente, requer o uso de diferentes recursos.

A Job Control Language (JCL) é como você descreve essa informação para z/OS, em que um job representa uma tarefa (task).

Para cada job que você enviar, é necessário dizer ao z/OS onde encontrar a entrada apropriada, como processar essa entrada (ou seja, que programa ou programas executar) e o que fazer com o resultado encontrado. Você utiliza a JCL para reunir essas informações no z/OS por meio de um conjunto de declarações conhecidos como cartões.

O conjunto de declarações dos cartões da JCL é bem amplo, permitindo fornecer muitas informações para o z/OS. Contudo, a maioria dos jobs pode ser executada usando um subconjunto bem pequeno dessas declarações.

Dentro de cada job, os cartões são reunidos em etapas de job (Job Steps). Uma etapa de job consiste em todas as declarações de controle necessárias para executar um programa.

Se um job precisasse ser executado em mais de um programa, haveria uma etapa de job diferente para cada um desses programas.

Declarações de Controle de Job Todo job deve conter:

- Um cartão JOB para marcar o início de um job e atribuir um nome a ele. Essa declaração também é utilizada para fornecer determinadas informações administrativas, incluindo informações de segurança, contabilidade e identificação. Todo job tem um e apenas um cartão JOB.

- Pelo menos um cartão EXEC (executar), marcando o início de uma etapa do job, um nome para essa etapa e o programa ou procedimento a ser executado. É possível adicionar diversos parâmetros ao cartão EXEC para personalizar a forma como o programa é executado e as condições sob as quais cada etapa deve ser executada.

A maioria dos programas requer alguma entrada ou gera algum resultado, então normalmente também contém:

- Um ou mais cartões DD (Data Definition) para identificar e descrever dos dados de entrada e resultado a serem usados na etapa. Esse cartão pode ser usado para solicitar um data set criado anteriormente, definir um novo data set, definir um data set temporário ou definir e especificar as características do resultado.

Cada cartão de controle de job tem cinco campos:

1. Um campo identificador, que normalmente é composto por duas barras (//). A linha toda será tratada como um comentário se as duas barras forem seguidas por um asterisco (//*).

2. Um campo de nome, identificando o cartão para que possa ser consultada posteriormente.

3. Um campo de operação, identificando o tipo de cartão, ou seja, JOB, EXEC, DD.

4. Um campo de parâmetro.

5. Tudo o que vier após o campo de parâmetro será considerado comentário e ignorado.

As declarações em JCL podem ser codificadas apenas até a coluna 71. Por que a JCL tem esse formato? No passado eram utilizados cartões perfurados que tinham apenas 80 colunas, e as últimas oito colunas eram usadas para números de linha.

Page 9: Concurso Mainframe Parte2

Para saber mais sobre JCL, consulte o livro MVS JCL Reference z/OS:

- http://publib.boulder.ibm.com/infocenter/zos/v1r11/topic/com.ibm.zos.r11.ieab600/toc.htm

O layout da JCL pode parecer um pouco confuso à primeira vista. Felizmente, o

editor ISPF pode exibir a sintaxe da JCL de forma destacada se você digitar HILITE JCL (ou HILITE AUTO) quando for editar (não

navegar, utilizando o browse) um membro da JCL.

Page 10: Concurso Mainframe Parte2

USANDO O SDSF Nesta seção, você talvez tenha de alternar repetidamente entre dois aplicativos diferentes, por exemplo, entre os dados da folha de respostas no editor e o SDSF para encontrar as respostas para as perguntas. Entrar e sair de dois aplicativos diferentes todo momento pode ser incomodo; portanto, há uma maneira melhor de fazer isso:

Pressionar PF2 fará com que a tela "se divida" no cursor, mostrando as duas telas separadas por uma linha pontilhada horizontal. Você pode pressionar PF9 para alternar entre as duas telas. Pressione PF3 para voltar ao que seria o comando TSO para sair de uma tela.

Para maximizar o tamanho disponível da tela, posicione seu cursor na parte mais alta da linha superior da tela antes de pressionar PF2.

Impossível viver sem isso!

SDSF Primer O System Display and Search Facility (SDSF) oferece informações que podem ser utilizadas para monitorar, gerenciar e controlar um sistema z/OS.

É possível utilizar o SDSF para visualizar os registros do sistema e o status dos jobs que estão sendo executados no sistema ou que acabaram de ser executados, incluindo qualquer resultado obtido de jobs que ainda não foram purgados (descartados). Use o SDSF para visualizar a saída de quaisquer jobs enviados.

O SDSF é acessado a partir do painel primário do ISPF com o comando S.

A partir dali, o DA pode ser usado para visualizar os jobs ativos (em execução) no sistema, incluindo quaisquer started tasks, que são um tipo especial de job.

O ST pode ser usado para visualizar o status dos jobs, aqueles que estão ativos, aqueles que ainda devem ser processados e aqueles que já foram finalizados.

Quando estiver visualizando uma lista de jobs, você poderá filtrá-la na tela de entrada de comando para exibir apenas aqueles que pertencem a você, digitando:

OWNER BRAXXXX

Para voltar a exibir todos os jobs, digite:

OWNER *

Da mesma forma, é possível filtrar a lista de jobs pelo nome, digitando:

PREFIX ABC*

O que mostraria somente os jobs cujos nomes começam com as letras ABC.

Para remover este filtro, digite:

PREFIX *

Page 11: Concurso Mainframe Parte2

É possível utilizar ambos os filtros, owner (proprietário) e prefix (prefixo) ao mesmo tempo.

Isso é útil porque eles ocultam jobs no sistema nos quais você não esteja interessado ou não está autorizado a visualizar.

Esteja ciente de que o SDSF se lembra dos filtros que você está utilizando. Se não estiver visualizando um job que esperaria visualizar, ative os dois filtros com um único asterisco (*) para que todos os jobs sejam exibidos.

Nos painéis DA e ST, é exibida uma lista de jobs. Use as teclas PF7 e PF8 para navegar para cima e para baixo na página.

Para visualizar mais informações sobre um determinado job, você pode digitar S na coluna (NP) do lado esquerdo e pressionar Enter.

Isso fornece vários dados; portanto, como alternativa é possível inserir um ponto de interrogação (?), o que oferecerá uma lista das várias seções do resultado. Em seguida, use S para selecionar essas seções individualmente.

Use a tecla PF3 para sair da tela que você está e retornar à anterior.

Os filtros prefix e owner não são exibidos em qualquer lugar como padrão; por isso, se

deixar os filtros ativados, você pode acabar com uma lista de jobs em branco! O ISPF se

lembra dos seus filtros entre as sessões, então vá ao menu Options na parte superior

da tela e escolha a opção 5 para exibi-los.

Page 12: Concurso Mainframe Parte2

à Responda às perguntas 7 e 8 agora que está familiarizado com a JCL e o SDSF.

Page 13: Concurso Mainframe Parte2

O APLICATIVO UNIDADE-TESTE

Executando o aplicativo unidade-teste

à Crie um PDSE, como na parte um, chamado BRAxxxx.PARTTWO.JCL.

Deve ser alocado em trilhas (TRKS)

Deve ter uma primary quantity de 1 e secondary quantity de 1.

O formato de registro deve ser FB (fixed block) e seu tamanho de 80.

O tamanho do bloco deve ser 32000.

➔ Crie um membro no seu data set de JCLs chamado ADJCREDT, copiando-o do membro com o mesmo nome no data set chamado ZOS.BRA.CONTEST.JCL.

➔ Substitua os termos do job conforme descrito, especificando -1 para o valor de ajuste de crédito.

➔ Envie o job digitando SUBMIT na linha de comando ao editá-la e observe seu resultado usando SDSF.

➔ Conserte os erros da JCL usando a seção JCL Reference do livro MVS, no z/OS Information Center; ela ajudará você a descobrir o que há de errado e como corrigir:

http://publib.boulder.ibm.com/infocenter/zos/v1r11/topic/com.ibm.zos.r11.ieab600/toc.htm

➔ Responda à pergunta 9.

Nos distraímos um pouco com outras características do mainframe; por isso, o ideal

talvez seja rever o diagrama do Bob para voltar ao nosso foco – testar nossa interface entre o

servidor da Internet e o sistema CICS.

O aplicativo teste que o Bob desenvolveu foi criado para ser executado por meio de um job

batch, iniciado usando alguma JCL.

Essa não! Parece que o código do Bob não está pronto para uso como ele pensava – nem mesmo a JCL que

diz ao z/OS para executar o programa em batch funcionou!

Page 14: Concurso Mainframe Parte2

Recompilando o Aplicativo de Unidade-Teste Depois de concluir o exercício anterior e responder à pergunta 9, você descobrirá que o aplicativo de teste não foi encontrado.

Antes de poder recompilar o aplicativo, é necessário criar outro PDSE em que o programa compilado possa ser armazenado e a partir do qual possa ser executado.

➔ Crie outro PDSE chamado BRAXXXX.PARTTWO.LOAD, definindo-o com os mesmos atributos de ZOS.BRA.CONTEST.LOAD.

Agora, é necessário copiar outro conjunto de JCL, que você irá utilizar para compilar o aplicativo, para outro membro de seu data set em JCL.

➔ Copie o job do membro COMPCRED no data set ZOS.BRA.CONTEST.JCL

➔ Compile o aplicativo de teste – desta vez não devem ocorrer erros. Preste atenção nos comentários da JCL para substituir o que é pedido!

A etapa COMPILE deve ter um RC de 0.

A etapa PLKED deve ter um RC de 4.

A etapa LKED deve ter um RC de 0.

A etapa GO deve ter um RC de 1.

Executando novamente o aplicativo de teste Depois de recompilar o aplicativo de teste, é possível tentar executá-lo novamente como antes.

➔ Atualize sua JCL para que o programa possa ser localizado em sua biblioteca de carregamento (loadlib) e execute-o novamente.

Eu não sei como o Bob esperava que implantássemos o aplicativo que ele desenvolveu se não conseguimos

nem achá-lo!

...

Hmm, descobri que seu código fonte fica em ZOS.BRA.CONTEST.C Não deve levar tanto tempo

para compilar e executar usando alguma JCL diferente.

Essa não, mais problemas! Encontrei o aplicativo e ele foi

executado sem problemas desta vez, mas há um erro do

WebSphere MQ.

Page 15: Concurso Mainframe Parte2

à Agora é um bom momento para responder às perguntas 10 e 11.

Parece que você precisa criar (definir) sua fila de resposta.

O WebSphere MQ oferece painéis ISPF para ajudar você a administrar os gerenciadores de fila – eles podem ser encontrados no ZEUS em IBM Products – Utilities – MQ Administration.

Uma tela semelhante à tela abaixo deverá aparecer:

O nome do gerenciador da fila (o nome da conexão) pode ser encontrado na JCL em que você geralmente executava o aplicativo de teste.

Pressione a tecla PF1 em qualquer painel para obter ajuda de acordo com o contexto (ou seja, ajuda para o campo em que seu cursor estiver ativado).

à Defina sua fila de resposta.

Agora você definiu com sucesso sua fila de resposta:

à Responda às perguntas 12 e 13.

Sua fila de resposta deve ser definida como SYSTEM.DEFAULT.LOCAL.QUEUE

Ah, e certifique-se de nomeá-la BRAXXXX.REPLY em CAIXA ALTA!

Page 16: Concurso Mainframe Parte2

CONCLUINDO A PARTE 2

Você provavelmente já sabe que pode executar o aplicativo de teste com êxito.

➔ Leia a pergunta 14 antes de começar.

Para concluir esta parte do Concurso Mainframe 2010, você deve:

➔ Usar o aplicativo de unidade-teste para atualizar o status de membro de seu id de usuário e se tornar um membro silver.

Envie suas respostas Quando for um membro silver:

➔ Revise suas respostas e, em seguida, as envie para que possam ser verificadas.

Para fazer isso, submeta o comando a seguir a partir da opção 6 do menu inicial do ISPF (Enter TSO or Workstation Commands) ou então prefixado por TSO de qualquer painel do ISPF:

XMIT TSTMVS01.IBMBRA DA('BRAXXXX.BRAXXXX.ANSWERS')

Page 17: Concurso Mainframe Parte2

Você já foi muito longe, mas ainda há um longo caminho a percorrer! A Parte 3 é

baseada no que você já aprendeu e fica ainda mais desafiadora – você terá de usar recursos mais avançados do WebSphere MQ e do CICS.

Vejo você lá!

Parabéns! Você concluiu todas as etapas da Parte 2! Graças a você, poderemos implantar as alterações em

nosso sistema CICS a tempo, e nossos clientes encontrarão formas mais fáceis de pagar e jogar. Se você for um dos primeiros 25 a completar a tarefa e responder às perguntas corretamente, receberá um

prêmio.

Recomendei você à nossa equipe para continuar a Parte 3 deste concurso – você precisará de

acesso diferente ao mainframe. Envie um e-mail para [email protected] e solicite um novo ID

de usuário. Coloque o campo Assunto: “Solicitação Acesso Parte 3”. Não esqueça de

colocar no email o sei ID atual. Boa sorte!