Você está na página 1de 17

Concurso Mainframe Brasil 2010

Parte 2:

Experiência Prática

© Copyright IBM® Brasil. 2010


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.
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*)

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.

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.

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.

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
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.
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.

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).

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.

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!

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.
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
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.
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.
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.

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
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 *
É 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.
à Responda às perguntas 7 e 8 agora que está familiarizado com a JCL e o SDSF.
O APLICATIVO UNIDADE-TESTE

Executando o aplicativo unidade-teste

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.

à 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.

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!

➔ 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.
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.

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.

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.

Essa não, mais problemas!


Encontrei o aplicativo e ele foi
executado sem problemas desta
vez, mas há um erro do
WebSphere MQ.
à 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.

Sua fila de resposta deve ser definida como


SYSTEM.DEFAULT.LOCAL.QUEUE

Ah, e certifique-se de nomeá-la


BRAXXXX.REPLY em CAIXA ALTA!

Agora você definiu com sucesso sua fila de resposta:

à Responda às perguntas 12 e 13.


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')
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.

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á!

Recomendei você à nossa equipe para continuar


a Parte 3 deste concurso – você precisará de
acesso diferente ao mainframe. Envie um e-mail
para concurz@br.ibm.com 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!

Você também pode gostar