21
Concurso Mainframe IBM 2012 - Brasil Parte 1 Tempo para conclusão – aproximadamente 5 horas Ajuda Você poderá achar as referências abaixo úteis para a conclusão das tarefas: – z/OS v1.11 Information Center: http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp Antes de começarmos a parte 1, sugerimos que você faça a Ambientação. Não é obrigatório, porém, na Ambientação você encontrará muitos conceitos importantes para o desenvolvimento do concurso inteiro! Começou o Concurso! Nesta etapa, você conhecerá alguns procedimentos usando o editor ISPF! Algumas tarefas básicas serão passadas e, ao final, você deverá rodar um executável! E ai, vamos brincar no mainframe agora??!!!

Concurso Mainframe 2012-Parte 1

  • Upload
    helderd

  • View
    207

  • Download
    22

Embed Size (px)

Citation preview

Page 1: Concurso Mainframe 2012-Parte 1

Concurso Mainframe IBM 2012 - Brasil

Parte 1Tempo para conclusão – aproximadamente 5 horas

Ajuda

Você poderá achar as referências abaixo úteis para a conclusão dastarefas:– z/OS v1.11 Information Center:http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp

Antes de começarmos a parte 1, sugerimos que você faça a Ambientação.Não é obrigatório, porém, na Ambientação você encontrará muitosconceitos importantes para o desenvolvimento do concurso inteiro!

Começou o Concurso!Nesta etapa, você conhecerá algunsprocedimentos usando o editor ISPF!Algumas tarefas básicas serão passadas e,ao final, você deverá rodar um executável!E ai, vamos brincar no mainframe agora??!!!

Page 2: Concurso Mainframe 2012-Parte 1

CONHECENDO OS TIPOS DE DATASETS

Conforme visto na ambientação, um data set pode ser sequencial ouparticionado. O que isto significa, afinal de contas?

Dataset Sequencial :Este tipo de dataset contém dados que são acessados em sequência. Cadaacesso depende do outro e ocorre na ordem em que é inserido, no estiloFIFO (first in first out – primeiro a entrar, primeiro a sair).

Dataset Particionado (PDS) :Este tipo de dataset pode conter vários membros, como uma pasta podeconter várias subpastas. Cada membro pode conter uma JCL, umabiblioteca ou até mesmo um executável. Cada dado pode ser acessadoseparadamente.

Page 3: Concurso Mainframe 2012-Parte 1

Alocando um novo Dataset

Para as próximas etapas, precisaremos criar um dataset particionado.A partir do painel principal do ISPF, digite 3 (Utilities) , pressione Enter edepois digite 2 (data set).

Você será levado para a tela de Data Set Utility. Na linha de comando(Option ===>), digite A (para alocar um novo dataset). No campo Data SetName ... digite PARTE1.ESCOLA e pressione Enter . Não se esqueça! Datasets são nomeados com identificadores de 1 a 8 caracteres e separadospor pontos.

Digitando sem aspas, o sistema assumirá automaticamente que o primeiroidentificador será seu ID. Desta forma, o dataset que estamos criandodeverá ficar como IBM####.PARTE1.ESCOLA observe no campo Data SetName.

Digitando 'IBM####.PARTE1.ESCOLA ' terá o mesmo resultado quedigitando apenas PARTE1.ESCOLA . Sem aspas simples, o sistema assumeque seu ID será o primeiro identificador, mesmo se você não digitá-lo,enquanto que, entre aspas simples, você precisará digitá-lo manualmente.

Agora defina os seguintes atributos para o seu dataset:• Space units = TRACK ;• Primary Quantify = 1;• Secondary Quantify = 1;• Record Format = FB (FIXED BLOCK) ;• Record Length = 80;• Block size = 32000;• Data set name type = LIBRARY ;

Qualquer campo não mencionado pode ser deixado em branco.

Page 4: Concurso Mainframe 2012-Parte 1

Sua tela deverá estar assim:

Pressione Enter !Recebeu a mensagem no canto superior direito: DATA SET ALLOCATED?Você criou um data set no mainframe com sucesso!

Acesse o seu Dataset• ISPF > 3 Utilities > 4 DsList > Dsname Level IBM#### >• B (browser) > (Na frente do dataset que acabamos de criar)

O Dataset que você criou está vazio.

Page 5: Concurso Mainframe 2012-Parte 1

Criando um membro para o Dataset

DESAFIO - 1

Um membro pode ser qualquer coisa – código de programa, saída deprograma, dados binários ou simplesmente texto.

Vamos criar um membro dentro do data set particionado (PDS):• Volte ao menu principal do ISPF e digite 2 (Edit) ;• Escreva PARTE1.ESCOLA(AULA1) no campo NAME embaixo de

FROM OTHER PARTITIONED OR SEQUENTIAL DATA SET epressione enter;

• Comece digitando o comando RES (RESET) na linha de comando, edando enter para remover a mensagem na tela. Este comandopoderá ser usado sempre que for necessário limpar a tela dealgumas mensagens ou recursos.

• Digite i5 no campo com os ****** para inserir 5 linhas.• Crie uma lista com 5 ideias para um mundo mais inteligente, cada

ideia em uma linha.• Depois que criar a lista, digite SAVE na linha de comando e volte ao

painel principal do ISPF pressionando F3.

Agora começa a diversão. Vamos ao trabalho!!

A instituição de ensino XPTO realiza todos os anos uma prova para avaliaro desempenho dos alunos e a qualidade dos cursos. A instituição não temum sistema tão inteligente o quanto precisa para organizar os dados dosseus alunos. Precisamos reunir os dados dos alunos que fizeram a provaem um relatório para a instituição. Você precisará copiar uma lista com os dados do resultado da prova deCLASSE3 .

Page 6: Concurso Mainframe 2012-Parte 1

Copiando um membro

Copie o membro CLASSE3 já existente para o seu Dataset• ISPF > 3 Utilities > 3 Move/Copy > • Option = C • From Name = 'BRASIL.PUBLIC.PARTE1.ESCOLA(CLASSE3)' • Dê enter e na próxima tela digite onde iremos salvar o membro• To Other Name = PARTE1.ESCOLA .• Se estiver tudo certo uma mensagem vai aparecer: • Member CLASSE3 copied

Page 7: Concurso Mainframe 2012-Parte 1

Inserindo novos dados no membro

Quando temos uma página com muita informação, algumas dessasinformações não aparecem na tela, para isso, podemos apertar as teclasF7 e F8 para subir e descer a página, respectivamente.

Precisamos cadastrar dois novos alunos que realizaram a prova com umpequeno atraso. Para isso, insira os novos dados no membro que copiamos.

Edite o membro CLASSE3 :

Na última linha deste dataset, insira as duas linhas abaixo querepresentam os alunos que realizaram a prova com atraso:

• O000072-A3 JOAO PEDRO 06 098% R AAA ***** IBM000#12 345678901• O000073-A3 MARIA CLARA 07 089% R AAA ***** IBM000#1 2345678901

onde, o cabeçalho é o seguinte:

• Matrícula / Nome / Sobrenome / Nota / Frequência / Estado / Tipo / ***** / ID

Insira os dados seguindo exatamente a formatação atual da CLASSE3.Não se esqueça de salvar!!!

Existe um comando que permite exibir uma linha formatada, mostrando aidentificação das colunas, o COLS.O comando COLS exibe uma linha com a indicação das colunas, como noexemplo :

000300COLS - - - + - - - 1 - - - + - - - 2 - - - + - - - 3 - - - + - - - 4 - - - + etc.000400

Page 8: Concurso Mainframe 2012-Parte 1

Vamos aprender um pouco de JCL para continuaro nosso trabalho?!!

Job Control Language (JCL) é como você descreve esta informação aoz/OS, onde um job representa uma tarefa.

Para cada job que você submete, você precisa falar ao z/OS ondeencontrar a entrada (input) apropriada, como processar a entrada (isto é,qual programa ou quais programas serão rodados) e o que fazer com ooutput resultante. Use o JCL para transmitir esta informação para oz/OS através de uma série de comandos conhecidos como JOB CONTROLSTATEMENT (JCL).

Dentro de cada job, os comandos de controle são agrupagos em doispassos. Um passo consiste em todo o controle necessário para rodar umprograma.Se o job precisa rodar mais de um programa, o job pode conter um passodiferente para cada um dos programas.

Page 9: Concurso Mainframe 2012-Parte 1

Job Control Statements

Cada job deverá conter:

Um JOB statement (ou declaração JOB) marcando o início do job paradesignar um nome. Esta declaração também é usada para providenciarinformações administrativas, incluindo segurança, contabilização eidentificação de informação. Cada job tem uma e apenas uma declaraçãoJOB .

Pelo menos uma declaração EXEC (execute), marcando o início de umpasso, um nome para o passo e o programa ou procedimento a serexecutado. Você pode adicionar vários parâmetros para a declaraçãoEXEC para customizar o modo como o programa irá executar e ascondições nas quais ele deverá ser executado.A maioria dos programas requerem dados de entrada ou geram dados desaída, e geralmente contém:

Uma ou mais declarações DD (data definition), para identificar edescrever os dados de entrada e saída a serem usados neste passo. Estadeclaração pode ser usada para requerer um dataset criado previamente,para definir um novo dataset ou para definir e especificar ascaracterísticas do arquivo de saída, ou output.

Cada job control statement tem cinco campos:

1. Um campo identifier, que é tipicamente duas barras (//). A linha inteiraserá tratada como comentário se as barras duplas forem seguidas de umasterisco (//*).2. Um campo name, identificando a declaração de forma que ela possa serreferida mais tarde.3. Um campo operation, identificando o tipo de declaração, i.e. JOB ,EXEC, DD.4. Um campo parameter

5. Qualquer informação seguindo o campo parameter é tratada comocomentário e é ignorada.

Page 10: Concurso Mainframe 2012-Parte 1

Declarações JCL podem ser escritas até a coluna 71. Você pode estar seperguntando o porque deste formato. Historicamente, o JCL era lidousando cartões perfurados de 80 colunas, sendo as últimas 8 utilizadaspara numerar as linhas.

DESAFIO - 2

Crie um dataset particionado chamado PARTE1.JCL com as mesmasconfigurações de PARTE1.ESCOLA . Se precisar, volte na atividade 1 pararefrescar a sua memória ;)

Dentro desse dataset iremos copiar um membro chamado JCL0001 que seencontra em 'BRASIL.PUBLIC.PARTE1.JCL(JCL0001)' , e depois editá-lo.

• Digite o comando HILITE ON• Digite o comando CHANGE ALL IBM#### IBM(seu id) • E depois submeta-o digitando o comando SUB

Esse job recebe o membro que você criou AULA1 e exibe o conteúdo nasaída padrão do sistema.

Algo deu errado após submeter o nosso primeiro job, vamos aprender umpouco sobre o SDSF para verificar esse erro.

Page 11: Concurso Mainframe 2012-Parte 1

Usando o SDSF

System Display and Search Facility (SDSF) fornece a informação quevocê precisa para monitorar, gerenciar e controlar um sistema z/OS.Você pode usar o SDSF para visualizar o log do sistema e o status dosjobs que estão rodando no sistema ou que terminaram de rodar, incluíndoqualquer output destes jobs que ainda não foram descartados.

Você pode acessar o SDSF pelo painel principal do ISPF usando o comandoSD.

No SDSF, use a opção DA para visualizar os jobs ativos, incluindo qualquertarefa iniciada, que são um tipo de job especial.

ST pode ser usado para visualizar o status dos jobs que estão ativos, dosque ainda serão processados e daqueles que já completaram.Uma vez que você esteja vendo a lista de status dos jobs, no campo decomando é possível definir um filtro para visualizar apenas os jobs quevocê possui digitando OWNER IBM#### (IBM#### é o seu ID)

Para reverter a ação e visualizar todos os jobs, digite:OWNER *

Similarmente, você pode filtrar a lista de jobs por nome digitando:PREFIX ABC*

O que deverá mostrar apenas os jobs cujo nome comece com as letrasABC.Para remover este filtro, digite: PREFIX *

É possível usar ambos os filtros owner e prefix ao mesmo tempo.Estes filtros são úteis pois mostram apenas os jobs com os quais você iráquerer trabalhar.Porém, saiba que o SDSF memoriza os filtros que você está usando. Sevocê não está vendo o job que procura, remova os filtros para que todosos jobs sejam visíveis.

Page 12: Concurso Mainframe 2012-Parte 1

Nos painéis DA e ST você é apresentado com uma lista de jobs. Use asteclas F7 e F8 para subir ou descer na lista.

Para visualizar mais informações a respeito de um job em particular, épossível usar o comando S ao lado do job, na coluna da esquerda, epressionar Enter .Isso irá disponibilizar alguns dados a respeito da execução deste job.

Caso queira visualizar o output separadamente, você pode digitar ? nolugar de S. Você poderá então usar S para selecionar o outputindividualmente.Use a tecla F3 para sair desta tela e retornar ao painel ISPF.

Verifique o log no SDSF do job JCL0001 e corrija o erro no membro.Após submeter o JOB sem erros irá retornar a seguinte mensagem:MAXCC=0000.

Page 13: Concurso Mainframe 2012-Parte 1

Salvando o OUTPUT do SDSF

• ISPF > SDSF > ST > • Procure pelo JOBNAME PRIMJOB que executou com sucesso, deve

ser o último da lista (Owner IBM####)• Digite ? na frente o jobname PRIMJOB• Digite S na frente do DDNAME SORTOUT • Observe as 5 ideias no data set classificados em ordem alfabética!

Volte para a tela anterior (F3)• Digite XDC SORTOUT > (Na frente do seu JOB) e dê enter• Insira os dados abaixo:• Data set name ===> PARTE1.ESCOLA• Member to use ===> AULA2 • Disposition ===> OLD e enter!

Procure pelo membro AULA2 e veja se este foi criado .Configure o seu arquivo como na tela abaixo. Lembrando que no

campo Data Set Name você deve indicar o nome do SEU Dataset.

Page 14: Concurso Mainframe 2012-Parte 1

Aqui vai uma dica!!!! =D

Existe um comando que cria uma nova tela do ISPF. Com essa nova telavocê não precisa ficar dando voltas pelo painel do ISPF a cada tarefa epode fazer duas coisas ao mesmo tempo. Este comando é o SPLIT (F2).

Coloque o indicador do cursor em qualquer parte da barra superior, comona primeira imagem, e aperte (F2). Aparecerá uma linha pontilhada comona segunda imagem. Isso indica que você criou uma nova tela do ISPF.Para alternar entre as telas aperte (F9).

Imagem 1

Imagem 2

Page 15: Concurso Mainframe 2012-Parte 1

DFSORT

Vamos ver rapidamente alguns comandos do DFSORT para continuar como nosso projeto.Esses comandos são usados para executar funções de classificação notexto que estamos editando nos membros dos datasets.DFSORT é um programa que você usa para ordenar, mesclar e copiarinformações.

Nesta lista abaixo, estão as principais comandos do DFSORT.

• SORT - Descreve os campos para uma aplicação de classificação, ousolicitar uma cópia de aplicação.

• MERGE – Descreve os campos para uma aplicação de fusão, ou solicitauma cópia da aplicação.

• OPTION - substitui padrões de instalação e fornece informaçõesopcionais, como o número de registros para pular antes da separação

• INCLUDE - Descreve os critérios a serem utilizados para incluir osregistros antes de serem classificados, copiados ou fundidos.

• OMIT - Descreve os critérios a serem utilizados para omitir registrosantes de serem classificados, copiado ou fundidos.

• OUTFIL - Permite criar um ou mais conjuntos de dados de saída parauma espécie de cópia, ou mesclar a aplicação de uma única passagemsobre os dados de um ou mais conjuntos de entrada.

• INREC - Descreve como os registros devem ser reformatado antes deserem ordenados, copiado ou fundidos.

• OUTREC - Descreve como os registros devem ser reformatada depoisde serem classificados, copiado ou fundidos.

• SUM - Descreve como os campos devem ser somados, após separaçãoou fusão.

• JOINKEYS - Função poderosa do DFSORT que ajuda você a executarvárias aplicações "join" em dois conjuntos de dados por um ou maisteclas.

Page 16: Concurso Mainframe 2012-Parte 1

ATENÇÃO: Para realizar as próximas tarefas você vai precisar aprendercomo funcionam alguns desses comandos. Os próximos JOB incluem oscomandos DFSORT, mas sua tarefa será completar os parâmetros deacordo com o comando e a atividade. Complete apenas os espaços com (_),pois o restante do comando está certo!

DESAFIO – 3

Copie os membros CLASSE1 , CLASSE2 e CLASSE4 de'BRASIL.PUBLIC.PARTE1.ESCOLA' para dentro do seu datasetPARTE1.ESCOLA .

Copie os membros JCL0002 , JCL0003 , JCL0004 , JCL0005 de'BRASIL.PUBLIC.PARTE1.JCL' para dentro do seu dataset PARTE1.JCL .

Se não lembra como copiar os membros, então volte nas atividades!

Vamos organizar os relatórios das classes antes de enviar para nossacentral. Precisamos que você utilize o job JCL0002.

• Edite o job JCL0002 alterando IBM#### para IBM(seu id)• Este JOB criará um membro de saída para cada classe com os dados

ordenados pela NOTA do aluno.• Sua tarefa aqui é passar os parametros que faltam do comando

SORT e ordenar os membros CLASSE1 , CLASSE2 , CLASSE3 eCLASSE4 criando respectivamente para cada um desses, ummembro de saída OUTPUT1, OUTPUT2, OUTPUT3 e OUTPUT4todos membros de PARTE1.ESCOLA . Talvez o seu JCL precise dealgumas alterações, então preste atenção!

• Submeta o JOB e garanta que retornou MAXCC=0000

Page 17: Concurso Mainframe 2012-Parte 1

DESAFIO - 4

Ótimo, já temos os relatórios prontos. A instituição de ensino recebeutodos os relatórios, mas agora ela precisa organizar os relatórios em umúnico membro seguindo a mesma ordenação anterior, a nota do aluno.

• Edite o job JCL0003 e altere o seu ID.• Este JOB pega o conteúdo de OUTPUT1, OUTPUT2, OUTPUT3 e

OUTPUT4 e une tudo dentro de um único membro chamadoOUTPUT5

• Sua tarefa aqui será completar o comando do DFSORT, passando osparâmetros que faltam para o job JCL0003 executar com sucesso.Lembre-se que você pode editar o JCL caso falte alguma linha (efalta). Atenção!

• Submeta o JOB e garanta que retornou MAXCC=0000

Antes de continuar, edite o membro gerado no desafio 4 chamadoOUTPUT5

• Execute o comando CHANGE ALL IBM000# IBM(seu id)• Salve as alterações no membro

DESAFIO - 5

Com todos os dados em um único membro iremos descobrir quais os alunosobtiveram nota acima de 6. Utilize o job JCL0004 que vai criar um novodataset e informar os alunos aprovados.

• Edite o JCL0004 e altere o seu ID• Este JOB lê o conteúdo de OUTPUT5 e inclui em OUTPUT6 apenas

os alunos com nota superior ou igual a 7 (sete)• Sua tarefa aqui é completar os parâmetros do comando que faz a

inclusão seguindo determinada lógica, no nosso caso NOTA superiorou igual a 7.

• Submeta o JOB e garanta que retornou MAXCC=0000

Page 18: Concurso Mainframe 2012-Parte 1

DESAFIO - 6

Com esses dados já podemos realizar nosso trabalho comparando asclasses e cursos iremos descobrir o desempenho de todos na nossainstituição. Após algumas análises e cálculos com os dados recebidos,iremos enviar um relatório geral por curso. Utilize o job JCL0005 paracriar um relatório para cada curso! A identificação do curso se encontrana matrícula do aluno.

• Ex.: O0000009-XN (Onde o “X” indica o curso e “N” a classe)

• Abra o membro OUTPUT6 e localize a matrícula do aluno.• Edite o JCL0005 e altere o seu ID• Este JOB deve criar dois membros de saída CURSOA e CURSOB a

partir do membro de entrada OUTPUT6 identificando o CURSOatravés da matrícula do aluno.

• Sua tarefa aqui é completar os parâmetros dos comandos OUTFIL eINCLUDE para identificar o curso de cada aluno e salvá-los norespectivos membros. Lembre-se de verificar a coluna da matrículado aluno.

• Submeta o JOB e garanta que retornou MAXCC=0000

Muito bom! Com os relatórios entregues poderemos analisar odesempenho dos alunos nos cursos e também a qualidade do nosso ensino.Agora vamos criar um relatório mais elegante e mais complexo parapublicar no nosso site, mas fique tranquilo o único trabalho queprecisamos de você agora é que submeta um job!

Você ainda lembra como copiar os membros e datasets??

• Copie o membro 'BRASIL.PUBLIC.PARTE1.JCL(JCLF00X)' dentrodo seu data set PARTE1.JCL

• Edite-o alterando o seu id: CHANGE ALL IBM#### IBM(seu id)• Então submeta-o com o comando SUB• Este JOB cria um membro chamado REPORT, o qual será o nosso

relatório final. Verifique como ficou o relatório.

Page 19: Concurso Mainframe 2012-Parte 1

DESAFIO - 7

Preparamos uma surpresa para você =D

Vamos testar os seus conhecimentos em um pequeno desafio e depoisdisso a parte 1 estará terminada hahahahahaha que divertido.

Todas as informações que você precisa estão aqui:

• Copie o membro 'BRASIL.PUBLIC.PARTE1.QUIZ(QUIZP1)' para seudata set PARTE1.QUIZ. Escolha a opção 2 (Allocation Options), eespecifique os mesmos valores utilizados na criação do nosso primeirodata set (PARTE1.ESCOLA).

• Edite o membro QUIZP1 e responda as perguntas contidas.

Page 20: Concurso Mainframe 2012-Parte 1

CONCLUINDO O TRABALHO

• Copie o membro 'BRASIL.PUBLIC.PARTE1.QUIZ(CHECK001)' paradentro de PARTE1.QUIZ

• Execute o programa CHECK001

• Para executar digite: EX CHECK001 (na frente do nome do membro).

• Este programa vai verificar todos os desafios e corrigi-los. Se vocêconseguir 100% em todas as atividades voce poderá prosseguir, casocontrário, retorne ao desafio e verifique alguma pendência.

• Verifique a mensagem >>> PARTE 1 CONCLUIDA COM SUCESSO!<<< esta mensagem indica que voce concluiu com sucesso.

• Crie um dataset chamado 'IBM####.IBM####.PARTE1.FINAL' e copieos membros AULA2 e REPORT para este dataset.

• Encontre o membro e digite C. Ex.: C AULA2 e C REPORT (enter)Iremos copiar dois membros. Especifique onde será salvo. (To OtherData Set Name) e digite o nome do data set de destino:IBM####.PARTE1.FINAL

• Nos envie os membros.

• ISPF > 6 (Command) > Digite o comando:

• ===> XMIT N1.JUDGE1 DA('IBM####.IBM####.PARTE1.FINAL')

• Verifique a mensagem: Transmission occurred

Pronto!! Este foi o fim da Parte 1.

Page 21: Concurso Mainframe 2012-Parte 1

Nossa equipe irá verificar se seu programa executou corretamente. Casoseja um dos 250 primeiros a terminar corretamente você ganhará umacamiseta do Concurso Mainframe!

Você já fez muito! Agora sabe criar datasets e membros no mainframe,além de submeter JCLs e executar programas!

Existem muitas empresas como a nossa que usam o mainframe paraoperações em larga-escala. A atual geração de programadores mainframeestá gradualmente se aposentando, portanto grandes empresas estãobuscando profissionais com conhecimento em mainframe.

Parabéns pela sua conquista!Nos vemos na Parte 2!