Вы находитесь на странице: 1из 15

Concurso Mainframe IBM 2011 - Brasil Parte 2

Tempo para concluso aproximadamente 10 horas

Nesta etapa, vamos testar seus novos conhecimentos de z/OS. Sero vrias tarefas a serem executadas, cada uma mostrando uma funcionalidade do z/OS. Ao final, voc dever ter um dataset com os membros necessrios para avaliao. Para acompanhar seu aprendizado, preparamos tambm algumas perguntas que devero ser respondidas ao final desta fase.

Ajuda
Voc poder achar as referncias abaixo teis para a concluso das tarefas: z/OS v1.11 Information Center: http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp IBM LookAt z/OS Message Help: http://www-03.ibm.com/systems/z/os/zos/bkserv/lookat/index.html ABCs of z/OS System Programming: http://www.redbooks.ibm.com/redbooks/pdfs/sg246989.pdf Introduction to the New Mainframe z/OS Basics: http://www.redbooks.ibm.com/redbooks/pdfs/sg246366.pdf

INTRODUO PROGRAMAO DE SISTEMAS


Sistemas de mainframe so criados para serem usados por um grande nmero de pessoas. Boa parte daqueles que interagem com o mainframe so usurios finais pessoas que usam as aplicaes que esto no sistema. No entanto, graas complexidade dos softwares que suportam essa grande quantidade de usurios e aplicaes, uma grande variedade de profissionais necessria para operar o prprio mainframe.

Um desses profissionais o programador de sistemas - sou eu! Sou responsvel pela instalao, customizao e manuteno do z/OS no nosso mainframe.

O z/OS fornece muitos comandos e facilidades para ajudar o Programador de Sistemas a fazer isso. Vamos ver algumas delas? Para responder as perguntas relacionadas ao sistema, ao final da Parte 2, voc poder achar o livro MVS, disponvel no z/OS Information Center, til para compreender as sintaxes dos comandos, por que so usados e o output que geram. Voc poder encontrar o Information Center no link: http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp

INTRODUO AO IPL
Quando voc liga seu desktop ou notebook em casa o sistema operacional inicia atravs de um processo conhecido como booting. Este processo usa um registro boot no disco para localizar o sistema operacional e iniciar. No z/OS isso conhecido como IPLing, e o equivalente a um registro boot conhecido como load member.

IPL significa Initial Program Load. Dar um IPL significa inicializar o o mainframe. Uma boa forma de aprender dando uma olhada na informao fornecida pelo sistema quando foi dado IPL.

No menu do ISPF, entre no SDSF e escolha a opo ULOG, para entrar na User Session Log, para visualizar o output dos comandos que voc utiliza. Para visualizar a informao do IPL para o sistema z/OS, h o comando /DISPLAY IPLINFO, ou se voc preferir, /D IPLINFO. A resposta ser o output do log de sua sesso.

Adicionalmente ao load member, o sistema tambm requer um ou mais datasets que so coletivamente conhecidos como System Parameter Library (PARMLIB). Estes datasets contm vrios membros que detalham adicionalmente informaes para diferentes aspectos no sistema.

Se voc est mais familiarizado com Linux ou UNIX, o PARMLIB no z/OS um pouco parecido com o diretrio /etc/.

Comandos de display esto listados no documento MVS System Commands no z/OS Infocenter A configurao da PARMLIB no z/OS dividida entre diferentes membros para diferentes aspectos do sistema. z/OS define os nomes destes membros usando prefixos especficos combinados com sufixos customizveis. A maioria destes sufixos so definidos na lista de parmetros do sistema, que pode ser encontrada em um ou mais membros cujo nome comece com IEASYS.

O uso dos sufixos permite que o operador d um IPL no sistema z/OS com diferentes configuraes simplesmente por definir os diferentes sufixos para os membros IEASYS. Por padro, os sufixos de IEASYS so geralmente especificados no load member, porm um operador pode anular isso quando um IPL iniciado.

O comando DISPLAY IPLINFO que voc usou recentemente disponibilizou a lista de sufixos este sistema utilizou. Procure o output no topo do ULOG, voc dever visualizar uma linha para IEASYS LIST

Voc ver que o topo da lista contm uma entrada para o sufixo 00; o (OP) em seguida, se presente, indica que ela foi especificada pelo operador e no pelo load member. A partir disso podemos determinar que quando for feito um IPL no sistema, ele dever ler um membro chamado IEASYS00. Localize e visualize este membro no dataset PARMLIB pesquise pelos comandos DISPLAY e descubra onde os datasets PARMLIB esto localizados. Voc dever poder ver como estes sufixos para a outra configurao so definidos.

Recursos de Sistema
Ao comprar um computador pessoal, a maioria das pessoas gosta de olhar as especificaes, como quanta memria ele possui. O z/OS se refere memria como armazenamento central ou real. Uma mquina System z pode rodar um nmero grande de sistemas z/OS, conhecidos como parties lgicas (ou LPARs). Cada LPAR possui um subconjunto dos recursos fsicos alocados ela, tanto exclusivamente quanto de forma compartilhada com outras LPAR. Para visualizar a quantidade de armazenamento real que temos disponvel para o LPAR do sistema z/OS que voc est usando, possvel usar o comando /D M=STOR. O z/OS tambm fornece um ambiente UNIX, conhecido como UNIX System Services (USS) ou OMVS. Voc ter a oportunidade de conhecer o OMVS mais tarde nesta parte do concurso. Assim como no UNIX, possvel configurar muitas opes, como quantos processos podem ocorrer concorrentemente, qual no est relacionado aos jobs que foram identificados antes. Estes podem ser encontrados em um membro PARMLIB, porm muito mais simples usar o comando DISPLAY OMVS,L para visualizar os limites configurados.

H muito mais no dia-a-dia de um programador de sistemas, mas eu acho que por enquanto j est suficiente. Vou deix-lo com a sua mentora e voc poder executar seus prprios jobs. No quebre nada!

At agora voc s viu alguns comandos. Grave bem eles, voc poder precisar mais tarde!

CRIANDO UMA MACRO NO ISPF

Nesta etapa, vamos aprender a criar uma macro. A macro permite aos profissionais de mainframe executarem uma srie de comandos em apenas um passo. A macro com a qual voc vai trabalhar ir imprimir um verso na tela. Legal, hum?

Execute corretamente uma macro no ISPF. Para executar esta macro, vamos utilizar algo chamado CLIST, que significa Command List. A CLIST j foi escrita para voc, porm precisa ser debugada. Voc tambm dever executar uma declarao ALTLIB. Uma breve explicao dos membros que voc ir usar: ALTLIB Um membro executvel escrito na linguagem REXX ISRBOX Uma macro CLIST BOXOUT Um membro atravs do qual voc ir rodar sua macro RESETBOX Um programa que reseta o membro BOXOUT para o seu estado original.

Comece alocando o dataset 'IBMxxxx.PARTE2.CLIST' Agora defina os seguintes atributos para o seu dataset: Alocar em tracks (TRKS)

Primary quantity : 1 Secondary quantity: 2 Directory Blocks: 0 Record format: FB Record Length: 80 Block size: 32000 Data set name: LIBRARY
Copie o membro 'ZOS.BR.PARTE2.CLIST(ALTLIB)' para 'IBMxxxx.PARTE2.CLIST(ALTLIB)' Copie os membros restantes (ISRBOX, BOXOUT e RESETBOX) para o seu dataset 'IBMxxxx.PARTE2.CLIST', mantendo os nomes originais destes membros.

Agora abra o seu membro ALTLIB. Voc perceber que ele apenas uma declarao padro, portanto ser necessrio alterar alguns parmetros. A primeira linha do membro informa ao sistema que o membro um arquivo REXX. Este comentrio necessrio, sem ele o sistema pode assumir que o arquivo uma CLIST. A segunda linha informa ao interpretador REXX o que fazer com comandos no-REXX. Se o interpretador encontrar uma declarao que ele no reconhece, ir pass-la adiante. Neste caso, estamos dizendo ao interpretador que passe adiante todas as declaraes no-REXX para o TSO. Estas declaraes precisam estar em aspas duplas. A terceira linha um comando TSO ALTLIB. Voc ir precisar alterar os parmetros desta declarao para execut-la corretamente. Na linha de comando, digite: C USERID IBMxxxx ALL Como voc provavelmente se lembra, este comando ir alterar todas as instncias USERID por seu usurio, IBMxxxx. Abra o seu membro RESETBOX e faa o mesmo. Feito isto, voc poder futuramente poder executar o RESETBOX para resetar o membro BOXOUT, caso alguma coisa saia errado. Muito bem! Agora que voc j tem os membros ALTLIB e RESETBOX prontos, hora de executar o programa ALTLIB. Volte para a sua lista de membros e digite EXEC na linha ao lado do membro ALTLIB. Voc no ver resultados ainda, a no ser que algo d errado e retorne uma mensagem de erro. Observao: se voc est usando a sua tela divida em duas com o F2, ser necessrio executar a macro na outra tela tambm. Agora edite o seu membro BOXOUT. Na linha de comando, digite ISRBOX. Algo no deu certo... Ao invs de uma caixinha com um verso, voc tem apenas algumas linhas. Existem erros na ISRBOX que esto impedindo o verso de imprimir corretamente. Abra este membro e corrija o seu erro. Se estiver se sentindo criativo, altere o verso e escreva um poema de sua escolha! Observao: No se esquea, talvez seja necessrio resetar seu BOXOUT a cada nova tentativa. Com o seu CLIST corrigido, entre no seu membro BOXOUT e d o comando ISRBOX e pressione enter. Se der certo, sua macro ir desenhar uma caixa com o verso dentro. Voc completou mais uma etapa da Parte 2!

ASCII VS. EBCDIC

Uma diferena entre os mainframes e quase todos os outros computadores o uso da codificao EBCDIC ao invs de ASCII. Mas qual a diferena entre EBCDIC e ASCII afinal?

Na poca em que surgiu, o EBCDIC tornava a tarefa de entrar dados no mainframe usando cartes de ponto mais fcil. Desde o tempo em que os cartes de ponto surgiram (entenda isso como a poca dos dinossauros), uma grande quantidade de dados j era armazenada usando o formato EBCDIC. Com a padronizao da maioria dos sistemas com ASCII, o mainframe passou a suportar dados em ambos os formatos. Muitas aplicaes, no entanto, ainda esperam que os dados estejam no formato EBCDIC. Quando isso pode se tornar um problema? Talvez voc queira trabalhar com algo localmente e ento subir ele para o mainframe. Ocasies em que a converso de cdigos ser necessria podem se tornar frequentes, portanto esta uma tcnica importante para economizar tempo. Seu desafio ser converter um membro de dataset que est em ASCII. Existem diversos mtodos para trabalhar com o z/OS UNIX System Services e o z/OS UNIX shell prompt. Neste desafio, voc usar o OMVS, disponvel atravs do ISPF. OMVS significa Open MVS, que o nome original concedido ao z/OS UNIX quando a IBM habilitou o mainframe para operar aplicaes UNIX. Porm, antes de acessar o shell do OMVS, siga estas instrues: Comece alocando o dataset 'IBMxxxx.PARTE2.DATA' Agora defina os seguintes atributos para o seu dataset: Alocar em tracks (TRKS)

Primary quantity : 1 Secondary quantity: 2 Directory Blocks: 0 Record format: FB Record Length: 255 Block size: 32640 Data set name: LIBRARY

Copie o membro 'ZOS.BR.PARTE2.DATA(ASCII)' para 'IBMxxxx.PARTE2.DATA(ASCII)' Para chegar ao shell do OMVS, acesse a opo 6 do menu ISPF. Na linha de comando, digite OMVS e d enter. Espere at o prompt IBMxxxx:/z/ibmxxxx:>. No prompt de comando UNIX digite o comando: cp '//parte2.data(ascii)' ascii Isto ir copiar o seu membro ASCII para um arquivo chamado ASCII no diretrio. Se voc entrar o comando ls para listar os arquivos do seu diretrio, ASCII dever estar ali. Vamos abri-lo! Digite o comando: oedit ascii Epa! O que isso? O motivo pelo qual o texto no pode ser lido porque ele est codificado em ASCII. Precisa ser convertido em EBCDIC para ser interpretado pelo editor ISPF do mainframe. Pressione F3 para voltar ao OMVS e corrigir tudo. Abra o Google ou o seu buscador favorito e procure por ibm ascii ebcdic conversion. Um dos primeiros resultados ser uma pgina do domnio ibm.com. Entendeu? timo! Nesta pgina, procure pelo comando iconv. O exemplo desta pgina lhe mostrar como converter de EBCDIC para ASCII. Precisa editar o comando para que ele converta de forma inversa, de ASCII para EBCDIC (dica: isso significa que os parmetros f e t devem ser trocados). O arquivo que receber o cdigo convertido dever se chamar EBCDIC. Execute o comando correto no OMVS. Observao: cuidado para no confundir o O de ISO com um 0! Use o oedit para olhar o arquivo que voc acabou de criar: oedit ebcdic Agora parece bem melhor, no? Seu ltimo passo ser copiar o arquivo EBCDIC para o seu dataset 'IBMxxxx.PARTE2.DATA'. Faa isso alterando o comando cp usado no comeo. Aps terminar tudo, voc poder digitar o comando exit e apertar enter para sair do OMVS. Ah, de volta ao ISPF... Acesse o seu data set 'IBMxxxx.PARTE2.DATA' e visualize o membro EBCDIC. Est ali? tima notcia! Voc acaba de completar mais uma tarefa da Parte 2!

UM ODIOSO E MALVADO PROGRAMA EM C


Brincadeiras parte, de fato existe um conjunto de nmeros chamado Odious (de odd paridade mpar), cuja converso binria possui um nmero mpar de 1s. Qualquer nmero que no considerado odious considerado Evil (de even paridade mpar), significando que sua converso binria possui um nmero par de 1s. Seu desafio nesta etapa ser modificar um programa em C para que ele atenda aos requisitos listados abaixo, e ento usar o JCL para compilar e rodar. Siga os seguintes passos: Comece alocando o dataset 'IBMxxxx.PARTE2.SOURCE'. Agora defina os seguintes atributos para o seu dataset: Alocar em tracks (TRKS)

Primary quantity : 1 Secondary quantity: 2 Directory Blocks: 0 Record format: FB Record Length: 80 Block size: 32000 Data set name: LIBRARY

Agora crie o dataset 'IBMxxxx.PARTE2.LOAD' Agora defina os seguintes atributos para o seu dataset: Alocar em tracks (TRKS)

Primary quantity : 1 Secondary quantity: 2 Directory Blocks: 0 Record format: U Record Length: 80 Block size: 32000 Data set name: LIBRARY
Copie os membros ODIOUSRC, ODIOCMP E ODIORUN do dataset 'ZOS.BR.PARTE2.SOURCE' para o seu. Algumas explicaes sobre o que esses membros so capazes! ODIOUSRC o programa em C. Neste momento tudo que ele faz listar nmeros Odious e erros, mas iremos mudar isso!

ODIOCMP o compilador, o JCL que ir compilar o seu ODIOUSRC. ODIORUN o JCL que executa o seu programa recentemente compilado pelo ODIOCMP. ODIOUS o arquivo de entrada com todos os nmeros a serem verificados pelo programa. Abra o seu membro ODIOCMP. Altere OCMPxxxx substituindo os 'x' pelo nmero do seu user ID. D um submit em seu JCL e confira se est tudo ok. O programa ter compilado sem erros se retornar a mensagem MAXCC=0. Qualquer nmero diferente deste indicar um erro no cdigo. Neste caso, entre no painel SDSF e tente identificar o erro. Com o programa devidamente compilado, edite o membro ODIORUN, alterando ORUNxxxx trocando os Xs pelo nmero do seu usurio. Feitas as alteraes, submeta o JCL. Dever retornar MAXCC=0, caso retorne qualquer outra mensagem faa conforme foi instrudo no pargrafo acima e corrija o erro. Ok, tudo certo? Entre no seu dataset 'IBMxxxx.PARTE2.DATA' e visualize os dois membros que foram criados, o ODIOUS e o OERROR.

Agora vamos mudar as coisas um pouco!

1. 2.

Modifique o ODIOUSRC de forma a gerar um terceiro output. Seu programa j cria o ODIOUS e OERROR, agora dever gerar o membro OEVIL, que imprime nmeros evil. Modifique o ODIOUSRC de forma a incluir duas linhas de cabealho em cada output: 1. 2. Seu nome - Odious/Evil/Error Number (ex: Agatha Odious Number para um relatrio de nmero odious, e assim por diante). Linha em branco

3.

Modifique o JCL em ODIORUN de forma a enviar os dados de Evil para um membro OEVIL em seu dataset 'IBMxxxx.PARTE2.DATA'.

Se quiser ler um pouco mais sobre programao em C, o z/OS V1R10 Information Center contm algumas informaes sobre programao em C/C++. Compile o programa e submeta ODIORUN novamente. Se tudo ocorreu bem, seu programa ter criado trs membros em seu dataset 'IBMxxxx.PARTE2.DATA', cada um listando seu respectivo conjunto de nmeros. Nota: Se seu membro OERROR repetir as linhas duas vezes, voc no completou esta parte com sucesso. Refaa seu cdigo.

PROVANDO QUE VOC CHEGOU L

Muito bem! Voc chegou at aqui! Est muito perto de completar a Parte 2!

Porm, ainda tenho algumas perguntas para avaliar o quanto voc aprendeu. Ficar surpreso com o quanto voc j sabe!

Responda essas perguntas para terminar a Parte 2 e enviar os seus resultados!

Copie o dataset 'ZOS.BR.PARTE2.ANSWER' para 'IBMxxxx.IBMxxxx.PARTE2.ANSWER'. A configurao do seu dataset dever estar igual ao dataset de origem. Edite seu membro e insira seu user ID no campo que solicitado. Leia e responda as perguntas com calma. Para que no restem dvidas, leia as regras para preenchimento contidas no topo do membro. Depois de responder tudo, voc estar pronto para solicitar seu acesso Parte 3!

Talvez voc tenha que voltar e rever algumas tarefas. No se preocupe, est tudo aqui na documentao da Parte 2!

FINALIZANDO A PARTE 2

Parabns, voc j chegou longe!

Submeta seu Trabalho!


Pronto! Voc conseguiu! Mas espere! Agora voc precisa submeter seus datasets! Siga as instrues abaixo com calma e faa exatamente o que solicitado para garantir que seu dataset chegue at ns: Crie o dataset 'IBMxxxx.IBMxxxx.PARTE2.CORRIGIR' (sim, os dois primeiros identificadores DEVEM ser seu user ID) com as configuraes abaixo: Alocar em tracks (TRKS) Definir a primary quantity como 1 e secondary quantity como 1. Definir directory blocks como 0. No campo record format, definir como FB (fixed block) e o campo record length deve ser definido como 80. Definir o campo block size como 27920. O data set name dever ser LIBRARY.

Copie os seguintes membros para o seu novo dataset CORRIGIR :

'IBMxxxx.PARTE2.DATA(EBCDIC)' ignore a mensagem de truncation 'IBMxxxx.PARTE2.DATA(OEVIL)' ignore a mensagem de truncation 'IBMxxxx.PARTE2.DATA(ODIOUS)' ignore a mensagem de truncation 'IBMxxxx.PARTE2.DATA(OERROR)' ignore a mensagem de truncation 'IBMxxxx.PARTE2.CLIST(BOXOUT)'

Verifique se seus membros esto corretos e prontos para avaliao. Para ser qualificado para a parte 3 voc dever responder corretamente todas as perguntas, portanto no esquea de revisar a sua folha de respostas. Aps copi-los, volte para o menu principal do ISPF, entre na opo 6 command, e entre o seguinte comando: XMIT N1.JUDGE9 DA('IBMxxxx.IBMxxxx.PARTE2.CORRIGIR') e depois XMIT N1.JUDGE9 DA('IBMxxxx.IBMxxxx.PARTE2.ANSWER') Isso far com que nossos juzes recebam apenas os datasets que devem ser avaliados. importante que seu dataset possua os dois primeiros identificadores com seu ID. Para finalizar, necessrio que voc envie um e-mail para concurz@br.ibm.com com o assunto "CONCLUSO PARTE 2 IBMxxxx". Assim que recebermos seu e-mail, iremos corrigir seus trabalhos e informar se est qualificado para continuar na Parte 3.

Continue Seus Estudos!


A Parte 3 comear a partir do dia 17/09/2011. Se voc terminar a Parte 2 aps esta data, ainda poder concorrer para participar da etapa seguinte, portanto no desista e no deixe de enviar seu email. Independente de voc conseguir terminar esta Parte com sucesso ou no, voc demonstrou que realmente aprendeu bastante para chegar at aqui. Fique orgulhoso! Ponha seus novos conhecimentos em seu currculo, os recrutadores esto procurando estudantes que tenham passado por experincias que lhe tenham trazido algum aprendizado. Obrigado por ter participado de mais uma etapa do Concurso Mainframe IBM 2011! Boa sorte e, se tudo der certo, nos vemos na Parte 3! ;-)

Вам также может понравиться