16
Concurso Master The Mainframe 2014 Parte 2 Tempo previsto de conclusão – 6 a 8 horas Bem vindo à corporação bancária Master the Mainframe. O sistema do banco precisa ser atualizado. Você foi convidado para trabalhar em uma equipe que está desenvolvendo um protótipo para a substituição do sistema do banco que processa transações com cartão de crédito. Detalhes de transações de cartões de crédito chegam via mensagens do WebSphere MQ, e são processadas através de uma transação do CICS. A transação do CICS processa as solicitações e registra os detalhes da transação em um banco de dados DB2, atualizando o crédito disponível no cartão ao mesmo tempo. O CICS envia uma resposta de volta para cada transação através do WebSphere MQ, indicando se foi processada com êxito.

Concurso Master the Mainframe 2014 - Parte 2

Embed Size (px)

Citation preview

Concurso Master The Mainframe 2014 Parte 2 Tempo previsto de conclusão – 6 a 8 horas

Bem vindo à corporação bancária Master the Mainframe.

O sistema do banco precisa ser atualizado. Você foi convidado para trabalhar em uma equipe que está desenvolvendo um protótipo para a substituição do sistema do banco que processa transações com cartão de crédito. Detalhes de transações de cartões de crédito chegam via mensagens do WebSphere MQ, e são processadas através de uma transação do CICS. A transação do CICS processa as solicitações e registra os detalhes da transação em um banco de dados DB2, atualizando o crédito disponível no cartão ao mesmo tempo. O CICS envia uma resposta de volta para cada transação através do WebSphere MQ, indicando se foi processada com êxito.

Seus colegas começaram a desenvolver o protótipo, mas estão se esforçando para fazê-lo funcionar. O objetivo desta parte do desafio é completar com sucesso o protótipo, de modo que você possa simular um pagamento em seu cartão de crédito.

Para simplificar o processo, usaremos cartões de crédito com um nome em vez do usual número de 16 dígitos. O nome de seu cartão de crédito, e o logon de acesso ao sistema CICS, são os mesmos que o seu user ID do z/OS.

Ajuda

Você pode consultar as seguintes referências para completar as tarefas:

! z/OS v1.11 Information Center: http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp

! CICS Transaction Server v3.2 Information Center: http://publib.boulder.ibm.com/infocenter/cicsts/v3r2/index.jsp

! WebSphere MQ v7 Information Center:

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

! As instruções da Parte 1 do Concurso também contém muitas dicas úteis!

Introdução ao CICS e o WebSphere MQ

CICS

CICS (Customer Information Control System) Transaction Server é um software poderoso da IBM que atende às necessidades de processamento de transações de grandes e pequenas empresas. Baseia-se no z/OS e nas facilidades do System z para oferecer alta disponibilidade e escalabilidade a um baixo custo por transação, e 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, normalmente realizada por grandes servidores, e que suporta aplicações interativas. Por exemplo, retirar dinheiro de um caixa eletrônico e atualizar o saldo no banco de dados.

Eu gostaria que você fizesse um teste usando o WebSphere MQ e o CICS para simular um pagamento com o seu cartão de

crédito. Vou fazer também algumas perguntas para avaliar a sua compreensão. Por favor, me envie as suas resposta após

terminar o teste.

Por outro lado, o processamento em batch é um estilo de computação em que um ou mais programas processam um conjunto de registros (um batch), com pouca ou nenhuma ação do usuário. Por exemplo, imprimir extratos bancários para cada titular de conta e enviá-los pelo correio. Mediadores de processamento de transações, como o CICS, permitem que os programadores de aplicativos se concentrem em escrever códigos que suportam o negócio, e protegem as aplicações dos seguintes detalhes de gerenciamento de transações:

" Gerencia o processamento simultâneo de transações. " Permite o compartilhamento de dados. " Garante a integridade dos dados " Gerencia a priorização da execução da transação.

Quando uma transação inicia o processamento, o CICS executa um programa que está associado com a transação. Esse programa pode transferir o controle para outros programas no decorrer da transação, fazendo o possível para montar aplicações modulares que consistem em muitos programas do CICS.

A qualquer momento, em um sistema CICS, muitas transações podem ser executadas ao mesmo tempo. Seria terrível ter que esperar por outras pessoas terminarem de pagar antes que você pudesse comprar alguma coisa online.

WebSphere MQ

WebSphere MQ é produto para troca de mensagens entre aplicações da IBM. Ele pode ser usado para enviar os dados formatados, sob a forma de mensagens, entre aplicações diferentes por meio de um mecanismo de entrega de mensagens assíncronas.

Essas aplicações podem ser escritas em diferentes linguagens de programação e estar em execução em diferentes hardwares e sistemas operacionais. Ser capaz de unir essas aplicações faz com que os clientes tenham uma grande economia de tempo e dinheiro.

Começando

Antes de começar esta parte do concurso, você vai precisar das perguntas que você precisa responder ao longo do caminho.

Elas estarão disponíveis em uma folha de questões e respostas no data set sequencial chamado ZOS.CONTEST3.PART2.ANSWER.SHEET.

! Usando o ISPF faça uma cópia desse data set. Você irá completá-lo conforme for realizando as tarefas.

Para copiar um dataset, use a opção 3.3 do painel principal do ISPF. (Digite =3.3 na linha de comando do ISPF). Você também pode copiar os membros PDSE deste painel, colocando o nome do membro entre parênteses após o nome do data set.

! Certifique-se que os DOIS primeiros qualificadores do seu data set é o seu user ID caso contrário, suas respostas não podem ser marcadas corretamente.

Você será avisado quando for para responder cada uma das perguntas, mas antes leia os comentários no topo da folha de respostas cuidadosamente antes de prosseguir.

! Preencha com o seu user ID do z/OS (i.e. xxxxxxx) no espaço fornecido acima da questão 1.

! Acesse o seu data set sequencial <user ID>.<user ID>.ANSWERS ! Ele deve ser alocado em tracks (TRKS) ! Ele deve ter uma quantidade principal de 1 e uma quantidade secundária de 1 ! Ele deve ter 0 blocos de diretório ! O formato de registro deve ser FB (Fixed Block) e o comprimento do registro deve ser de 80 ! O tamanho do bloco deve ser 32000 ! O tipo de nome do dataset deve estar em branco

Se tudo der errado, não se preocupe! Exclua o data set, encontrando-o na opção 3.4 do painel principal do ISPF e digitando D na coluna de comado à esquerda. Em seguida,

tente novamente!

Você pode encontrar mais informações sobre o CICS em: CICS Transaction Server v3.2 Information Center (http://publib.boulder.ibm.com/infocenter/cicsts/v3r2/index.jsp).

Cartilha do CICS

Agora é uma boa hora para falar um pouco sobre o uso do CICS.

Você inicia uma transação CICS ao pressionar a tecla CLEAR * para limpar a tela, e inserir o identificador de transação, sozinho ou seguido de dados, na linha de comando da tela. A linha de comando geralmente está na parte superior da tela.

Você pode digitar o identificador de transação sozinho e seguir as instruções até que um comando de transação completo seja construído, ou você pode digitar o comando de transação completo na linha de comando. Se você não inserir a informação necessária, ou se a informação digitada estiver errada, será solicitado que você complete ou corrija o seu comando.

Por exemplo, na operação seguinte, CESF é o identificador de transação e os dados adicionais é GOODNIGHT.

CESF GOODNIGHT

Esta transação é usada para fazer logoff no CICS.

Quando a transação é iniciada, ela processa os dados adicionais. Após a conclusão desta transação, você recebe a seguinte mensagem:

STATUS: SESSION ENDED

Depois que uma transação for concluída, pressione a tecla CLEAR * para obter uma tela em branco de prontidão para realizar uma próxima transação.

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

* A tecla especial CLEAR do emulador 3270 não está presente nos teclados. Contudo, cada um dos emuladores 3270 fornece ela através de um menu ou permite que você possa mapeá-la em alguma tecla do seu teclado padrão. Muitas vezes a tecla Pause/Break é a default.

Utilizando o CICS Abra uma segunda sessão no terminal 3270, mas em vez de entrar com o comando TSO no prompt SELECT

APPLICATION entre com o comando LOGON APPLID(CICSZ057).

Você deve então visualizar a tela de login do CICS:

! Entre com o seu id e senha e pressione Enter (lembre-se que o Enter é a tecla Ctrl).

A mensagem seguinte irá aparecer: DFHCE3549 Sign-on is complete (Language ENU).

! Responda as questões de 1 a 5 no seu data set <userid>.<userid>.ANSWERS agora que você está dentro do ambiente do CICS.

Utilizando a linguagem JCL

Se você pensar sobre como você pode alcançar qualquer tarefa no mundo real, você normalmente decompõe ela em uma ou mais etapas, onde cada etapa conclui uma determinada parte da tarefa e, normalmente, requer o uso de diferentes recursos.

Job Control Language (JCL) é uma linguagem de controle utilizada para descrever a ações a serem relizadas para o z/OS, onde um job representa uma tarefa.

Para cada job que você enviar, você precisa dizer ao z/OS onde encontrar a entrada adequada, como processar essa entrada (ou seja, qual o programa ou programas para executar), e o que fazer com a saída resultante. Você usa JCL para transmitir esta informação para z/OS por meio de um conjunto de instruções conhecidas como instruções de controle do job.

Os conjuntos de instruções de controle do job de JCL são bastante grandes, o que permite fornecer uma grande quantidade de informações para o z/OS. A maioria dos jobs, no entanto, podem ser executados usando um subconjunto muito pequeno dessas instruções de controle.

Dentro de cada job, as instruções de controle são agrupados em etapas de trabalho. A etapa de trabalho é constituído por todas as instruções de controle necessárias para executar um programa.

Se um job precisa ser executado por mais de um programa, o job deverá conter uma etapa de trabalho diferente para cada um desses programas.

Instruções de Controle do Job

Cada job deve conter:

- Uma instrução JOB para marcar o início de um job e atribuir-lhe um nome. Esta instrução também é usada para fornecer certas informações administrativas, incluindo segurança, contabilidade e informações de identificação. Cada job tem uma e apenas uma instrução JOB.

- Pelo menos uma declaração EXEC (execute), marcando o início de uma etapa de um job, um nome para a etapa de um job, e o programa ou procedimento a ser executado. Você pode adicionar diversos parâmetros na declaração EXEC para personalizar a forma de como o programa é executado e as condições em que o passo deve ser executado.

Instruções JCL podem ser codificadas somente até a coluna 71. Se você perguntar por que JCL tem este formato, a resposta é que antigamente se usavam os cartões perfurados que tinham 80 colunas, o último dos quais 8 foram utilizados para os números de linha.

*** DICA: Para visualizar a quantidade de colunas em um código JCL, digite COLS na linha de comando!

Para mais informações você pode consultar a sessão JCL Reference do livro MVS no z/OS Information Center.

Utilizando o SDSF

Nessa sessão, você pode ter que trocar entre duas aplicações diferentes repetidamente, por exemplo, entre as suas respostas no editor do data set, e o SDSF para encontrar as respostas para as questões. Pode ser bem chato ter que ficar entrando e saindo entre essas aplicações, então há uma maneira melhor de fazer isso:

A maioria dos programas exigem alguma entrada ou geram alguma saída e de modo geral também contêm:

- Uma ou mais instruções DD (data definition), para identificar e descrever os dados de entrada e de saída para ser utilizada na etapa. Essa declaração pode ser usado para solicitar um conjunto de dados previamente criado, para definir um novo conjunto de dados, para definir um conjunto de dados temporária, ou para definir e especificar as características do produto.

Cada instrução de controle do job tem cinco campos:

1. Um campo identificador que é tipicamente duas barras (/ /). A linha inteira é tratada como comentário caso as duas barras estiverem seguidas por asterisco (/ /*).

2. Um campo nome, identificando a instrução para que ele possa ser referido mais tarde.

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

4. Um campo parâmetro.

5. Tudo após o campo parâmetro é considerado comentário e ignorado.

O layout do JCL pode parecer um pouco confuso quando você o vê pela primeira vez. Felizmente, o editor ISPF pode exibir a sintaxe de JCL destacada se você digitar o comando HILITE JCL (ou HILITE AUTO) durante a edição de um membro do JCL.

Você deve estar surpreso de como nunca descobriu sobre isso!

Pressionando F2 fará com que a tela faça um "split" em seu cursor mostrando as duas telas separadas por uma linha pontilhada horizontal. Você pode em seguida pressionar F9 para alternar entre as duas telas.

Para maximizar o tamanho de tela disponível, coloque o cursor na linha do topo da tela antes de pressionar F2.

Cartilha do SDSF

O System Display and Search Facility (SDSF) fornece informações que você pode usar para monitorar, gerenciar e controlar um sistema z/OS. Você pode usar o SDSF para exibir o registro do sistema e os status dos jobs que estão sendo executados no sistema ou que tenham concluído a execução, incluindo qualquer saída realizada de jobs que ainda não tenham sido descartados. Você acessa o SDSF a partir do comando S no painel principal do ISPF. A partir daí, o comando DA pode ser usado para exibir os jobs ativos no sistema (em execução), incluindo quaisquer tarefas iniciadas, que são um tipo especial de job. O comando ST pode ser usado para visualizar o status dos jobs, aqueles que estão ativos, aqueles que ainda não foram processados, e aqueles que já foram concluídos. Uma vez que você estiver visualizando a lista de jobs, usando a linha do prompt de comando você pode filtrar a lista para visualizar apenas os jobs que você possui digitando: OWNER XXXXXXX Para voltar a mostrar todos os jobs basta digitar: OWNER * Da mesma forma, você pode filtrar a lista de jobs a partir do nome dele digitando: PREFIX ABC* (Nesse caso, mostra apenas os jobs cujos nomes começam com ABC) Para remover esse filtro digite: PREFIX * Você pode usar ambos os comandos OWNER e PREFIX ao mesmo tempo.

Estes são particularmente úteis porque eles escondem os jobs em um sistema que você não está interessado ou outro ou não autorizado para acessar.

Os filtros OWNER e PREFIX não são exibidos em qualquer lugar, por isso, se você colocar os filtros em qualquer lugar na tela, você pode ter como resposta uma lista de Jobs em branco.

Esteja ciente de que SDSF lembra os filtros que você está usando. Se você não está vendo um job que você espera ver, defina os dois filtros em um único asterisco (*), de modo que todos os jobs são exibidos. Nos painéis DA e ST é apresentado uma lista de jobs. Use as teclas PF7 e PF8 para subir e descer a tela. Para visualizar mais informações sobre um job particular entre com S na coluna da esquerda (NP) e pressionar Ctrl.

Isto pode fornecer uma grande quantidade de dados e com isso, alternativamente, você pode digitar um ponto de interrogação (?). Isso retornará uma listagem das várias seções da saída. Você pode então usar S para selecionar essas seções individualmente. Use a tecla PF3 para sair da tela que você está e voltar para a anterior.

! Responda as questões de 6 a 8 agora que você já está familiarizado com o JCL e o SDSF.

A Aplicação de Teste

Executando a aplicação de teste

! Crie um PDSE, como na parte um, chamado <userid>.PART2.JCL.

! Crie um membro em seu data set JCL chamado PAYMENT, faça uma cópia dele a partir do membro de mesmo nome do data set chamado ZOS.CONTEST3.PART2.JCL.

! Substitua os espaços reservados no job como descrito - você pode usar qualquer valor monetário e descrição

de sua escolha.

! Envie a tarefa digitando SUBMIT na linha de comando durante a edição dele, e verifique a sua saída usando o SDSF.

Vamos verificar algumas outras comodidades do mainframe, por isso, pode valer a pena rever o esquema inicial para se concentrar na nossa tarefa – testar o nosso sistema de processamentos de pagamentos. A aplicação de teste desenvolvida por nossos colegas foi projetada para ser executado por meio de batch Jobs, sabendo disso, vamos começar a usar alguns JCLs.

! Deve ser alocados em faixas (TRKS) ! Deve ter uma quantidade principal de 1 e uma quantidade secundária de 1 ! O formato de registro deve ser FB (Fixed Block) e o comprimento do registro deve ser de 80 ! O tamanho do bloco deve ser 32000

Oh não! Parece que o código não está pronto ainda – mesmo o JCL que diz para o z/OS executar o batch não funcionou!

! Corrija os erros do JCL, usando a seção JCL Reference do livro MVS no z/OS Information Center para te ajudar a descobrir o que está errado e como corrigi-lo.

! Responda à pergunta 9.

Recompilando a aplicação de testes Tendo concluído o exercício anterior e respondido a pergunta 9, você vai perceber que está faltando a aplicação de testes.

Antes de recompilar ela, você precisa criar outro PDSE em que o programa compilado possa ser armazenado e da qual ele pode ser executado.

! Crie outro PDSE chamado <userid>.PART2.LOAD, definindo-o com os mesmos atributos que ZOS.CONTEST3.PART2.LOAD.

Agora você precisa copiar um outro conjunto de JCLs - que você pode usar para compilar a aplicação - para outro membro em seu data set JCL.

! Copie o job do membro chamado COMPPAY no data set ZOS.CONTEST3.PART2.JCL

! Substitua os espaços reservados no job como descrito e compile a aplicação de teste de unidade - você não deve encontrar quaisquer erros neste momento.

Reexecutando a aplicação de testes Agora que você recompilou a aplicação de testes, você pode tentar executá-la novamente como antes.

! Atualize seu JCL para que o sistema procure o programa na sua biblioteca e execute-o novamente.

O código fonte do aplicativo está no data set ZOS.CONTEST3.PART2.C. Não deve demorar muito tempo para compilá-lo e executá-lo usando algum JCL diferente.

! Agora é uma boa hora para responder as questões 10 e 11.

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

O WebSphere MQ fornece painéis ISPF para ajudá-lo a administrar os gerenciadores de filas - estes podem ser encontrados no z/OS em Produtos IBM - WebSphere - MQ. Você deve visualizar uma tela como abaixo:

O nome do gerenciador de filas (o nome de conexão) pode ser encontrado no JCL que você usou para executar o aplicativo de teste de unidade.

Você pode pressionar a tecla PF1 em qualquer painel para obter ajuda para o campo em que cursor está.

! Defina a sua fila de resposta.

Oh! Mais problemas! A aplicação funcionou normalmente, mas desta vez há um erro do WebSphere MQ.

Agora que você definiu com sucesso a sua fila de respostas:

! Responda a questão 12.

Completando a Parte Dois

Agora você foi capaz de executar com êxito a aplicação de teste de unidade.

Para completar esta parte do Desafio Mainframe:

➔ Use a aplicação de testes para gravar uma transação em seu cartão de crédito para que o seu saldo atual não seja zero. Você pode gravar mais de uma transação, se desejar, os valores e as descrições são de sua escolha.

Enviando as suas respostas

Depois de ter gravado uma operação em seu cartão de crédito:

! Revise suas respostas e em seguida, envie para que elas possam ser marcadas.

Para fazer isso, vá para a opção 6 e digite:

XMIT ZOS19.IBMBRA DA ('<userID>.<userID>.ANSWERS')

Sua fila de respostas deve ser definida como SYSTEM.DEFAULT.LOCAL.QUEUE Ah, e certifique-se de nomeá-lo como <userID>.REPLY em letras MAIUSCULAS!

Parabéns! Você terminou todos os passos da Parte 2! Graças a você, pudemos implantar as mudanças em nosso sistema CICS à tempo, e nossos clientes podem se beneficiar com isso

Estou te recomendando ao nosso time de cartões de créditos corporativos para a Parte 3 do concurso – você vai precisar de acesso aos sistemas de mainframe. Por favor, envie um e-mail com o seu ID de usuário atual para o administrador do concurso para solicitar um novo ID de usuário

Você já conseguiu muito até agora, mas há ainda um caminho grande a percorrer! A Parte 3 baseia-se no que você aprendeu até aqui, e vai ficar mais difícil, pois você estará usando recursos mais avançados do WebSphere MQ e CICS! Nos vemos lá!