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

Concurso Mainframe IBM 2011 - Brasil

Parte 1
Tempo para concluso aproximadamente 2 horas

Comeou o Concurso!
Nesta etapa, voc conhecer alguns
procedimentos usando o editor ISPF!
Algumas tarefas bsicas sero passadas e,
ao final, voc dever rodar um executvel!

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

CONHECENDO OS TIPOS DE DATASETS


Conforme visto na ambientao, um data set pode ser sequencial ou particionado. O que isto significa,
afinal de contas?
Dataset Sequencial:
Este tipo de dataset contm dados que so acessados em sequncia. Cada acesso depende do
outro e ocorre na ordem em que inserido, no estilo FIFO (first in first out primeiro a entrar, primeiro
a sair).
Dataset Particionado:
Este tipo de dataset pode conter vrios membros, como uma pasta pode contar vrias
subpastas. Cada membro pode conter uma JCL, uma biblioteca ou at mesmo um executvel. Cada
dado pode ser acessado separadamente.

Brincando com o Dataset Sequencial


Voc vai comear copiando um dataset sequencial j existente.
No menu principal do ISPF, entre na opo 3 (Utilities) e 3 (Copy/Move). Voc estar no menu
Move/Copy. Escolha a opo C (copy) e no campo Name digite 'ZOS.BR.PARTE1.HMR'.
Sua tela dever estar assim:

D Enter!

Agora, na prxima tela, digite no campo Name o caminho 'IBMxxxx.PARTE1.HMR' (substitua IBMxxxx
por seu user ID).

D Enter novamente!
Como o dataset 'IBMxxxx.PARTE1.HMR' no foi criado ainda, o sistema pergunta se voc deseja
aloc-lo e como isso ser feito. Digite a opo 1 para cri-lo conforme o dataset de origem. D Enter.

D F3 at retornar ao menu principal do ISPF.


Entre no menu 3 (Utilities) e 4 (Dslist).
No campo Dsname Level escreva IBMxxxx e pressione Enter para visualizar todos os datasets que
voc possui.
Digite e no espao na frente do dataset que voc criou (IBMxxxx.PARTE1.HMR) e d dois Enter para
abri-lo.

Voc visualizar um arquivo cheio de caracteres. No campo Command digite os seguintes comandos,
cada um seguido de um Enter:
CHANGE 1 / ALL
CHANGE 2 _ ALL
CHANGE 3 \ ALL
CHANGE 4 - ALL
CHANGE 5 | ALL
CHANGE 6 ( ALL
CHANGE 0 A ALL
CHANGE ? E ALL
CHANGE + O ALL
CHANGE > U ALL
CHANGE 9 P ALL
CHANGE } M ALL
CHANGE 8 S ALL

, nossa equipe bem humorada!


De qualquer forma, percebeu o que
aconteceu? Voc inseriu comandos
que substituiram um caracter pelo
outro. Este comando muito usado
para substituir caracteres e palavras
no editor ISPF.

A sintaxe do comando CHANGE:


CHANGE [palavra_antiga] [palavra_nova] ALL
ou
CHANGE [palavra_antiga] [palavra_nova]
O ALL indica que todas as palavras que baterem com a [palavra_antiga] que o editor encontrar devero
ser trocadas.

Ok, agora chega de brincar!


Vamos para tarefa seguinte, voc
precisa alocar um dataset particionado
e aprender um pouco mais sobre o
editor ISPF!

Alocando um Dataset Particionado


Para as prximas etapas, precisaremos criar um dataset particionado.
A partir do painel principal do ISPF, digite 3 (Utilities), d Enter e entre 2 (data set).
Voc ser levado para a tela de Data Set Utility. Na linha de opo (no topo), digite A (para alocar um
novo dataset). No campo Data Set Name, digite PARTE1.DATA e d Enter.

No se esquea! Data sets so nomeados com identificadores de 1 a 8 caracteres e separados por


pontos. Digitando sem aspas, o sistema assumir automaticamente que o primeiro identificador ser
seu ID. Desta forma, o dataset que estamos criando dever ficar como IBMxxxx.PARTE1.DATA.

Digitando 'IBMxxxx.PARTE1.DATA' ter o mesmo


Resultando que digitando apenas PARTE1.DATA.
Sem aspas simples, o sistema assume que seu ID
Ser o primeiro identificador, mesmo se voc
No digit-lo, enquanto que, entre aspas simples,
Voc precisar digit-lo manualmente.

Agora defina os seguintes atributos para o seu dataset:


Alocar em tracks (TRKS)
Definir a primary quantity como 1 e secondary quantity como 1.
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 32000. O data set name dever ser
LIBRARY (isso indica ao sistema que voc est criando uma PDSE Partitioned Data Set
Extended).
Qualquer campo no mencionado pode ser deixado em branco ou com o atributo default.
Sua tela dever estar assim:

D Enter!
V a mensagem no canto superior direito: Data set allocated? Voc criou um data set no
mainframe com sucesso!

Criando um membro para o Dataset

Temos um cadastro de produtos que as


lojas vendem em nosso site.
Precisamos prever quanto de lucro eles
tero com o estoque disponibilizado.

Voc criou um dataset, mas at o momento


no h nada dentro! Vamos copiar um
membro com informaes sobre o estoque
das lojas cadastradas.

Um membro pode ser qualquer coisa cdigo de programa, sada de programa, dados
binrios ou simplesmente texto.

D F3 at voltar ao menu principal do ISPF Primary Option Menu.


Selecione a opo 3 (Utilities)
Selecione a opo 3 (Move/Copy)

O dataset de onde vamos copiar os dados se chama ZOS.BR.PARTE1.DATA. Neste dataset, os dados
esto inseridos no prprio, ao invs de inseridos em um membro dentro do dataset.

No topo do painel, escolha a opo C (de cpia) no campo Option

Escreva 'ZOS.BR.PARTE1.DATA' no campo Name embaixo de From Other Partitioned


or Sequential Data Set

Como voc ir escrever o nome completo do dataset, necessrio colocar ele entre aspas simples.
Pressione Enter para ir ao prximo painel, onde voc ir indicar para onde o contedo deste dataset
dever ser copiado.
Embaixo da seo normeada To Other Partitioned or Sequential Data Set escreva o nome do
dataset que voc recm criou no campo Name.
Neste momento, no h membros em seu dataset. Se voc especificar um nome de membro que no
existe, o z/OS vai automaticamente criar um novo membro e copiar os dados para o mesmo.
Chamaremos o novo membro de PRODLIST.
Escreva o nome do membro para onde os dados sero copiados entre parnteses depois do nome do
dataset. Ficar assim: PARTE1.DATA(PRODLIST)

Lembra do que eu falei antes, sobre


colocar o nome do dataset entre aspas
simples? Neste caso, queremos copiar
o dataset para um dataset que comea com
o seu ID, portanto voc pode digitar tanto
'IBMxxxx.ZOS.PARTONE(PRODLIST)'
quanto
ZOS.PARTONE(PRODLIST)

Pressione Enter! Se tudo foi preenchido corretamente, dever aparecer uma mensagem no canto
superior direito da sua tela com os dizeres Data set copied.
D F3 at o menu Utility
Selecione a opo 4 (Dslist)
No campo Dsname Level escreva IBMxxxx e pressione Enter para visualizar todos os datasets que
voc possui.
Digite b no espao na frente do dataset que voc criou (IBMxxxx.PARTE1.DATA) para abri-lo.

Dentro do dataset IBMxxxx.PARTE1.DATA(PRODLIST) voc ver o novo membro, PRODLIST, que voc
copiou de nosso dataset sequencial. Digite e no espao frente do membro para editar.

Neste espao, voc tambm pode inserir b


para apenas visualizar o membro, ou d para
delet-lo. Voc pode deletar o membro e
copi-lo novamente, caso erre algo e queira
comear de novo.

Usando o editor do ISPF para manipular o texto


Agora voc est no editor de texto do ISPF text editor, vendo os dados do membro PRODLIST:

Alguns comandos podem ser digitados na linha de comando, no topo da tela (ou na parte inferior,
dependendo de como est configurado seu ISPF). O editor do ISPF mostra um aviso constatando que o
comando UNDO no est disponvel at voc habilitar o RECOVERY ON (the UNDO command is not
available until you change your edit profile using the command RECOVERY ON). Para se
livrar dessa mensagem, voc pode inserir tanto o comando RECOVERY ON quanto RESET e pressionar
Enter. O comando RECOVERY ON habilita o modo de RECOVERY, enquanto o comando RESET apenas
reseta a tela.

Digite i na coluna de comando, na primeira linha, conforme a tela apresentada


abaixo.
Aperte Enter.

Uma linha em branco foi criada embaixo do cabealho Loja do Mario.

Vamos inserir um novo produto, o livro Como Jogar Tenis, na linha criada. O codigo BK145, o preo
de custo R$ 4,00 e o preo de venda R$ 8,99. O estoque inicial ser de 25 unidades.

O formato de cada linha no membro deve seguir esta ordem:


Codigo_Produto
Nome_Produto
Preo_Custo Preo_Venda Qtd_Estoque
Preos esto representados em reais (R$).

Digite os detalhes do novo produto, seguindo a indentao das colunas na linha em


branco que voc criou.
Pressione Enter.
DICA: Para indentar, utilize a barra de espao at chegar na coluna desejada, ou seu membro poder
ficar desconfigurado. Para visualizar as colunas, digite COLS na primeira linha de asteriscos. Isso pode
ser de grande ajuda!

Seu dataset dever ficar assim:

A Super Esportes resolveu vender raquetes a um


preo competitivo, enquanto a Loja do Mario
resolveu remov-la de seu estoque.

Copie os itens SE123 at SE137 para o inicio da lista da Super Esportes e remova estes
itens da Loja do Mario.

Os cadastros devero ficar organizados conforme o exemplo abaixo:

A Loja do Mario agora vende artigos de Golf,


enquanto a Super Esportes removeu estes artigos
de seu estoque.

Vamos alterar o cadastro mais uma vez!

Copie os itens GF156 at GF912 para o final da Loja do Mario e remova estes itens da
Super Esportes.

Os dados devero ficar parecidos com os do exemplo abaixo:

Temos um novo vendedor disponibilizando


produtos no nosso site. Precisamos adicion-lo
em nosso cadastro!

Adicione no final do texto o vendedor abaixo e seu respectivo estoque.

--5 Livraria Agatha-BK046 / Recordes do Esporte

/ 10,00 / 14,99 / 67

BK145 / Como Jogar Tenis

/ 4,00

/ 9,99

/ 104

BK232 / Regras do Golf

/ 4,00

/ 7,99

/ 57

BK245 / Aumente Suas Vantagens

/ 4,00

/ 12,99 / 117

BK267 / Fundamentos do Futebol

/ 16,00 / 24,99 / 97

BK332 / Corrida de Esquilos Amadora / 1,00

Agora seu dataset dever ficar conforme a imagem abaixo:

Escreva SAVE na linha de comando


Seu dataset foi salvo!

/ 4,99

/ 206

Muito bom!
Agora o controle de estoque est completo!
Prximo passo rodar um executvel que
ir ler o contedo do nosso dataset!

Rodando um executavel
Vamos rodar um programa que leia o dataset e retorne um log com o valor total do estoque da Loja!
Para isso, ser necessrio copiar um job para o seu dataset e submet-lo.

INTRODUO AO JCL
Como voc faria para executar uma
tarefa designada a voc?
Eu dividiria ela em vrios passos, cada um
completando uma parte do todo.
s vezes posso precisar de diferentes
ferramentas para cada passo.

Job Control Language (JCL) como voc descreve esta informao ao z/OS, onde um job representa
uma tarefa.
Para cada job que voc submete, voc precisa falar ao z/OS onde encontrar a entrada (input)
apropriada, como processar a entrada (isto , qual programa ou quais programas sero rodados) e o
que fazer com o output resultante. Use o JCL para transmitir esta informao para o z/OS atravs de
uma srie de comandos conhecidos como JOB CONTROL STATEMENT (JCL).
Dentro de cada job, os comandos de controle so agrupagos em dois passos. Um passo consiste em
todo o controle necessrio para rodar um programa.
Se o job precisa rodar mais de um programa, o job pode conter um passo diferente para cada um dos
programas.

Job Control Statements


Cada job dever conter:
- Um JOB statement (ou declarao JOB) marcando o incio do job para designar um nome.
Esta declarao tambm usada para providenciar informaes administrativas, incluindo
segurana, contabilizao e identificao de informao. Cada job tem uma e apenas uma
declarao JOB.
- Pelo menos uma declarao EXEC (execute), marcando o incio de um passo, um nome
para o passo e o programa ou procedimento a ser executado. Voc pode adicionar vrios
parmetros para a declarao EXEC para customizar o modo como o programa ir executar e
as condies nas quais ele dever ser executado.

A maioria dos programas requerem dados de entrada ou geram dados de sada, e


geralmente contm:
- Uma ou mais declaraes DD (data definition), para identificar e descrever os dados de
entrada e sada a serem usados neste passo. Esta declarao pode ser usada para requerer
um dataset criado previamente, para definir um novo dataset ou para definir e especificar as
caractersticas do arquivo de sada, ou output.
Cada job control statement tem cinco campos:

1. Um campo identifier, que tipicamente duas barras (//). A linha inteira ser tratada
como comentrio se as barras duplas forem seguidas de um asterisco (//*).

2. Um campo name, identificando a declarao de forma que ela possa ser referida mais
tarde.

3. Um campo operation, identificando o tipo de declarao, i.e. JOB, EXEC, DD.


4. Um campo parameter
5. Qualquer informao seguindo o campo parameter tratada como comentrio e
ignorada.

Declaraes JCL podem ser escritas at a coluna 71. Voc pode estar se perguntando o porque deste
formato. Historicamente, o JCL era lido usando cartes perfurados de 80 colunas, sendo as ltimas 8
utilizadas para numerar as linhas.

O layout do JCL pode parecer um pouco confuso


quando voc se deparar com ele pela primeira vez.
Por sorte, o editor ISPF pode disponibilizar os texto
destacando a sintaxe, s digitar o comando
HILITE JCL (ou HILITE AUTO)
quando for editar um membro JCL.

Agora que voc j sabe copiar membros para o seu dataset, vamos fazer isso de novo, agora copiando
um membro que contm um JCL.

Para mais informaes sobre JCL, voc pode fazer uma busca na seo JCL Reference do documento
MVS encontrado no z/OS Information Center.
Copie o membro 'ZOS.BR.PARTE1.JCL(CONTAJCL)' para
'IBMxxxx.PARTE1.JCL(CONTAJCL)' se voc copiar este membro sem ter criado o dataset
ainda, o sistema ir perguntar se voc quer cri-lo e ainda lhe d a opo de criar com as
mesmas configuraes do dataset de origem. Escolha a opo 1 (tela abaixo). Fcil demais,
no?

Acesse este membro em modo de edio e faa as alteraes necessrias especificadas


nos comentrios do prprio arquivo.
Com as alteraes necessrias feitas, digite SUB na linha de comando e d enter. Isso ir
submeter o seu JCL.

Algo saiu errado!


Aparentemente temos um erro no nosso JOB.
Se os comandos no estiverem corretos,
ele nunca executar o nosso programa!

Vamos ver a sada deste JCL para descobrir o que deu errado e consertar.

USANDO SDSF
Nesta seo, voc pode perceber que ser necessrio ficar pulando de uma aplicao para outra. Um
exemplo o editor de texto com o JCL e o SDSF que ser usado para ler o log gerado. Pode ser
frustrante ficar entrando e saindo das aplicaes, portanto vamos ensinar como contornar isso.
Coloque o cursor na linha superior de sua tela. Pressionando F2 far com que sua tela se
divida exatamente onde se encontra o seu cursor, mostrando duas telas separadas por uma
linha horizontal pontilhada. Voc poder apertar F9 para trocar de tela.

incrvel a diferena que


isto pode fazer na hora
de executar as tarefas!

SDSF
System Display and Search Facility (SDSF) fornece a informao que voc precisa para
monitorar, gerenciar e controlar um sistema z/OS.
Voc pode usar o SDSF para visualizar o log do sistema e o status dos jobs que esto
rodando no sistema ou que terminaram de rodar, inclundo qualquer output destes jobs que
ainda no foram descartados.
Voc pode acessar o SDSF pelo painel principal do ISPF usando o comando SD.
No SDSF, use a opo DA para visualizar os jobs ativos, incluindo qualquer tarefa iniciada,
que so um tipo de job especial.
ST pode ser usado para visualizar o status dos jobs que esto ativos, dos que ainda sero
processados e daqueles que j completaram.
Uma vez que voc esteja vendo a lista de status dos jobs, no campo de comando possvel
definir um filtro para visualizar apenas os jobs que voc possui digitando OWNER IBMxxxx
Para reverter a ao 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 letras ABC.
Para remover este filtro, entre:
PREFIX *
possvel usar ambos os filtros owner e prefix ao mesmo tempo.
Estes filtros so teis pois mostram apenas os jobs com os quais voc ir querer trabalhar.
Porm, esteja ciente de que o SDSF lembra os filtros que voc est usando. Se voc no
est vendo o job que procura, remova os filtros para que todos os jobs sejam visveis.
Nos painis DA e ST voc apresentado com uma lista de jobs. Use as teclas F7 e F8 para
subir ou descer na lista.
Para visualizar mais informaes a respeito de um job em particular, possvel usar o
comando S ao lado do job, na coluna da esquerda, e pressionar Enter.
Isso ir disponibilizar alguns dados a respeito da execuo deste job.
Caso queira visualizar o output separadamente, voc pode digitar ? no lugar de S. Voc
poder ento usar S para selecionar o output individualmente.
Use a tecla PF3 para sair desta tela e retornar anterior.

Lembre-se, se voc esquecer os filtros


configurados, poder acabar com
uma lista em branco. O ISPF lembra
os filtros entre sesses, porm por padro
ele no os mostra, portanto cuidado para
no fazer uma pesquisa com o filtro configurado
errado. Para visualizar os filtros que voc est
usando, v para o menu Options no topo
da tela e escolha a opo 5 para visualiz-las.

Na lista de Status, filtre-a de forma a mostrar apenas os seus jobs. Isso ajuda a organizar as

coisas!

Agora que voc j est um pouco mais familiarizado


com o SDSF, procure pela sada com o nome do seu JCL.
Use o comando S na frente desta sada para visualizar.

O texto que voc est visualizando mostra o que aconteceu no sistema quando seu job foi submetido.
Atravs dele, possvel identificar onde tudo deu errado.

Voc encontrar mensagens de erro no final deste texto, sob o ttulo de STMT NO. MESSAGE. Preste
bem ateno, os erros que ele indica podem ter sido gerados todos pelo mesmo motivo.

Dica: Procure por exemplos de JCL pela internet e estude sua sintaxe. Voc poder achar isto bem til
para concluir esta tarefa!

Identifique o problema, faa a correo necessria no seu JCL e submeta-o novamente. Se estiver tudo
certo, aps submeter ele dever retornar o cdigo MAXCC = 0. Caso contrrio, volte e reveja os
comandos novamente. O erro poder ser gerado pelo JCL incorreto, porm se o seu arquivo PRODLIST
estiver errado, ele tambm retornar mensagem de erro do programa (provavelmente um MAXCC=3).
Leia e interprete o log do SDSF com calma.

Se tudo correr bem, seu log dever se parecer com isto!


Em stepname ele informa os passos que foram executados no job e, em RC (return code), o cdigo de
execuo - que identifica se este passo deu certo (00) ou errado (qualquer outro nmero ou FLUSH).

Ok! Agora que corrigiu o erro, o programa


executou e gerou um arquivo de sada com a
soma do valor do estoque!

V para o menu principal do ISPF e entre nos menus 3 (Utility) e 4 (Dslist), respectivamente.
No campo Dsname Level, digite IBMxxxx e d Enter.
Um novo dataset foi criado pelo programa executado, o 'IBMxxxx.IBMxxxx.P1'! Digite b frente do
dataset e d Enter para ver seu contedo.

Agora voc precisa enviar para nossa equipe o seu dataset!


Volte para o menu principal do ISPF e escolha a opo 6 command.
Entre o comando abaixo:

XMIT N1.JUDGE9 DA('IBMxxxx.IBMxxxx.P1')

Exemplo:

Depois de submeter este dataset, voc j pode comear a Parte 2! Baixe a documentao no site do
Concurso Mainframe IBM 2011 e boa sorte! =)

Nossa equipe ir verificar se seu programa


executou corretamente. Caso seja um dos
250 primeiros a terminar corretamente,
vou lhe enviar uma camiseta!

Voc j fez muito! Agora sabe criar datasets


E membros no mainframe, alm de submeter
JCLs e executar programas!
Voc j adquiriu experincias que
certamente o destacaro aos olhos
de contratadores!

Existem muitas empresas como a nossa que usam


o mainframe para operaes em larga-escala. A
atual gerao de programadores mainframe est
gradualmente se aposentando, portanto grandes
empresas esto buscando profissionais com
conhecimento em mainframe.

Parabns pela sua conquista!


Nos vemos na Parte 2!

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