Escolar Documentos
Profissional Documentos
Cultura Documentos
Revisão 001
Situação Produção
NOME DO ARQUIVO
Página 1 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
É uma linguagem que possibilita que o programa se comunique com a máquina. (PGM <= JCL => Hardware).
2. O que é um JOB?
Quando um programa é submetido para execução no sistema, ele passa a ser chamado de JOB. A linguagem JCL é
usada para construir um JOB. Então é no JOB que estão as informações necessárias para que os dados sejam
processados.
Pode ter um ou mais steps (passos).
3. Cartão de JCL
Antigamente, a entrada de dados e o JCL eram feitos utilizando-se cartões perfurados. O cartão de perfuração mais
utilizado era o que continha 80 colunas. Cada cartão é uma linha de comando.
NOME DO ARQUIVO
Página 2 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
4. Regras de codificação
Todo comando de JCL (exceto o comando /*) começa com os caracteres // nas colunas 1 e 2.
A partir da coluna 3 existem quatro campos no cartão de JCL. Nem sempre os quatro campos são obrigatórios. Cada
campo é separado do outro por um ou mais espaços em branco. Os campos devem ser codificados nas colunas 3 a 71.
Caso haja a necessidade de se continuar um cartão de JCL, este deve ser feito colocando-se uma vírgula após o último
subparâmetro e antes da coluna 72. Sua continuação deve ocorrer no próximo cartão entre as colunas 5 e 16.
NOME
OPERAÇÃO
OPERANDOS
COMENTÁRIOS
Identifica o comando para que outros comandos ou blocos de controle do sistema possam se referir a ele.
Pode ser opcional.
Pode ter de 1 a 8 caracteres e pode conter qualquer caractere alfanumérico (A-Z, 0-9) ou nacional (@ $ #).
Porém, o primeiro caractere deverá estar na coluna 3 e deverá ser alfabético (A-Z) ou nacional.
Exemplos:
Correto Incorreto
//N //+CONTA
(primeiro caractere não é A-Z, @,$,#)
//TESTE#1 //CREDCAIXA
(mais de oito caracteres)
//CONO3SBH //BACKUP-8
(o traço não é permitido)
NOME DO ARQUIVO
Página 3 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
Especifica o tipo de comando JOB, EXEC, DD. PROC, PEND ou um comando do operador.
Exemplos:
//DEC04B01 JOB
//CONPC003 EXEC
//SAIDA DD
Contém parâmetros separados por vírgulas. Não tem comprimento fixo nem colunas especificas.
Exemplos:
//IMPRIME DD SYSDUT=H
Parâmetro Posicional, caracterizado por sua posição no campo de operandos relativa aos outros Parâmetros.
Parâmetro de Palavra Chave, que não tem posição específica relativa aos outros do seu tipo, mas é caracterizado por
uma palavra chave seguido por um sinal de igual e informação variável.
O exemplo seguinte contém tanto um parâmetro posicional (fap,100.10.10) quanto um parâmetro de palavra chave
(classe=A)
Um parâmetro posicional ou a informação variável num parâmetro de palavra chave as vezes é uma lista de
subparametros. Uma lista como esta poderá compreender tanto subparametros posicionais como os de palavra chave
que deverão seguir as mesmas regras e restrições para os subparametros posicionais e de palavra chave.
Uma lista de subparametros deverá ser incluída entre parênteses a não ser que se reduza a um só subparâmetros.
NOME DO ARQUIVO
Página 4 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
Abaixo temos um exemplo com subparametros posicionais dentro de um parâmetro posicional e outro exemplo no
parâmetro de palavra-chave.
1) Tanto os parâmetros posicionais quanto os de palavra-chave devem ser separados por vírgulas. Não devem
conter e nem ser separados por espaço.
2) Parâmetros posicionais devem ser codificados na ordem especificada antes de quaisquer parâmetros de palavra
chave no campo de operandos.
3) A ausência de parâmetro posicional é indicada pela codificação de uma vírgula no seu lugar.
4) Se o parâmetro posicional ausente for o ultimo, ou se todos os parâmetros posicionais posteriores também
estiverem ausentes, as vírgulas subseqüentes para substitui-los não precisam ser codificada.
7) Os parametros de palavra chave podem ser codificados em qualquer ordem no campo de operando, mas depois
de quaisquer parametros posicionais.
O comando comentários contém //* nas colunas de 1 a 3, com o resto das colunas contendo quaisquer comentários que
se queira.
Estes podem ser colocados antes ou depois de quaisquer comandos de JCL que seguem o comando job para ajudar a
documentação do JCL.
O sistema lista os comentários, mas os ignora ao interpretar o JCL.
NOME DO ARQUIVO
Página 5 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
É opcional.
Deverá ser separado do campo de operandos por pelo menos um espaço.
Só poderá ser especificado se existir um campo de operandos.
Este campo pode ser estendido até a coluna 80.
a) Comando JOB..
Alem dessas regras, os seguintes itens na colocação dos comandos JCL devem ser considerados:
.Se os comandos DD de um step têm o mesmo DDNAME, usa-se a primeiro comando e ignoram-se os
comandos DD subseqüentes que tenham o mesmo nome nesse step.
Comandos DD múltiplos com sysout para a mesma classe de saída são impressos na ordem desses comandos
DD.
Os comandos DD sobrepondo-se a procedimentos catalogados devem estar na mesma ordem dos comandos
dentro do procedimento. Comandos DD adicionais devem seguir-se aos comandos que se sobrepõe.
Os comandos EXEC ou DD com parametros que fazem referencia a uma ocorrência anterior (referback)
devem seguir o comando contendo a ocorrência referida.
. Os comandos DD que descrevem um arquivo VSAM devem definir a área de índice, a área primária e a área
de transbordo, nessa ardem.
NOME DO ARQUIVO
Página 6 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
. O comando PROC deve ser o primeiro comando num procedimento catalogado ou local ao serviço.
. O comando PEND deve seguir-se ao ultimo comando JCL num procedimento local ao serviço.
. O comando comentário pode ser colocado antes ou depois de qualquer comando JCL depois do comando
IOB.
. Os comandos do operador podem ser colocados antes de comandos JOB, EXEC, NULO ou qualquer outro
comando do operador.
5. JOB
Cartão EXEC - É quem informa, entre outras coisas o nome do programa que será executado, e é o
primeiro cartão de uma procedure.
Cartão DD - É quem informa entre outras coisas o nome dos data sets/arquivos que serão
lidos/gravados o qual descreve um aquivo a ser utilizado no programa(step).
Em um job podemos ter vários cartões EXEC (até 255) , vários cartões DD, porém apenas um cartão JOB
a) Jobname
É posicional, e vem precedido do nome JOB, entre o jobname o JOB existe um campo em branco.
Jobname tem até 8 posições e especifica o nome do job. Deve seguir as regras para o campo NOME.
b) Account
É posicional, e deve vir sempre entre parênteses, e tem por finalidade fornecer informações de contabilização e outros
parâmetros exigidos pela instalação.
Exemplo: //jobnane JOB (Centro de Custo, room, time, lines, cards, forms, copies, log, linect)
NOME DO ARQUIVO
Página 7 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
Todos os subparametros do account também são posicionais. Se em alguma informação existir algum caracter não
alfanumérico, ela deverá vir entre apóstofres.
É o nome do responsável pelo JOB (serviço). Caso seja descrito, deverá ser seguido do parâmetro account .
a) Class=
- Parâmetro não posicional ( palavra chave ). Define a classe de execução de um JOB ( A-Z, 0-9).
b) Region=
- Parâmetro não posicional ( palavra chave ). Informa a quantidade de memória real a ser alocada para o JOB. É sempre
múltiplo de 512K.
c) Msgclass=
Parâmetro não posicional (palavra chave). Indica qual será a classe de saída das mensagens do JOB. Pode ser codificado
de A-Z e de 0-9.
d) Msglevel=(jcl,alocações)
NOME DO ARQUIVO
Página 8 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
Parâmetro não posicional (palavra chave). Usado para estabelecer o nível de detalhes das mensagens do job.
jcl
0 – só será impresso o cartão JOB (serão impressas mensagens de JCL e erro se houver abend)
1 – será impresso todo o JCL do fluxo de entrada e todo o JCL de quaisquer dos procedimentos catalogados
que foram chamados incluindo a representação interna dos comandos depois da substituição de
parâmetros simbólicos.
2 – será impresso somente o JCL do fluxo de entrada.
Alocações
0 – não será impresso mensagens de alocações, a menos que o serviço termine anormalmente.
1 – será impresso todas as mensagens de alocações.
e) Notify=
Parâmetro não posicional (palavra chave). Indica para qual userid será enviada a mensagem de término do JOB.
f) Typrun=
TYPRUN=JCLHOLD - Também retém a serviço na fila, porém não interpreta o jcl. O serviço é
bloqueado até que o operador o libere.
NOME DO ARQUIVO
Página 9 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
// MSGLEVEL=(1,1),NOTIFY=userid ,TYPRUN=HOLD
g) Restart=
Parâmetro não posicional (palavra chave). Indica a partir de que step, caso tenha terminado com erro, o job deverá ser
recomeçado.
h) Time=
Parâmetro não posicional (palavra chave). Tempo máximo que o JOB pode usar a CPU. É informado em minutos e
segundos. Quando for informado 1440 (24 horas), o JOB nunca cancelará por tempo de uso de CPU. Se o limite de
CPU for excedido, o serviço será terminado com o código de erro S322. Este tempo não inclui tempo de espera, tempo
gasto de entrada/saída, etc. É apenas o tempo de CPU.
NOME DO ARQUIVO
Página 10 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
É o cartão que indica qual programa ou a procedure a ser utilizado pelo job.
a) Cond=
Formato: COND=(NUMERO,COMPARACAO,step)
COND=((n.o,comp.,step), (n.o,comp.,step))
Quando usamos mais de uma comparação, basta que uma delas seja satisfeita para que o step seja pulado.
Quando não especificamos o step a ser usado para comparação o teste será feito com todos os steps anteriores.
As comparações são:
EQ igual
NE diferente
GT maior que
GE maior ou igual
LT menor que
LE menor ou igual
NOME DO ARQUIVO
Página 11 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
Neste exemplo o step2 será pulado, ou seja, não será executado se o 4 for menor que o codigo de retorno do stepl, ou
seja, o step2 só será executado se o código de retorno do stepl for entre 0 e 4.
Um método prático de saber se um step será executado ou não, é ler o parametro COND de forma interrogativa, ou seja,
fazendo uma pergunta para você mesmo. Se sua resposta for SIM o step não será executado. O step só será executado se
sua resposta for NAO.
Podemos ver que o step3 só' nao será executado se o codigo de retorno do step2 for menor que 12.
12 for maior ou igual a qualquer código de retorno ou 8 for igual a qualquer código de retorno anterior, ou 4 for
diferente do código de retorno do stepl.
Quando codificado no comando EXEC o limite de tempo e a região de memória serve apenas para a step.
Quando codificado no comando JOB estabelece limite de tempo e a região da menória para o servíço inteiro.
NOME DO ARQUIVO
Página 12 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
É o cartão que indica quais operações que o programa pretende realizar no step..
Um comando DD deve ser incluido depois do comando EXEC para cada arquivo usado no step.
O número máximo de comandos DD por step é 1635.
Uma grande quantidade de informações deve ser fornecida para se ler ou escrever um arquivo.
É o nome do arquivo que pode ser de input ou output do programa que está sendo referenciado no cartão EXEC.
O nome do arquivo pode conter até 44 posições e tem que ser separados a cada 8 dígitos por um ponto.
Nele podem conter caracteres alfabéticos e numéricos e especiais (@$#).
c) Label
NOME DO ARQUIVO
Página 13 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
O parâmetro DISP descreve o estado atual do arquivo (novo, antigo, ou a ser modificado) e orienta a sua disposição
para o sistema (passar, guardar, catalogar, apagar) no final do step ou quando o step tem um fim anormal.
NEW -> cria um arquivo novo. É default, portanto NEW é assumido se este subparametro for omitido.
SHR -> indica que o arquivo já existe e permite compartilhá-lo para leitura
MOD -> modifica um arquivo seqüencial, quando se abre o arquivo para saída, MOD posiciona o
mecanismo de ler/escrever para depois do último registro no arquivo, fornecendo um meio conveniente de se
adicionar dados a arquivos seqüenciais. Se arquivo ainda não existe, o sistema muda o MOD para NEW. Se o
parâmetro VOL não for codificado, o sistema verifica se o arquivo foi passado ou se está no catálogo; não
encontrando, ele assume que o arquivo já existe e o cria como se NEW tivesse sido codificado.
fim normal – indica a disposição do arquivo quando este for fechado ou quando o serviço termina
normalmente.
KEEP -> indica que o arquivo é para ser mantido. Mantém arquivos não temporários.
CATLG > indica que o arquivo será catalogado. Se codificar para arquivos temporários o sistema mudará
para PASS.
UNCATLG -> indica que o arquivo será descatalogado. Tira o arquivo do catalogo.
CÓPIA NÃO CONTROLADA
NOME DO ARQUIVO
Página 14 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
DELETE -> indica que o arquivo será deletado (apagado). Libera o espaço em um volume de acesso direto.
Se for um arquivo catalogado ele será também descatalogado.
PASS -> passa o arquivo para o steps posteriores e cada step pode usar o arquivo uma vez. A disposição
final é deixada a um step posterior. A final do job este arquivo é apagado.
fim-anormal – As disposições anormais, que tem efeito somente se o step tem um final anormal, são as
mesmas que as disposições normais, com exceção de PASS que não é permitido.
Exemplos:
//DDNAME DD DISP=(NEW,CATLG,DELETE)
Esta sendo criado um novo arquivo. Se o step terminar normal, o arquivo será catalogado, senão, deletado.
//DDNAME DD DISP=(OLD,KEEP,KEEP)
Esta sendo lido um arquivo já existente. Se o step terminar normal ou anormal, o arquivo será mantido.
//DDNAME DD DISP=SHR
Indica que o arquivo pode ser compartilhado com outros jobs.
e) Space
O parâmetro SPACE indica quais as características do arquivo a ser alocado, este parametro só pode ser utilizado para
alocação de arquivo em uma unidade de acesso direto (disco).
Primária = É a quantidade de espaço que esta sendo alocado ou reservado para o arquivo especificado. É
sempre alocado em unico volume.
Secundária = É a quantidade de espaço que seu arquivo pode expandir. Pode crescer até 15 vezes do tamanho
especificado para a área secundária.
RLSE = A codificação da palavra RLSE indica que toda área que não for utilizada pelo arquivo será liberada
para o sistema.
NOME DO ARQUIVO
Página 15 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
CONTIG = A codificação da palavra CONTIG indica ao sistema que a área que será alocada tem que ser uma
área continua, se não ele não aloca o arquivo.
Se o formato do registro for fixo (F), todos os registros tem o mesmo tamanho.
Se o formato do registro for variável (V), o LRECL informa o tamanho do maior registro mais 4.
Estes 4 registros a mais são de controle.
Obs: Quando os registros são gravados, fica um espaço entre eles (GAP).
Para não haver desperdício de espaço, criamos os registros em blocos, assim não fica espaço entre
registros, só entre blocos.
NOME DO ARQUIVO
Página 16 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
A outra vantagem, é que os registros blocados são lidos todos de uma só vez, aumentando a velocidade
de processamento.
Obs: O tamanho do bloco não deve exceder o tamanho da trilha de um volume de acesso direto.
g) Volume
h) Unit
O parâmetro UNIT, informa ao sistema uma unidade específica, um certo tipo ou grupo de devices a ser utilizado pelo
step.
i) Sysin
O cartão SYSIN serve para entrar com dados que serão lidos pelo programa, através do JCL.
O formato é:
NOME DO ARQUIVO
Página 17 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
//SYSIN DD *
sort fields=(1,50,ch,a)
/*
ou
//SYSIN DD DATA
José Maria do Divino Espirito Santo Amem
/*
j) Sysout
A IBM fornece diversos programas utilitarios para os usuários. Descreveremos aqui quatro destes programas utilitarios:
NOME DO ARQUIVO
Página 18 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
Todos os programas utilitários são executados pelos mesmos cartões gerais de JCL. Abaixo temos o seu formato:
Cartão Descriminação
Para dar continuação a um comando de controle, interrompa o comando em uma virgula, codifique um caractere que
não seja um espaço na coluna 72 e continue o comando na coluna 16 da linha seguinte.
7 INFORMAÇÕES GERAIS
NOME DO ARQUIVO
Página 19 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)
7.1 REFERÊNCIAS
Revisão Autor (es) Revisor (es) Aprovador (es) Data Local armazenamento da
aprovação
001 Espedito Barreto Thalvaner Espedito Barreto 17/01/2008 Área da Qualidade
Dolabella
Descrição da revisão.
Versão inicial do documento.
FIM DO DOCUMENTO
NOME DO ARQUIVO
Página 20 de 20
523644260.doc