Concurso Mainframe 2011 - Parte 3 - Atividades.pdf

Embed Size (px)

Citation preview

  • Concurso Mainframe IBM 2011 - BrasilParte 3 - Atividades

    Tempo para concluso de semanas a meses

    O uso do RDz no obrigatrio e no afetar a sua classificao. Se tiver dvidas sobre como instalar,

    configurar e trabalhar, consulte nossa documentao sobre Configurao do RDz. L esto todas as

    informaes necessrias para que possa trabalhar com a ferramenta da Rational para desenvolvedores

    em System z.

    Na Parte 3, voc ir rever alguns conceitosde JCL e aprender conceitos novos. Algumas atividades

    vo envolver COBOL, outras vo envolver DB2...

    ...e ao final, voc ter de resolver um desafio, aplicando tudo que viu no Concurso at agora!

    Para facilitar, voc poder optar por utilizar o RDz para concluir as atividades! Esta ferramenta

    nada mais que uma IDE para desenvolvedores que trabalham com aplicaes para o Mainframe.

    Consulte nossa documentao de Configurao da Parte 3 para instalar a ferramenta no seu

    computador!

  • PARTINDO PARA AS ATIVIDADES

    Acesse 'ZOS.BR.PARTE3(P3)'e apenas submeta-o

    Este JCL copiou para voc todos os datasets necessrios para proceder com as atividades. Verifique em

    sua DSLIST e ver que esto l. Se no encontr-los, experimente procurar na DSLIST por

    IBMxxxx.PARTE3. Isto retornar todos os datasets copiados!

    Comeou a Parte 3! Voc acredita que j chegou at aqui?Voc aprendeu muito na Parte 1 e Parte 2, portanto fique orgulhoso, j foi bem longe!

    Para continuar, ser necessrio que copie nossos datasetspara o seu usurio.

  • Fundamentos de Sintaxe e Execuo do JCL

    Como foi visto nas atividades anteriores do concurso, o JCL (Job Control Language) instrui o z/OS a

    rodar um batch job ou comear uma atividade.

    Voc pode identificar facilmente um JCL pelo // nas colunas 1 e 2.

    JCL deve ser escrito em caixa alta a no ser que o texto esteja entre aspas como nomes de arquivos

    UNIX.

    Todo Batch Job deve conter:

    Declarao JOB

    Declarao EXEC

    Declarao de JOB marca o incio do batch job e designa um nome para o mesmo.

    A declarao EXEC marca o incio de um passo (ou job step), designa um nome para o mesmo e

    identifica o programa ou procedimento a ser executado no passo. Todo batch job deve ter pelo menos

    uma declarao EXEC.

    Exemplo:

    //MEUJOB JOB

    // EXEC PGM=IEFBR14

    Exemplo com passo de nome PASSO1:

    //MEUJOB JOB

    //PASSO1 EXEC PGM=IEFBR14

    Exemplo de job com mltiplos passos:

    //MEUJOB JOB

    // PASSO1 EXEC PGM=IEFBR14

    //PASSO2 EXEC PGM=IEFBR14

    //PASSO3 EXEC PGM=IEFBR14

    Adicionalmente, a maioria dos batch jobs contm algo a mais:

    Declaraes DD (Data Definition)

    Usado para identificar e caracterizar dados de entrada e sada a serem usados em um passo.

    Exemplo:

    //MEUJOB JOB

    //PASSO1 EXEC PGM=SORT

    //SORTIN DD parametros

    //SORTOUT DD parametros

    //SYSIN DD parametros

    //SYSOUT DD parametros

  • Uma declarao DD deve ser precedida por um DD Name.

    O exemplo acima contm 4: SORTIN, SORTOUT, SYSIN, SYSOUT.

    Os parametros DD referenciam a recursos do z/OS como JES queue, nome de dataset, status de

    dataset e caminho Unix, alm de outros.

    Exemplo:

    PATH='/unixpath/filename'

    SYSOUT=*

    DSN=DATA.SET.NAME

    DISP=(start, end, abnormal_end)

    onde start = OLD, SHR, MOD ou NEW

    end = DELETE, KEEP, CATLG, UNCATLG ou PASS

    abnormal_end = DELETE, KEEP, CATLG, UNCATLG ou PASS

    O programa abrir estes parametros DD como input ou output.

    Edite 'IBMxxxx.PARTE3.JCL(J0001)'e observe os nomes dos passos e programas

    Submeta o job e, aps faz-lo, digite na linha de comando

    =sd;prefix;owner IBMxxxx; st

    Isso o levar at a lista de logs. Rpido, no ?

    Localize o job J0001 ao final da lista e digite ? no espao sua frente.

    Voc est visualizando os DD names gerados na execuo de seu JCL. Digite s frente de cada um

    para visualizar o output do JES2 separadamente.

    Acesse 'IBMxxxx.PARTE3.OUTPUT(A001)'e responda as questes 1 7

    Edite 'IBMxxxx.PARTE3.JCL(J0002)'e observe os nomes dos passos, programas e DD

    Names Submeta o job e, aps faz-lo, digite na linha de comando

    =sd;prefix;owner IBMxxxx; st

    De volta lista de logs, digite ? frente frente do J0002 e explore os outputs gerados.

    Acesse 'IBMxxxx.PARTE3.OUTPUT(A001)'e responda as questes 8 12

  • Funes e Caractersticas do JCL

    O JCL flexvel. Esta flexibilidade permite:

    1. Substituio de variveis

    2. Passar dados para um programa

    3. Alocao temporria de dataset

    4. Concatenao de datasets

    5. Capacidade de aceitar comandos IF/THEN/ELSE

    Vamos ver isso na prtica?

    Edite 'IBMxxxx.PARTE3.JCL(J0003)' e observe os nomes dos passos, programas e

    DD Names

    O J0003 executa repetidamente o IEBGENER, um utilitrio do sistema, usando um procedimento do JCL

    chamado PROC1, e ento executa o IEBGENER diretamente (sem o uso do procedimento PROC1).

    IEBGENER tipicamente usado para copiar dados do DD Name SYSUT1 (input) para o DD Name

    SYSUT2 (output).

    J0003 copia alguns registros para datasets temporrios, e ento os dados nestes datasets so passados

    para outros passos do job. Os datasets temporrios so combinados em um nico dataset temporrio.

    Este nico dataset copiado para um membro de um dataset particionado e permanente.

    Observao: datasets temporrios so identificados pelo DSN=&& em uma declarao DD. Datasets

    temporrios so descartados quando o job termina de executar.

    Com base no que voc viu no J0003, acesse 'IBMxxxx.PARTE3.OUTPUT(A002)' e

    responda as questes 1 4

    Submeta 'IBMxxxx.PARTE3.JCL(J0003)' e verifique o output no log de jobs do SDSF

    Um passo do JCL est como FLUSH graas a uma tentativa de escrever os dados temporrios em um

    arquivo unix no seu diretrio ('/z/ibmxxxx'). A substituio da varivel para o seu diretrio no unix est

    incorreto.

    Corrija seu JCL e submeta-o novamente.

    Como resultado de uma execuo correta, uma questo adicional foi inserida ao final do

    'IBMxxxx.PARTE3.OUTPUT(A002)'.

    Responda questo adicional gravada em 'IBMxxxx.PARTE3.OUTPUT(A002)'.

  • Fundamentos de Data Set no z/OS

    Enquanto o z/OS possui apenas uma regra para um dataset name, ele tambm pode ter vrios tipos de

    datasets. A diversidade nestes tipos de datasets permite aos desenvolvedores e arquitetos escolherem

    o tipo de dataset que melhor serve para uma situao especfica.

    Nomes de Datasets Regras

    1. Nomes de dataset no podem exceder 44 caracteres, inlcuindo todos os segmentos e pontos.

    2. Cada segmento (identificador, ou qualifier) deve ter de 1 a 8 caracteres. Cada segmento

    separado do outro por um ponto.

    3. Os segmentos podem ser HLQ (High Level Qualifier), MLQ (Middle Level Qualifier) e LLQ (Low

    Level Qualifier).

    Atributos de Datasets

    1. Record Length fixed / variable

    2. Record Format fixed / blocked

    3. Data Set Organization tipo de dataset

    4. Primary Disk Space Size area contgua no disco chamada de extenso

    5. Secondary Disk Space Size habilidade de realizar uma adio na extenso do disco quando a

    "Primary Space" atingir o seu limite

    Tipos de Datasets

    1. Sequencial assim como um arquivo unix, o contedo de um dataset sequencial so apenas

    registros de dados;

    2. Particionado ou Particionado/Extendido um dataset particionado (PDS) pode ser comparado a um

    sistema de arquivos hierrquico com apenas um subdiretrio. Este "diretrio" contm membros

    que por sua vez contm os registros de dados; um dataset particionado extendido (PDSE) existe

    em adio ao PDS;

    3. VSAM uma estrutura mais complexa para arquivamento de dados e registros. Existem quatro

    tipos de VSAM disponveis: KSDS, ESDS, RRDS e LDS.

    Novos datasets podem ser alocados interativamente pelo TSO/ISPF ou submetendo um job.

    Edite 'IBMxxxx.PARTE3.CNTL(DEFCL)' e altere todos os IBMxxxx para seu usurio

    Neste dataset aloca novos datasets sequenciais, particionados e VSAM, e ento copia alguns dados

    para cada um e lista os vrios atributos.

    Submeta 'IBMxxxx.PARTE3.JCL(J0004)' e garanta que retornou MAXCC=0 antes de

    executar o prximo passo

    Submeta 'IBMxxxx.PARTE3.JCL(J0005)' e garanta que retornou MAXCC=0 antes de

    executar o prximo passo

  • Submeta 'IBMxxxx.PARTE3.JCL(J0006)' e garanta que retornou MAXCC=0 antes de

    executar o prximo passo

    Submeta 'IBMxxxx.PARTE3.JCL(J0007)'

    Responda todas as perguntas localizadas em 'IBMxxxx.PARTE3.OUTPUT(A003)'

    Voc poder encontrar algumas respostas nos outputs gerados por estes jobs.

    Edite 'IBMxxxx.PARTE3.JCL(J0008)' , alterando os controles para garantir que ele

    delete todos os 6 datasets recentemente alocados na ltima atividade. Submeta-o.

    Os operandos CLUSTER E NONVSAM so mutualmente exclusivos. Precisam ser corretamente

    removidos para que os datasets sejam deletados. Todos os 6 datasets precisam ser deletados com

    sucesso para completar esta tarefa.

  • CONHECENDO O COBOL

    O z/OS capaz de processar a maioria das linguagens de programao mais populares, bem como as

    linguagens mais eficientes e confiveis durante os ltimos 50 anos. Todas as linguagens de

    programao tem suas qualidades distintas. No entanto, comum que programadores tenham

    preferncia pelas linguagens mais populares.

    COBOL (Common Business-Oriented Language) uma das linguagens mais antigas e famosas.

    Percebe-se isto atravs das suas milhares de linhas de cdigo escritas nestes ltimos 50 anos e que at

    hoje processam um grande volume de dados crticos todos os dias. Evoluiu junto com os avanos da

    tecnologia: hoje, as aplicaes em COBOL so muito eficientes, resultado de dcadas de

    aprimoramento da linguagem.

    O COBOL est principalmente presente em grandes empresas que lidam com uma quantidade

    significativa de dados crticos. Graas sua simplicidade, possvel detectar erros de programao de

    maneira fcil e intuitiva.

    Voc sabia que:

    Programas em COBOL processam 70% dos dados em todo o mundo?

    Rodam 30.000.000.000 transaes diariamente? (83% das transaes mundiais)

    Esto em produo em cerca de 98% das empresas Fortune 500?

    No mainframe, o COBOL precisa ser compilado para um cdigo em linguagem de mquina, o que

    chamamos de mdulo LOAD. Este mdulo pode executar novamente sem precisar ser compilado

    novamente. Uma nova compilao s necessria quando o cdigo sofre alguma mudana.

  • z/OS Enterprise COBOL

    Submeta 'IBMxxxx.PARTE3.JCL(J0011)'

    Este JCL compilou um simples "hello world", transformando o programa COBOL em um mdulo LOAD

    executvel.

    De agora em diante, vamos precisar constantemente ir ao TSO Ready para executar alguns comandos.

    O prximo procedimento eliminar qualquer passo preliminar desnecessrio para chegar ao prompt do

    TSO Ready:

    1. No ISPF, entre no menu 0 (Settings)

    2. Posicione o cursor em "Log/List" (canto superior esquerdo) e pressione enter

    3. Um menu drop-down aparecer com as opes:

    1. Log Data set Defaults

    2. List Data set Defaults

    4. Selecione (1) e altere a opo PROCESS para "2"

    5. Volte e selecione (2). Altere a opo PROCESS para "2"

    6. Aps terminar, saia com o F3

    Na linha de comando, digite =x para terminar o ISPF.

    Voc estar agora no prompt READY. Voc dever reconhec-lo pelos momentos em que precisou

    deslogar do mainframe. Este prompt permite a insero de comandos (alm de apenas LOGOFF) para a

    manipulao dos dados, programas e menus que vimos no ISPF.

    O prximo comando ir interativamente executar o programa CBL01, o programa em COBOL salvo em

    seu LOAD module.

    Aps verificar que o programa est funcionando (saber se ele imprimir a frase designada), digite ISPF

    para retornar interface de painel.

    Edite 'IBMxxxx.PARTE3.JCL(J0012)' e altere-o de forma a executar o mesmo mdulo

    LOAD criado pelo job J0011

    Conforme reza a lenda, todo primeiro programa escrito em uma linguagem nova deve imprimir o hello world.

    Do contrrio, poder trazer azar para o programador. Voc, caro competidor, no

    quer m sorte a esta altura do campeonato, quer?

  • O JCL requer um nome de programa para ser executado e a localizao do mdulo LOAD onde o

    programa est armazenado.

    Submeta 'IBMxxxx.PARTE3.JCL(J0012)' para provar que sua modificao est

    correta

    Se rodar com sucesso, "hello world" vai aparecer no output de J0012.

    O cdigo de 'IBMxxxx.PARTE3.SOURCE(CBL02)' vai aceitar entrada de dados e apresentar sada.

    recomendvel que olhe o cdigo fonte. Os cdigos apresentados iro ficar mais complexos medida

    que se avana nas atividades.

    Submeta 'IBMxxxx.PARTE3.JCL(J0013)'

    V para o prompt do TSO Ready usando o =x na linha de comando. No prompt, digite:

    call parte3.load(cbl02)

    Aps executar o programa, retorne ao menu ISPF.

  • Trabalhando com a Sintaxe do COBOL

    O cdigo de 'IBMxxxx.PARTE3.SOURCE(CBL03)' tem um erro de sintaxe. necessrio que o mesmo

    seja identificado e corrigido para que o programa rode corretamente.

    Submeta 'IBMxxxx.PARTE3.JCL(J0014)' e verifique o log desta execuo no SDSF.

    Voc poder identificar o erro atravs do output de compilao.

    Aps corrigir o erro no cdigo fonte, o passo de compilao (COMPILE) ir executar com sucesso. O

    passo de linkagem (LINK) ir falhar, no entanto.

    Embutido no cdigo fonte de CBL03 h uma chamada para um mdulo externo (CLRSCN). Esta

    chamada limpa a tela do TSO aps execuo. O ddname SYSLIB procurado no passo de linkagem

    para mdulos chamados.

    O mdulo CLRSCN est localizado em LVL0.LINKLIB. Quando LVL0.LINKLIB est concatenado com o

    ddname SYSLIB, o CLRSCN pode ser encontrado.

    Adicione o SYSLIB ddname no passo LINK em 'IBMxxxx.PARTE3.JCL(J0014)'

    conforme abaixo:

    //LINK.SYSLIB DD DSNAME=CEE.SCEELKED,DISP=SHR

    // DD DSNAME=LVL0.LINKLIB,DISP=SHR

    O resultado ser a compilao do CBL03 com sucesso.

    Do prompt TSO Ready, verifique o comportamento de seu CBL03. Digite:

    call parte3.load(cbl03)

    Digite enter para passar da tela de boas-vindas do zEnterprise Bank. Digite NO para terminar a execuo. Volte ao menu ISPF. Perguntas a serem respondidas vo surgir enquanto avana nas

    atividades. Familiaridade com as documentaes pode ser extremamente essencial para o sucesso.

    Para mais informaes em sintaxe de COBOL, consulte as duas documentaes abaixo:

    Enterprise COBOL for z/OS Programming Guide

    Enterprise COBOL for z/OS Language Reference

    Responda as perguntas localizadas em 'IBMxxxx.PARTE3.OUTPUT(A004)'

    As respostas para as perguntas so facilmente encontradas nos guias Programming Guide e Language

    Reference.

  • Submeta 'IBMxxxx.PARTE3.JCL(J0015)'

    V para o prompt do TSO Ready e rode o seu programa:

    call parte3.load(cbl04)

    CBL04 oferece 10 valores de saque diferentes. Quando solicitado um saque de $ 200,00, apenas $

    20,00 dispensado na tela. Corrija este erro de sintaxe no cdigo fonte de seu CBL04 para que seja

    retornado a quantidade correta.

    DICA: O output do passo de compilao contm uma dica sobre este problema. Clusulas PICTURE so

    importantes para esta tarefa.

    Submeta 'IBMxxxx.PARTE3.JCL(J0017)'

    A compilao de CBL06 falhar.

    O uso de pontos (.) muito importante em COBOL. Ele identifica:

    1. O final da palavra DIVISION

    2. O final da palavra SECTION

    3. Final de nomes de pargrafos na Area A

    4. Final de uma sentena

    5. Final de uma entrada

    6. ltima declarao em um pargrafo

    Modifique CBL06 para incluir os pontos mandatrios. Utilize o log de compilao para auxlio. Aps

    compilar com sucesso, v para o prompt do TSO Ready e digite:

    call parte3.load(cbl06)

    Aps execut-lo com sucesso, retorne ao menu ISPF.

    Submeta 'IBMxxxx.PARTE3.JCL(J0019)'

    V para o prompt do TSO Ready e digite:

    call parte3.load(cbl08)

    Observe o comportamento do COBOL quanto a campos numricos definidos. CBL08 adiciona 5 dgitos

    onde 00001 seria 1.

    Digite 00000 para terminar o programa.

  • z/OS Enterprise COBOL e DB2 API

    Agora vamos incrementar tudo que foi visto at aqui aprendendo os APIs.

    API significa Application Programming Interface e existe para todas as linguagens. Estes APIs permitem

    que o programa se comunique com bancos de dados relacionais, processos transacionais, etc.

    O comando EXEC SQL em cdigos fonte instruem o programa a se comunicar especificamente com um

    banco de dados relacional. Um programa com este API requer um "DB2 Plan" para executar com

    sucesso. Este "plano" criado usando um comando "BIND" do DB2. Este processo feito no JCL usado

    para compilar o programa.

    Bancos de dados relacionais so usados para gerenciar uma grande quantidade de dados que esto

    sendo acessados simultaneamente por diversas pessoas, browsers na internet, aparelhos e softwares.

    O DB2 o banco de dados relacional da IBM.

    SQL significa Structured Query Language uma linguagem comum usada por todos os bancos de dados relacionais. Uma vez que voc aprende SQL para manipular tabelas em um banco de dados

    especfico, no difcil mexer com outros bancos de dados relacionais.

    SQL dividido em quatro categorias:

    1) DML Data Manipulation Language

    1. Comandos SELECT, UPDATE, INSERT e DELETE

    2) DDL Data Definition Language

    1. Estruturas CREATE, ALTER e DROP

    3) DCL Data Control Language

    1. Privilgios GRANT e REVOKE

    4) TCL Transaction Control Language

    1. COMMIT e ROLLBACK

    Submeta 'IBMxxxx.PARTE3.JCL(J0023)'

    Este JCL cria uma tabela 'MOVIES'. Consulte o membro 'IBMxxxx.PARTE3.SQL(MOVTBL)' e observe o

    seguinte:

    1. Um '--' na coluna 1 e 2 marca a linha como um comentrio. Desta forma, o comando declarado

    nesta linha no ser executado;

    2. Declaraes sem '--' criam a tabela chamada MOVIES;

    3. Declaraes SQL terminam em ';'

  • Submeta 'IBMxxxx.PARTE3.JCL(J0024)'

    Este JCL popula a tabela MOVIES com mais dados.

    Altere 'IBMxxxx.PARTE3.SQL(MOVTBL)' conforme segue:

    1. Comente a declarao CREATE

    2. Descomente ambas as declaraes INSERT

    Submeta 'IBMxxxx.PARTE3.JCL(J0023)'

    Altere 'IBMxxxx.PARTE3.SQL(MOVTBL)' conforme segue:

    1. Comente as declaraes INSERT

    2. Descomente as declaraes SELECT

    Submeta 'IBMxxxx.PARTE3.JCL(J0023)'

    O output do J0023 que executou a declarao SELECT deveria incluir 2 registros de filmes na tabela

    MOVIES.

    Os paineis TSO/ISPF podem interativamente processar SQL. No entanto, a procedure DBPROCAG

    necessria para utilizar estes painis.

    Da linha de comando TSO/ISPF, digite:

    tso sysinfo

    Se PROC(SPFPROCE) estiver presente, ser necessrio que realize logoff e logue novamente, digitando

    (na tela de login do TSO a mesma tela usada para digitar sua senha) DBPROCAG sobre o SPFPROCE.

    Aps realizar este procedimento, voc estar com o DB2 habilitado. Na linha de comando, digite:

    D2

    Voc estar no menu interativo do DB2. Observe no canto superior direito os dizeres:

    DB2I PRIMARY OPTION MENU SSID: DBAG

    Caso o DBAG no esteja visvel no topo do painel, selecione a opo D (DB2I DEFAULTS) e digite DBAG

    no campo DB2 NAME.

    Pressione enter. Voc ir para um segundo painel. Pressione enter novamente e voc estar de volta ao

    menu do DB2. Agora o DBAG dever estar visvel como SSID no canto superior direito.

    Do DB2I Primary Option Menu, selecione a opo 1 (PROCESS SQL STATEMENTS USING SPUFI). SPUFI

  • significa SQL Processing Using File Input.

    Modifique os campos conforme segue:

    1 DATA SET NAME ... ===> PARTE3.SQL(MOVTBL)

    4 DATA SET NAME ===> DB2.OUT

    5 CHANGE DEFAULTS ===> NO

    Poder aparecer uma mensagem de WARNING na tela aps dar enter. Pressione enter para ignorar esta

    mensagem.

    O resultado o seu membro usado como entrada em modo de edio pelo editor do ISPF.

    Comente as declaraes CREATE e INSERT.

    Descomente diferentes declaraes de SELECT para observar o resultado. Pressionar F3 ir salvar as

    alteraes e retornar ao menu SPUFI. Pressione enter para proceder com o processamento das

    declaraes SQL. O resultado ser disposto na tela.

    No membro 'IBMxxxx.PARTE3.JCL(J0023)' h um template de INSERT para que dados sejam

    inseridos na tabela. Use o SPUFI para processar o PARTE3.JCL(J0023) para adicionar dois de seus

    filmes favoritos. Voc pode usar o comando SELECT para verificar se foram inseridos com sucesso.

    Submeta 'IBMxxxx.PARTE3.JCL(J0025)'

    Este JCL compila o programa CBL12 e cria um plano DB2 de mesmo nome, o CBL12.

    CBL12 ir:

    1. Requisitar um nmero de conta vlido na tabela DB2 CUSTOMER

    2. Comparar o nmero de conta inserido com a tabela DB2 CUSTOMER

    3. Terminar o programa quando o nmero da conta no estiver inserido na tabela

    4. Requisitar um PIN number

    5. Comparar o nmero PIN inserido com a tabela DB2 PIN usando o mesmo nmero de conta

    inserido

    6. Apresentar "CONTINUE" ou "DENIED" de acordo com o resultado de comparao

    V para o prompt do TSO Ready.

    Digite os seguintes comandos:

    alloc da(*) f(sysin) shr reuse

    alloc da(*) f(prtarea) shr reuse

    V para o menu ISPF e entre na opo D2.

    De volta ao menu DB2I Primary Option Menu, selecione a opo 6 (RUN) e preencha da seguinte

    maneira:

    1 DATA SET NAME ===> PARTE3.LOAD(CBL12)

  • Pressione enter.

    Seu programa comear a executar. Insira:

    Entre 400012340002 como nmero de conta.

    Entre 3104 como PIN.

    3104 o nmero de PIN correto para a conta informada.

    Execute o programa novamente e insira:

    Entre 400012340002 como nmero de conta.

    Entre 3140 como PIN.

    3140 o nmero de PIN incorreto para a conta informada.

  • DESAFIO FINAL

    Para completar esta etapa, ser necessrio rever alguns conceitos vistos na Parte 3 e, possivelmente,

    na Parte 2. Reveja alguns exerccios, releia alguns documentos, visite as pginas que indicamos. Elas

    podem fazer a diferena na hora de realizar o desafio final. Use o tempo que precisar e lembre-se, a

    colocao da Parte 3 ser feita com base na qualidade do resultado final, e no na rapidez que voc

    enviar.

    Agora que voc j sabe conceitos importantes de JCL, COBOL e DB2, hora de partir para o desafio final!

    Olhe para trs e veja o quanto voc j trilhou! Estamos orgulhosos que tenha chegado to longe.Agora falta pouco para voc completar a Parte 3 e

    concorrer ao prmio final!

  • A Fantstica Corrida

    Cenrio:

    O presidente de uma empresa de TI descobriu que, enquanto seus servidores lentos

    processavam o grande contedo de informaes, sobrava muito tempo ocioso para seus funcionrios,

    que estavam ficando desmotivados. Baseado nisto, resolveu investir em um esporte srio que pudesse

    unir a equipe durante as folgas do expediente e despertar neles o esprito competitivo. Desta situao

    nasceu a Corrida Profissional de Cadeiras de Escritrio. O esporte, que comeou como um pequeno

    evento que acontecia isoladamente em alguns setores, revelou-se um sucesso entre os funcionrios,

    que transformaram este em um evento srio, mensal e inter-setorial. Os 3 primeiros finalistas so

    premiados de acordo com a sua colocao, ganhando a medalha de ouro, prata ou bronze e 50, 25 ou

    10 pontos respectivamente. O profissional que acumular mais pontos ao final do ano ainda ganha um

    aumento de 5% em cima do seu salrio atual.

    Passado algum tempo, o presidente viu que no adiantava apenas investir nos seus funcionrios

    e decidiu finalmente trocar os servidores lentos por mainframes potentes. O servio melhorou, o

    trabalho dos funcionrios rendeu mais, porm a tradio da Corrida de Cadeiras de Escritrio

    permaneceu. Resolvendo organizar as informaes para conceder o aumento no final do ano, o

    presidente percebeu que precisava de um programa que fizesse o trabalho por ele. Ele chamou o

    programador mais experiente em desenvolvimento COBOL no Mainframe voc e solicitou o seguinte

    projeto:

    Escopo: Desenvolver um programa que possibilite o cadastro de funcionrios, possibilite o cadastro de

    corridas, com seus respectivos vencedores, e retorne dois relatrios: relatrio de corridas e

    vencedores, e relatrio que retorne apenas os funcionrios e seus pontos. Aps completar o cadastro

    das 12 corridas do ano, o programa tambm dever ter a opo de calcular o novo salrio do

    funcionrio vencedor com base no melhor pontuado do ano, informar na tela quem este funcionrio,

    sua pontao, seu antigo salrio e o novo salrio e alterar este valor na tabela. Aps calcular o novo

    salrio, todos os pontos concedidos durante o ano para todos os funcionrios devem ser zerados.

    Banco de Dados: Programa deve permitir o cadastro dos funcionrios e das corridas realizadas ms a

    ms. O programa dever ter a tabela FUNCIONARIOS com as colunas (MATRICULA, NOME,

    SOBRENOME, CPF, SETOR, SALARIO, PONTOS) e a tabela CORRIDAS com as colunas (CODIGO, ANO,

    MS, DIA, PRIMEIRO_LUGAR, SEGUNDO_LUGAR, TERCEIRO_LUGAR).

    Observao: O cadastro nas tabelas pode ser realizado chamando um JCL que possui estes dados a

    serem inseridos. Porm, conseguir fazer com que o presidente insira os dados dos funcionrios direto

    no programa durante a sua execuo, para popular as tabelas em tempo real, ser um diferencial.

    Linguagem: COBOL

    IDE: RDz

    Formato: Menu em formato texto com as opes a serem escolhidas.

  • Lembre-se de seguir os requisitos acima. A forma como o programa ir processar os inputs, as

    mensagens de erro, entre outros, fica a seu critrio.

    As referncias abaixo podem te ajudar muito!

    JCL Intro University of Georgia

    Enterprise COBOL for z/OS Programming Guide

    Enterprise COBOL for z/OS Language Reference

    DB2 for z/OS SQL Reference

    Ao final, voc dever enviar um e-mail para [email protected] com o ttulo CONCLUSO PARTE 3

    IBMxxxx e com os seguintes documentos anexos:

    1) Documentao completa explicando todo os processos realizados nesta at a concluso do

    trabalho.

    2) Membros e datasets usados no programa (cdigo fonte em COBOL e os JCLs). OBS: Devem estar

    em textos separados no bloco de notas. No precisa enviar os membros de perguntas e respostas,

    estes sero avaliados em seu prprio dataset.

    Assim que recebermos seu e-mail, seu acesso ao mainframe ser revogado. Para esta etapa, no

    necessrio que acerte todas as perguntas. Seu desempenho nas respostas, no entanto, poder ser

    usado como critrio de desempate se houver necessidade.

    Parabns! Voc realmente superou as expectativas! Por chegar at aqui, voc demonstrou uma grande

    capacidade de aprendizado!

    Vamos rever tudo o que voc fez? Voc agora no s sabe o conceito, como tambm sabe trabalhar

    com:

    1. z/OS e Menu ISPF

    2. Alocao de datasets e seus respectivos membros

    3. Edio de datasets e membros.

    4. Conceitos de JCL

    5. Criar e trabalhar com macros

    6. Visualizar logs no SDSF

    7. REXX no mainframe

    8. C no mainframe

    9. COBOL no mainframe

    10. DB2 no mainframe

    11. Resolver problemas de jobs e compilao

    12. Desenvolvimento no System z utilizando o RDz

  • Parabns pela sua conquista!

    Independentemente de terminar entre os trs primeiros colocados, voc agora tem um currculo rico e

    pode dizer com certeza que voc j possui uma boa experincia acerca dos tpicos citados acima. Estas

    informaes em seu currculo podem fazer a diferena na hora de uma contratao. Alm destas

    qualidades tcnicas, voc demonstrou qualidades profissionais que se destacam aos olhos dos

    entrevistadores.

    Obrigado por participar da 5a edio do Concurso Mainframe Brasil 2011!

    Boa sorte e nos vemos no dia da premiao! :)

  • Continue seus Estudos!

    Se estiver interessado em aprimorar os seus estudos, consulte todos os mateirias indicados durante o

    Concurso:

    Materiais para Estudo:

    z/OS v1.11 Information Center

    IBM LookAt z/OS Message Help

    ABCs of z/OS System Programming

    Introduction to the New Mainframe z/OS Basics

    JCL Intro University of Georgia

    Enterprise COBOL for z/OS Programming Guide

    Enterprise COBOL for z/OS Language Reference

    DB2 for z/OS SQL Reference

    Com dvidas ou querendo trocar ideias sobre mainframe? Entre em contato com a equipe:

    [email protected]