 |
Tempo aproximado para conclusão da etapa: cinco a dez horas.
Importante: Você precisa concluir a Parte 1 do concurso antes de começar a Parte 2. Os competidores que não concluírem a Parte 1 com sucesso não serão julgados na Parte 2.
O objetivo desta parte da competição é o de familiarizá-lo com alguns dos aspectos mais práticos de ser um programador de sistemas mainframe.
Esses desafios são baseados em jobs (tarefas) que geralmente são realizadas por profissionais z/OS.
As instruções não são tão detalhadas para esta parte da competição - você terá que usar alguns recursos adicionais, junto com seus novos conhecimentos em mainframes, para completar os desafios.
Os primeiros 25 concorrentes a completarem esta seção com sucesso ganharão um MP3 Player de 1GB cada.
Não se esqueça de criar um membro XWORD para armazenas suas dicas e respostas.
No final da Parte 2 você terá encontrado mais de 12 pistas para preencher a cruzadinha.
Boa sorte!
Antes de começar, alguns lugares onde você pode encontrar ajuda
- Selecione seu data set da Parte 2
- Execute um programa REXX com JCL
- Depure o JCL quebrado
- Escreva seu próprio painel ISPF
- Erro JCL mais complicado
- Unix no mainframe
- Escreva um programa REXX (tarefa de cálculo)
- Tarefa de conversão
- Muito bem, agora submeta todo o seu trabalho
- E agora?
- Introduction to the New Mainframe (US, PDF, 896KB) Um livro didático, excelente fonte de informações introdutórias e de visão geral sobre mainframes.
- z/OS Library Center (US): Contém toda a documentação técnica oficial da IBM sobre z/OS, com centenas de livros e documentos que podem ser pesquisados. Tudo o que você precisa saber sobre mainframes pode ser encontrado aqui.
- ABCs of System Programming, Volume 9 (US, PDF, 6,09MB): Escrito por usuários de sistemas, este é um grande recurso para programadores de sistemas.
- Message LookAt Facility (US): Se você recebe uma mensagem de erro do sistema, você pode encontrar uma explicação detalhada do erro aqui.
- Mainframe blog (US): Um blog sobre mainframes que lhe dá a chance de interagir com outros entusiastas de mainframes.
- z/OS Hot Topics newsletters (US): Mantenha-se atualizado sobre as mais recentes notas técnicas sobre z/OS.
 |
Histórico: Você é um profissional experiente na alocação de data sets no momento. Consulte a "Parte 1: Quebrando o gelo", se precisar de um lembrete.
Seu desafio: Alocar um data set chamado 'BRA####.BRA####.ZOS.PART2' (onde BRA#### é o ID que lhe foi dado). O data set deve ser um PDSE com primary allocation de 1 e secundary allocation de 1 track (trilha).
Esse conjunto de dados terá todo seu trabalho durante a Parte 2 do concurso. Você o enviará à IBM quando tiver terminado todos os desafios.
Para o restante das instruções, nos referiremos a esse conjunto de dados apenas como ZOS.PART2 para simplificar.
Importante: Se você deixar de usar o seu ID duas vezes no qualificador (name) para esse novo data set (como acima), sua entrada para a Parte 2 não será avaliada! Você DEVE nomear o data set DUAS vezes começando com o seu ID.
|
 |
Histórico: Na “Parte 1: Quebrando o gelo”, você executou um programa REXX simples no painel de comando. Agora vamos executar o mesmo programa REXX em batch (lote). No z/OS você tem duas formas diferentes de trabalhar: interativamente no primeiro plano ou não-interativamente no plano de fundo. Todo seu trabalho da fase “Quebrando o Gelo” é considerado como trabalho de primeiro plano. Você pode fazer muita coisa no primeiro plano, mas se o processamento de um programa leva algum tempo, você não pode realizar outras tarefas enquanto não terminar a execução. Mas se você um programa leva tempo para ser processado, você não pode fazer mais nada com a sessão enquanto estiver em execução. Mas se você submeter programas de longa execução em batch, você pode continuar usando o primeiro plano enquanto seu trabalho roda em segundo plano.
Para submeter batch jobs (tarefas para execução em lote), você precisa instruir o z/OS através de JCL (Job Control Language). Você submete seu JCL ao JES (Job Entry Subsystem), e o sistema aloca os recursos necessários para o seu job. E então executa o trabalho.
A JCL é uma linguagem muito rica e é muito diferente de qualquer outra linguagem de programação. JCL existe há mais de 30 anos, e como você pode imaginar, quase todo tipo de job concebível já foi escrita em JCL. A maioria dos programadores de sistemas encontrará um arquivo JCL (normalmente chamado de job) que faz algo similar ao que eles querem fazer. E então podem fazer algumas alterações para ajustá-los a sua necessidade. E você vai fazer o mesmo agora.
Seu desafio: Há um data set no sistema chamado ZOS.CONTEST.JCL.D2008. O membro RUNREXX nesse data set contém um JCL que está bem próximo do que você precisa. Copie este membro para o seu próprio data set BRA####.PDS.CNTL. Para fazer isso:
- Abra o data set ZOS.CONTEST.JCL, e entao visualize o membro RUNREXX (coloque um v ao seu lado).
- Informe ao sistema qual texto você deseja copiar no seu novo membro do data set. Você pode copiar o texto utilizando os caracteres cc que você aprendeu em “Quebrando o Gelo” (também pode utilizar c## na primeira linha de JCL, onde ## é o número de linhas que você deseja copiar. Então se ## for maior que o número de linhas do membro, então c## copia o membro inteiro. Neste caso você só coloca o c## na primeira linha. Ao contrário do cc que você deve especificar o bloco, início e fim do texto a copiar).
- Na linha de comando, execute:
CREATE PDS.CNTL(RUNREXX)
Lembre-se que o sistema usa automaticamente seu ID BRA#### como qualificador de alto nível se você não colocar o nome do data set entre apóstrofes ('). Caso utilize o comando com apóstrofe deve ser indicado o seu ID BRA.
Este comando copia o texto para o seu novo data set BRA####.PDS.CNTL, como o nome de membro RUNREXX. O texto copiado é o que você especificou usando os caracteres “cc” ou “c##”.
Depois de ter copiado o RUNREXX para o seu próprio data set, abra o editor ISPF e faça as seguintes alterações:
- Altere your_user_id para seu ID BRA####.
- Altere your_member_nam para o nome que você deu ao membro PDSE que você fez na “Parte 1: Quebrando o Gelo”. (Nos exemplos da Parte 1, o membro foi nomeado SEUNOME)
Na linha de comandos digite SUB (abreviação de submit) e pressione Ctrl. Esse comando enviará o seu job ao JES para processamento. Ou seja, você acabou de submeter o job. Não é tão difícil, certo? Mas onde você encontra o que aconteceu com o seu job quando ele foi executado?
A resposta é SDSF, Spool Display and Search Facility. Para acessar o SDSF vá ao menu primário do ISPF e digite a opção S. Se você não estiver no menu primário do ISPF você pode digitar =S na linha de comandos que você vai direto para a tela do SDSF.
No prompt principal do SDSF, digite o comando: OWNER BRA####. Para ver todas os jobs mantidos no sou output digite H ALL. Você pode ver o seu output, junto com outros outputs gerados pelo sistema, colocando um ? ao lado do job e pressione Ctrl. O JOBNAME especificado no seu job era REXX. Coloque um S (select, para selecionar) ao lado de cada item e veja um a um o que aconteceu quando você executou o seu job.
Agora retorne a tela que lista o REXX na fila de outputs retidos. Coloque um S ao lado de REXX e pressione Ctrl. O que você vê agora é o mesmo output onde você especificou o “?”. Só que dessa vez todas as informações estão concatenadas em uma única exibição para facilitar a visualização.
Depois que verificar que o seu job produziu o mesmo output da “Parte 1: Quabrando o Gelo”, grave todos os outputs para um membro do seu data set ZOS. PART2 chamado REXXRUN. Para fazer isso use o comando XDC próximo ao job. Certifique-se de digitar XDC próximo ao job REXX e não apenas de um item de output – isso assegurará que JESMSGLG, JESJCL, JESYSMSG, SYSTSPRT e OUTDD sejam todos enviados como um único membro para o seu data set ZOS.PART2.
No menu XDC especifique corretamente o nome do data set, o membro a usar e a disposição (OLD). Caso contrário, você pode aceitar os padrões e pressionar Ctrl. Você encontrará um novo membro em seu conjunto de dados ZOS. PART2. Dê uma olhada.
Você acaba de vencer mais um desafio!
|
 |
Histórico: Como um programador de sistemas, você estará fazendo muitos jobs com JCL. Se você cometer um erro de JCL simples, como esquecer de uma vírgula ou colocar um X na coluna 72, seu job irá, na maioria dos casos, encerrar muito depressa e o sistema informará um erro de JCL.
Seu desafio: Corrija um erro simples de JCL. Copie ZOS.CONTEST.JCL.D2008(BADJCL) para o seu próprio data set PDS.CNTL sob um novo membro de sua escolha. Submeta o job. Você terá um erro de JCL. E agora?
Verifique o output do SDSF e corrija o erro. Sugestão: Procure o ID da mensagem de JESYSMSG no recurso LookAt (US)para obter ajuda (o ID da mensagem começa com IEF). O sistema que você está usando é z/OS V1R6 (versão 1 release 6).
Depois de corrigir o erro e conseguir fazer o job ser executado sem erros de JCL, volte ao SDSF para conferir o output. Você encontrará um novo item de output.
Quando você verificar que tem esse novo output, execute XDC de todos os outputs dos jobs em seu data set ZOS.PART2 com o nome do membro FIXEDJCL. Novamente, certifique-se de XDC do lado do JOBNAME (e não DDNAME), para assegurar que o seu novo membro contenha JESMSGLG, JESJCL e JESYSMSG, e também o novo item do output.
É isso! Você acaba de depurar um job.
Você também deve observar mais algumas pistas para a cruzadinha.
|
 |
Histórico: Você pode pode adicionar um novo ícone no desktop seu computador e também pode customizar seu ambiente em z/OS. A interface do painel ISPF pode ser completamente reescrita para atender as suas necessidades. A maioria das oficinas de mainframe faz isso como a primeira etapa de personalização. Na verdade o sistema Zeus, que você está utilizando agora, já tem um grau de customização para seus painéis.
Seu desafio: Incluir a opção SDSF no seu próprio painel ISPF customizado.
Retorne ao prompt TSO READY (“=x” é o atalho no ISPF) e digite:
EX 'ZOS.CONTEST.CLIST(BLANKPNL)'.
Isso iniciará um novo painel personalizado no ISPF. Esse painel foi reduzido – tem apenas as funcionalidades necessárias para você trabalhar em um novo painel com seu próprio design. Você verá que a “opção 3 – Utility Menu” também foi reduzida.
Nota: Se a qualquer momento você precisar voltar ao painel principal (original) do ISPF, basta digitar LOGON BRA#### no prompt TSO READY. Isso pode ser necessário se você violar algo ao completar esse exercício.
Na linha de comando digite PANELID, você verá o nome do painel aparecer no canto superior direito. Ao entrar nos outros menus, assim como na opção 3, você verá que o ID do painel muda. Procure ao redor e veja alguns IDs de painel. Você pode encontrar o código do ISPF e dos painéis Utilitários reduzidos no PDS (Partitioned Data Set, lembra?) ZOS.CONTEST.PANELS – os IDs do painel para os painéis ISPF e de Utilitários correspondem aos nomes dos membros dentro do PDS. Dê uma olhada no ZOS.CONTEST.CLIST(BLANKPNL). Você verá uma lista de data sets concatenados, estes são todos os data sets que contem outros painéis que você pode precisar quanto estiver trabalhando no ISPF. Frequentemente no z/OS, os PDSs são concatenados para que sejam processados logicamente como um grande PDS. Quando dois data sets tem um membro com o mesmo nome, o que vem primeiro na concatenação tem precedência. Você notará que nessa CLIST (lista de comandos), ZOS.CONTEST.PANELS vem primeiro na lista e tem precedência sobre os outros. O painel principal original do ISPF está em CENTER.ISPPLIB, que está mais abaixo na lista.
Eis o que você precisa fazer:
- 1. Copie o data set ZOS.CONTEST.PANELS para o seu próprio data set onde você pode modificar. Porém copiar um data set inteiro com todos os membros é algo que você não fez. Você pode fazer assim:
(a) Localize o Utilitário Mover/Copiar ( ISRUMC1) em seu painel principal ISPF.
(b) Especifique a opção de cópia, entao preencha o nome do data set que você está copiando.
(c) No próximo painel, especifique o nome do data set para o qual você está copiando.
(d) No próximo painel (ISRMCALL), selecione Opção de Alocação 1.
(e) No próximo painel, coloque um “s” ao lado de cada membro para especificar que você deseja copiar ambos.
(f) Certifique-se de que o seu novo data set contém ambos os membros
- Copie ZOS.CONTEST.CLIST(BLANKPNL) em seu próprio data set onde você pode modifica-lo.
- Acrescente uma opção à sua cópia do ZOS.CONTEST.PANELS para tornar o SDSF uma opção de seu painel ISPF reduzido. Seu novo painel deve indicar ao usuário qual a opção é usada para abrir o SDSF. As opções “S” ou “13” são as normalmente utilizadas, entretanto você pode fazer algo diferente se preferir. O SDSF deve abrir corretamente do seu painel quando digitar o comando apropriado (“S”, “13”, ou o que você escolher).
- Modifique a sua cópia de BLANKPNL de forma que seu novo painel tenha precedência.
- Execute uma nova CLIST a partir do prompt TSO READY para exibir o seu painel personalizado.
- De volta ao ISPF, copie seu membro de painel personalizado para ZOS.PART2, usando o mesmo nome do membro. O que você deve copiar é o que tem o código de painel correto para a opção SDSF.
Não apague ou mova os membros utilizados nessa tarefa, pois iremos testar seu painel para verificar se você completou essa etapa com sucesso. Agora, vamos enfrentar o desafio final!
|
 |
Olhe dentro de ZOS.CONTEST.JCL.D2008(BADJCL2). Ele não executa como deveria. Há um erro no JCL. Ainda bem que corrigir erros de JCL é sua especialidade! Rastreie os erros, corrija-os e use o SDSF para salvar todas os outputs corretos para um membro de nome LASTJOB em seu data set ZOS.PART2. Quando ele executar corretamente este job mais pistas para as palavras cruzadas serão reveladas.
Sugestão: como você chegou até aqui, você merece uma sugestão. Inicializadores são address spaces (espaços de endereçamento) onde os batch jobs (tarefas de lote) são executados, ao invés dos jobs serem executados em seu address space. Para que um job seja executado ele precisa de um inicializador elegível. Dê uma olhada na opção INIT no SDSF para obter mais informações sobre os inicializadores no sistema. Nós já dissemos muito! Boa Sorte.
|
 |
Histórico: O z/OS tem suportado processos UNIX desde o início dos anos 90. Muitos programas Unix têm sido migrados para z/OS. Praticamente todo novo trabalho em mainframe utiliza o kernel e Unix Filesystem (sistema de arquivos Unix).
Seu desafio: Existem várias formas de chamar um shell Unix. Utilizar um TSO CMD ou chamar a partir de um painel ISPF são duas formas.
A partir da opção 6 do ISPF, insira OMVS para acessar o shell Unix, descubra onde o Java está instalado e qual a sua versão, grave esse dado em um arquivo chamado /tmp/bra####/javainfo (você pode encontrar os comandos Unix necessários utilizando o Google, é claro ;-] ).
Para sair do shell Unix, digite QUIT e pressione F2.
Como juiz, não quero ter que procurar no sistema de arquivos os seus data sets z/OS para achar suas respostas. Então quero que você copie /tmp/bra####/javainfo em seu ZOS.PART2 com o nome de membro JAVAINFO. Sugestão: o comando TSO OGET é uma forma fácil de fazer isso. Você pode obter ajuda sobre os comandos TSO inserindo o H cmd na opcão ISPF, onde cmd é o comando para o qual você quer sintaxe.
|
 |
Histórico: Em tarefas anteriores você executou programas REXX interativamente e em batch (processamento em background). Nessa tarefa você terá a chance de escrever em linguagem REXX. REXX é uma linguagem interpretada onde não há necessidade de compilar e executar o código (embora também exista um compilador disponível). O REXX é muito fácil de se aprender, uma linguagem poderosa e executada em quase todas as plataformas, mas foi desenvolvida em mainframe na IBM em Hursley na Inglaterra. ZOS.CONTEST.D2008(REXX) contém um programa REXX simples que você pode usar como início para o seu.
Um pouco de história...Em 7 de Abril de 1964, foi anunciado o IBM System/360 (S/360), uma família de mainframes que evoluiu continuamente, dando origem aos modelos mais atuais. O S/390 foi a primeira família de computadores a cobrir uma faixa ampla de aplicações, de pequenas à grandes, comerciais ou científicas.
Seu desafio: Crie seu executável no BRA####.BRA####.ZOS.PART2(MFANN). Dessa tarefa escreva um executável REXX para calcular quantos dias úteis faltam até o próximo aniversário do mainframe. Ao executar o programa em REXX, ele deverá mostrar a data atual e pedir ao usuário que entre a quantidade de dias por semana que são considerados úteis (por exemplo, se eu levar em consideração que sábado e domingo não são dias úteis, entraria com 5. Se considerar apenas Domingo como não útil, entraria com 6). Exibir uma mensagem de erro caso o número de dias úteis seja menor que 1 ou maior que 7. Ao fim da execução, exibir o número total de dias úteis que faltam, de acordo com o número de dias úteis que você considerou por semana
O manual a seguir lista todas as funções disponíveis. REXX User's Guide (US)
Não se esqueça de testar seu código! (Consulte o comando TRACE se sua resposta não for a esperada, ele o ajudará a depurar seu código).
|
 |
Histórico: Quando se trabalha com dados em um sistema computacional a representação desses dados irá variar dependendo do ambiente em que se trabalha. Os dados provavelmente estarão ilegível caso tenham sido codificados em linguagem de máquina, do tipo de hardware onde está alocado, ou do sistema operacional e país de origem. O Extended Binary Coded Decimal Interchange Code (EBCDIC), pronunciado "EBE-CE-DIC", é um padrão utilizado no mainframe e em outras plataformas da IBM. É um código 8-bits que representa um caractere.
Seu desafio: Converta a representação dos dados EBCDIC localizado em ZOS.CONTEST.JCL.D2008(DATA) em um texto alfanumérico. Armazene o dado convertido em BRA####.BRA####.ZOS.PART2(DATA).
Dica: Há várias formas de se converter os dados, desde convertendo-os na mão, ou criar um programa em REXX que faça as tarefas. Não estaremos avaliando o modo com o qual você converteu, o importante é que você tenha o membro DATA em seu dataset e ele contenha o texto convertido do modo HEX para o modo alfanumérico do EBCDIC.
Caso você opte por criar um programa em REXX, segue algumas dicas para ajudar você nessa tarefa:
- As função EXECIO e os parâmetros DISKR e DISKW permitem ler e escrever em um dataset;
- Busque informações sobre a função x2c, ela pode ser interessante.
Além disso, você poderá utilizar o manual da tarefa anterior, de qualquer forma, não se esqueça, a saída deve ser gravada em BRA####.BRA####.ZOS.PART2(DATA).
|
 |
Não esqueça de ter atualizado o seu membro XWORD com as pistas que encontrou e as respostas.
Mantenha uma cópia desse membro no seu computador (use copiar e colar), você precisará desses dados se quiser prosseguir para a Parte 3.
Observação: Antes de transmitir seu dataset para nós, certifique-se de que ele contém pelo menos 7 membros, que contém as respostas das tarefas 2 até 8. Caso ele contenha menos de 7 membros, veja se não esqueceu nenhum exercício para trás! É de suma importância que você envie todas as respostas para que seja validada sua participação e conclusão da parte 2!
Envie seus dados da Parte 2 a partir da opção 6 do ISPF:
XMIT TSTMVS01.IBMBRA DA(BRA####.ZOS.PART2)
|
 |
A Parte 3 do concurso será executada em uma máquina diferente, portanto se você chegou até aqui envie um e-mail para concurz@br.ibm.com e peça para que enviemos o seu ID da Parte 3.
Independentemente de você terminar ou não entre os primeiros vinte e cinco concorrentes, você realmente demonstrou algumas habilidades significativas de mainframe para chegar até este ponto. As empresas que possuem mainframe vão querer ouvir falar de sua experiência! Deixe-os saber sobre isto.
Se você gostaria de obter mais instruções ou treinamento sobre mainframe, mas sua escola, faculdade ou universidade não oferece nada atualmente, fale com seus professores sobre o IBM Academic Initiative. A IBM oferece materiais didáticos e acesso a mainframe grátis para estudantes e professores o chamado Hub Unicamp (contate José Vilela no e-mail josebv@br.ibm.com). Veja o programa do Academic Initiative para System z (US) para obter mais informações.
Obrigado por competir no Concurso Mainframe. Aguarde nosso contato para saber de seu desempenho e instruções para a próxima etapa. Caso você seja um dos finalistas. Boa sorte!
|
|  |
|
 |
0800-707-1426 Ramal: 1725 Segunda a sexta das 9 às 18 h. |
|
|
|
 |
Mencione este código: BR9AC01W |
|
 |
Standards abertos, código aberto e recursos IBM para academia. |
 |
|
|
|
|