Você está na página 1de 20

GVS-CUR-000002 - Curso de JCL (Job Control Language)

GVS-CUR-000002 - CURSO DE JCL – JOB CONTROL LANGUAGE

Número do Documento <<Informe o código do documento>>

Revisão 001

Departamento Gerência de Operações de Negócios

Área <<Informe o nome da área responsável pelo processo>>

Situação Produção

Proprietário do documento Espedito Barreto Santos

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 1 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

1. 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.

CÓPIA NÃO CONTROLADA

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.

Os quatro campos são:

NOME

OPERAÇÃO

OPERANDOS

COMENTÁRIOS

Portanto a formato do cartão JCL é:

//NOME OPERAÇÃO OPERANDOS COMENTÁRIOS

4.1. Campo de NOME:

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)

4.2. Campo de OPERAÇÃO:

CÓPIA NÃO CONTROLADA

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

4.3. Campo de OPERANDOS:

Contém parâmetros separados por vírgulas. Não tem comprimento fixo nem colunas especificas.

Exemplos:

//TESTE1 JOB 3008,CLASS=A

//CONPCOO EXEC CONPC001

//IMPRIME DD SYSDUT=H

4.3.1. Parâmetros no campo da operandos:

O campo de operandos contém dois tipos de parâmetros:

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)

Exemplo: //FAPOISO3 JOB (fap, 100.10.10),CLASS=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.

CÓPIA NÃO CONTROLADA

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.

Exemplos: //CONOOSB1 JOB (CON.10,10)

//DECPCOO1 EXEC PGM=P339, COND=(O,NE)

Podemos também ter subparametros de palavra-chave, como no exemplo abaixo:

Exemplo: //RELA DD DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

4.3.2. Regras de parâmetros:

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.

5) Os parênteses podem ser omitidos se o subparametros consiste de um só valor.

6) Nada é preciso codificar se todos os parâmetros posicionais estão ausentes.

7) Os parametros de palavra chave podem ser codificados em qualquer ordem no campo de operando, mas depois
de quaisquer parametros posicionais.

4.3.3. Comentários em JCL:

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.

Exemplo: //* *********** JOB DE EXECUCAO MENSAL ***************************

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 5 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

4.4. Campo de COMENTÁRIOS:

É 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.

4.5. Ordem de Colocação dos Comandos de JCL:

Os comandos de JCL deverão se colocados na seguinte ordem:

a) Comando JOB..

b) Qualquer comando JOBLIB.

c) Quaisquer comandos JOBCAT e SYSCHK.

d) Quaisquer procedimentos locais ao serviço.

e) O primeiro comando EXEC.

f) Os comandos STEPCAT, STEPLIB ou outros comandos DD pertencentes ao step.

g) Quaisquer outros comandos EXEC e os comandos DD associados.

h) Qualquer comando nulo.

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.

 Os arquivos são concatenados na ordem dos comandos DD.

 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.

CÓPIA NÃO CONTROLADA

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

Um JOB é formado por três tipos de cartões principais:

 Cartão JOB - É quem informa, entre outras coisas o nome do 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

5.1. CARTÃO JOB

5.1.1.1. Parâmetros posicionais:

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.

Exemplo: //jobname JOB

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)

Ccusto = até 4 posições especifica o número de contabilização do analista.


Room = até 4 posições especifica a sala do analista.
CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 7 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

Time = tempo de execução


Lines = quantidade de linhas a serem impressas.
Cards = quantidade cartões a serem lidos.

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.

c) Program name (author)

É o nome do responsável pelo JOB (serviço). Caso seja descrito, deverá ser seguido do parâmetro account .

Exemplo: //jobname JOB (account),'Jose',...

5.1.1.2. Parâmetros de Palavra Chave

a) Class=

- Parâmetro não posicional ( palavra chave ). Define a classe de execução de um JOB ( A-Z, 0-9).

Exemplo: //jobname JOB (account),'author',CLASS=A

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.

Exemplo: //jobname JOB (account),’author’,CLASS=A,REGION=2048K

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.

Exemplo: //jobname JOB (account),'author',CLASS=A,REGION=2048K,MSGCLASS=X

d) Msglevel=(jcl,alocações)

CÓPIA NÃO CONTROLADA

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.

Exemplo: //jobname JOB (account),'author',CLASS=A,REGION=2048K,MSGCLASS=X,


// MSGLEVEL=(1,1)

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.

Exemplo: //jobname JOB (account),'author',CLASS=A,REGION=2048K,MSGCLASS=X,


// MSGLEVEL=(1,1),NOTIFY=userid

f) Typrun=

Parâmetro não posicional (palavra chave). Indica o tipo de processamento do JOB.

 TYPRUN=HOLD - Reter um serviço na fila de entrada para execução posterior. O serviço é


bloqueado até que o operador o libere.

 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.

 TYPRUN=SCAN - Verifica os erros de sintaxe do Jcl e suprime a execucao do servico.


Esta verificação não inclui checagem para arquivos duplicados nos volumes, espaço
insuficiente de memória ou tamanho de região insuficiente para os steps.

 TYPRUN=COPY - Apenas lista os cartões colocados depois do cartão job.

Exemplo: //jobname JOB (account),'author',CLASS=A,REGION=2048K,MSGCLASS=X,

CÓPIA NÃO CONTROLADA

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.

Formato: restart=stepname ou restart=stepname.procname

Exemplo: //jobname JOB (account),'author',CLASS=A,REGION=2048K,MSGCLASS=X,


// MSGLEVEL=(1,1),NOTIFY=userid ,TYPRUN=HOLD,RESTART=STEP01

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.

Exemplos: //jobname JOB TIME=(3,15) - minutos e segundos


//Jobname JOB (account),TIME=3 - minutos
//Jobname JOB ‘Manoel’,TIME=(,15) - segundos
//Jobname JOB TIME=1440 - minutos

Exemplo: //jobname JOB (account),'author',CLASS=A,REGION=2048K,MSGCLASS=X,


// MSGLEVEL=(1,1),NOTIFY=userid ,TYPRUN=HOLD,TIME=(,30)

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 10 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

5.2. CARTÃO EXEC (EXECUTE)

É o cartão que indica qual programa ou a procedure a ser utilizado pelo job.

Exemplos //execname EXEC PGM=PROG1,COND=(0,NE),REGION=1024K,TIME=10


//execname EXEC PROC=CONPC001
//execname EXEC CONPC003

 Execname = É campo utilizado para associarmos o nome do step ao cartão exec.


 PGM (nome do programa) = Especifica o programa a ser executado.
O programa deverá ser um membro de um arquivo particionado, chamado de biblioteca, em um volume de
acesso direto.
O programa pode estar guardado em uma Biblioteca do Sistema chamada SYS1.LINKLIB, em Bibliotecas
Particulares ou em Bibliotecas Temporarias.
Caso o programa nao seja encontrado na biblioteca o serviço terminará anormalmente com código de erro
S806.
 PROC (nome do procedimento) = Especifica um procedimento catalogado ou local ao serviço a ser usado.
Pode-se especificar a palavra chave PROC ou somente o nome do procedimento.

a) Cond=

Formato: COND=(NUMERO,COMPARACAO,step)

Cada número é comparado com o código de retorno do step especificado.


Se a comparação for verdadeira, o step será pulado, ou seja, não será executado.
Até oito testes podem ser codificados, neste caso devemos usar o formato abaixo:

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

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 11 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

Exemplos: //STEP1 EXEC PGM=UM


//STEP2 EXEC PGM=DOIS,COND=(4,LT,STEP1)

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.

Exemplo: Suponha que o step2 tenha retornado codigo 16.

//STEP3 EXEC PGM=TRES,COND=(12,GT.STEP2)

Leia o COND fazendo a você a pergunta:

12 é maior que o código de retorno do step2? (16)

A resposta é NAO. Entao o step é executado.

Podemos ver que o step3 só' nao será executado se o codigo de retorno do step2 for menor que 12.

Vejamos outro exemplo:

//STEP4 EXEC PGM=IEA,.COND=((12,GE),(8,EQ),(4,NE,STEP1))

Este step só não será executado se:

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.

Os parâmetros REGION, TIME também são usados no EXEC.

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.

5.3. CARTÃO DD (DATA DEFINITION)

CÓPIA NÃO CONTROLADA

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.

Formato: //ddname DD parâmetros opcionais


//ddname DD DSN=,LABEL=, DISP=,SPACE=,VOL=,UNIT=

a) Ddname (nome do cartão dd)

O nome deve seguir as mesmas regras especificadas para nomes de cartão.


O nome de um cartão DD é chamado de Ddname, e vem logo após ao cartão EXEC..
Cada DDname dentro de um step deve ser exclusivo; se existirem DDNAMES duplicados dentro de um step, serão
feitas alocações de periféricos e espaço para cada comando, mas todas as referências serão dirigidas ao primeiro
comando.
O nome do cartão (DDname) está associado ao nome em que o programador definiu em seu programa ou utilitário.

Exemplo: //STEP001 EXEC etc....


//ddname DD parâmetros do cartão dd

b) DSName (nome do 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 (@$#).

Exemplo: //STEP01 DD DSN=IDENT1.IDENT2.INDENT3


//STEP01 DD DSN=IDENT1.ARQ#01
//STEP01 DD DSN=IDENT1.EX@HERE.TEM$$
//STEP01 DD DSN=IDENT1.N210362

c) Label

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 13 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

É usado basicamente para especificar o posicionamento de um arquivo dentro de um cartucho.

Formato: //ddname DD LABEL=(número,tipo)

 número - indica qual posição o arquivo está sendo gravado no volume.


Pode ter de 1 a 4 dígitos, descrevendo a posição do arquivo relativa a outros arquivos no volume (o
primeiro arquivo é o número 1).
Se o número for omitido ou se for codificado zero, o sistema adota 1.
Este número é registrado no catálogo, e também será passado junto com o arquivo se o mesmo for um
arquivo passado.

 Tipo – especifica o tipo de rótulo do cartucho. Os tipos de rótulos podem ser:

SL - STAND LABEL - é o padrão IBM (é default)


NL - NO LABEL - sem LABEL

d) Disp (disposição do arquivo)

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.

Formato: //ddname DD DISP=(status inicial,fim-normal,fim-anormal)

 status inicial: especifica o status do arquivo no início do step.

NEW -> cria um arquivo novo. É default, portanto NEW é assumido se este subparametro for omitido.

OLD -> indica que o arquivo já existe e é de uso exclusivo.

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).

Formato: SPACE=(forma de alocação,(primária,secundária,pds),RLSE,CONTIG)

 Forma de Alocação = Pode ser :

TRK - espaço alocado em trilhas,

CYL - espaço alocado em cilindros,

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.

PDS(particionado) = É a quantidade de bloco, e está relacionado diretamente a quantidade de membros que


pode existir dentro desta biblioteca. É alocado em unidades de blocos de 256 bytes e cada bloco pode conter
cerca de cinco nomes de membros

RLSE = A codificação da palavra RLSE indica que toda área que não for utilizada pelo arquivo será liberada
para o sistema.

CÓPIA NÃO CONTROLADA

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.

Exemplos: //ENTRA01 DD SPACE=(TRK,(20,5,5),RLSE,CONTIG)

f) Dcb (Data Control Block)

DCB contém vários subparâmetros, vamos abordar 3 deles:


O parâmetro DCB indica quais as caracteríticas do arquivo a ser alocado, este parâmetro só pode ser utilizado para
alocação de arquivo em disco.

Formato: //ddname DD DCB=(RECFM,LRECL,BLKSIZE)

 RECFM: informa o formato do registro

O formato pode ser:

F de tamanho de registro fixo


FB registro fixo blocado
V tamanho de registro variável
VB variável blocado
U tamanho indefinido

Exemplo: //ddname DD DCB=(RECFM=FB,...)

 LRECL: informa o tamanho dos registros

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.

Exemplo: //ddname DD DCB=(RECFM=FB,LRECL= 80,…)

 BLKSIZE : informa a blocagem dos registros.

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.

CÓPIA NÃO CONTROLADA

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.

Exemplo: //ddname DD DCB=(RECFM=FB,LRECL= 80,BLKSIZE=3200)

Se RECFM=F BLKSIZE deve ser igual ao LRECL,


Se RECFM=FB BLKSIZE deve ser multiplo do LRECL,
Se RECFM=V BLKSIZE deve ser igual ao maximo LRECL,
Se RECFM=VB BLKSIZE deve ser pelo menos igual a um multiplo do maximo LRECL + 4.
Se RECFM=U BLKSIZE deve ser igual ao maximo LRECL.

Obs: O tamanho do bloco não deve exceder o tamanho da trilha de um volume de acesso direto.

g) Volume

É um parâmetro que identifica em qual volume o arquivo será gravado ou lido.


Pode ser em um DASD (disco) e TAPE (cartucho).

Formato: //ddname DD Vol=ser=IB0001

IB0001 - indica qual volume está sendo requisitado.

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.

// ddname DD UNIT=TAPE - aloca qualquer unidade de cartucho.

//ddname DD UNIT=3480 - aloca somente as unidades de cartuchos 3480.

//ddname DD UNIT=B840 - aloca só o endereço B840

//ddname DD UNIT=3390 - aloca qualquer disco modelo 3390

//ddname DD UNIT=SYSDA - aloca qualquer disco

i) Sysin

O cartão SYSIN serve para entrar com dados que serão lidos pelo programa, através do JCL.

O formato é:

CÓPIA NÃO CONTROLADA

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

É o parâmetro que indentifica a classe de saída para um data set.

Formato: //OUTPUT DD SYSOUT=C

exemplo: //sysprint dd sysout=*


//sysout dd sysout=*

Segue abaixo um exemplo do JCL de um JOB

//ALUNO@@1 JOB (1234,TCE),'TRAINING',CLASS=A,REGION=1024K,MSGCLASS=X,


// MSGLEVEL=(1,1),NOTIFY=GRUPO#99,TIME=10
//****************************************************
//* Este jcl faz delecao de arquivo
//****************************************************
//STEP001 EXEC PGM=IEFBR14,COND=(0,NE)
//ENTRADA DD DSN=TCE.ALUNO99.CADASTRO,DISP=(MOD,DELETE,DELETE)

6. PROGRAMAS UTILITÁRIOS DA IBM

A IBM fornece diversos programas utilitarios para os usuários. Descreveremos aqui quatro destes programas utilitarios:

IEBGENER - copia arquivos sequenciais

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 18 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

IEBCOPY - copia e faz compress de arquivos particionados


IEHLIST - lista informações de volume de acesso direto
IEHPROGM - faz manutenção de arquivos

Todos os programas utilitários são executados pelos mesmos cartões gerais de JCL. Abaixo temos o seu formato:

Cartão Descriminação

//nome-do-step EXEC PGM=programa cartão que chama a programa


//SYSPRINT DD SYSOUT=A imprime as msgs do utilitário
//SYSUT1 DD ........ descreve um arquivo de entrada
//SYSUT2 DD ......... descreve um arquivo de saida
//SYSIN DD * descreve a arquivo de controle
<comandos de controle> cartões de controle
/* delimitador

O LRECL das mensagens do utilitário (SYSPRINT) é 121.

Os cartões SYSUT1 ou SYSUT2 podem não ser necessários em alguns casos.

Os comandos de controle devem ser codificados nas colunas 2 a 71.

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

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 19 de 20
523644260.doc
GVS-CUR-000002 - Curso de JCL (Job Control Language)

7.1 REFERÊNCIAS

Tipo de Documento Cód. do Documento Link (Server) Nome do Documento


Manual de JCL OS/390 V2R10.0 Biblioteca IBM MVS JCL REFERENCE

7.2 SUMÁRIO DE ATUALIZAÇÕES

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

CÓPIA NÃO CONTROLADA

NOME DO ARQUIVO
Página 20 de 20
523644260.doc

Você também pode gostar