Escolar Documentos
Profissional Documentos
Cultura Documentos
O JCL (Job Control Language) surgiu na década de 1960 foi introduzido nos
sistemas /360. Continua em utilização nas plataformas mainframe IBM para os
processamentos eletrônicos de dados (informações).
JCL é uma linguagem que possibilita que um programa se comunique com o
computador de grande porte mainframe da IBM.
Em um job podemos ter vários cartões EXEC, vários cartões DD, porém
apenas um cartão JOB.
2
• Nulo (//) Usado para indicar o final de cartões de um JCL.
• Comando PROC inicia um procedimento (procedure) catalogado ou
do fluxo de entrada, e indica valores defaults para os parâmetros
simbólicos.
• Comando PEND indica o final de um procedimento de fluxo de
entrada.
3. O Cartão JOB
3
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000002 // MSGCLASS=0,CLASS=5,PRTY=13,NOTIFY=TR76124,
000003 // MSGLEVEL=(1,1),TYPRUN=HOLD,COND=((3,LT),(12,GT)),
000004 // ADDRSPC=VIRT,BYTES=(500,CANCEL),CARDS=(500,DUMP),
000005 // PAGES=(400,WARNING),LINES=(300,CANCEL),
000006 //
PASSWORD=ABCDE,USER=MYNAME,RESTART=PROCNAME.STEPNAME
000007 //
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000002 //*
000004 //*
000007 //*
// MSGCLASS=0,
// MSGLEVEL=(1,1)
Estudaremos o nosso cartão JOB. No JCL existe uma regra geral onde os
comandos do JCL devem começar com os caracteres // nas colunas 1 e 2, exceto
para o comando delimitador.
4
O nome do JOB (jobname) deve sempre conter de 1 a 8 caracteres
alfanuméricos e nacionais (@, $ #) sendo que o primeiro caractere deve ser
alfabético ou nacional e identifica o JOB para que outros comandos de JCL ou o
sistema operacional.
Vejamos alguns nomes de JOB o jobname, marque C para certo e E para errado:
Muitas instalações indicam o nome do JOB a ser usado, e a nossa aqui não
foge a regra, assim sendo, o nosso nome de JOB é definido com oito caracteres
alfanumérico ou nacional sendo o primeiro um caractere alfa. Caso a regra não seja
empregada o JOB nem inicia.
5
Alguns valores de TIME que podem ser utilizados:
• TIME=1439
Essas mensagens podem ser observadas nas execuções dos JOB’s onde
encontramos // nas colunas 1 e 2 são os comandos do JCL, já nas colunas 1 a 3
encontramos *** como sendo dos comentários. Os comandos das procedures
aparecem como XX nas colunas 1 e 2 já os overrides mostram +/ nas colunas 1 e 2.
(BROWN, 1990, p.50). E nas saídas dos cartões SYSOUT’s, quando codificados no
JCL dos cartões DD.
Jcl
6
0 - Somente as mensagens do JCL.
1 - Todas as mensagens de JCL e do sistema operacional.
Vamos entender como o nosso cartão JOB é montado, observem que ele é
parametrizado. Em nossa instalação o cartão JOB ficaria assim.
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000002 //*
000004 //*
000007 //*
Vamos observar:
7
//_____________________________________________________________________
//_____________________________________________________________________
//_____________________________________________________________________
//__________________________________________________________________________
8
//_____________________________________________________________________
//___________________________________________________________________________
9
4. O Cartão EXEC
Cada passo (Step) do JOB começa com um comando EXEC que ou nomeia
um programa a ser executado (compilado, aplicativo, utilitário, etc) ou chama um
procedimento catalogado as procedures. Um procedimento catalogado pode conter
vários passos do JOB. Cada um começa com um comando EXEC que especifica o
programa ser executado. Pode haver até 255 comandos EXEC em cada JOB, cada
um deles com seus respectivos cartões DD que definem os arquivos a serem
usados nos passos (Step’s).
10
Aqui temos o EXEC da procedure UFFTP001:
11
4.1 O comando COND no cartão EXEC
Formato do COND:
COND=(código,operador,stepname)
COND=(código, operador,stepname,procstepname)
Operado Significado
r
GT Maior que (Greater than)
GE Maior ou igual que (Greater than or equal to)
EQ Igual a (Equal to)
NE Diferente (Not equal to)
LT Menor que (Less than)
LE Menor ou igual que (Less than or equal to)
Operadores do Parâmetro COND
12
Um exemplo:
13
O parâmetro EVEN especifica que o step onde foi codificado seja executado
mesmo que um step anterior tenha cancelado com erro. COND=EVEN Executa
sempre.
Já o ONLY especifica que o step onde foi codificado execute se algum step
anterior cancelar (abendar), ou seja, COND=ONLY Executa somente se um step
anterior abendar.
Vamos treinar:
2 - Step 2 roda somente se step 1 der 4 e o step 3 roda somente se o step 1 der 0.
14
//*
//STEP0001 EXEC PGM=PROG1,____________
//*
//STEP0002 EXEC PGM=PROG2,____________
//*
//STEP0003 EXEC PGM=PROG3,COND=(EVEN)
4 – O step 1 não deve rodar e o step 3 somente roda se der cond maior ou igual 104 no step 2.
5 - Step 2 roda somente se step 1 for menor ou igual a 4 e o step 3 roda somente se o step 2
for maior que 8.
5. O Cartão DD
15
O cartão DD (Definição de Dados) deve ser incluído após o cartão EXEC
com as especificações dos arquivos que são utilizados quando na execução de um
JOB. Nele são fornecidas as unidades de entrada ou saída, um volume especifico a
ser utilizado, as características dos arquivos e a sua disposição dentre outras
informações que devem ser definidas no comando DD do JCL.
Os seus ddname’s seguem as mesmas regras com relação ao stepname, ou
seja, eles devem ter de um a oito caracteres alfanuméricos ou nacionais, sendo o
primeiro caractere um alfa.
Seu formato:
//ddname DD parâmetros-opcionais
* (asterisco) serve para indicar os dados vêm logo após o comando DD.
DATA indica que os dados com // nas colunas 1 e 2 virão logo após o comando DD.
16
COMANDO DESCRIÇÃ0 DOS PARAMETROS DE PALAVRA-CHAVE
ACCODE Solicita um código de acesso para fitas ANSI
AFF Solicita separação de canal
AMP Fornece informação para arquivos VSAM
BURST Permite o uso de formulários não contínuos em impressora
CHARS Especifica um conjunto de caracteres para a impressora
CHKPT Solicita pontos de controle e fim de volume
COMPACT Compacta os arquivos enviados a uma estação de trabalho
COPIES Solicita cópias de um arquivo de saída
DCB Especifica os parâmetros de bloco de controle de dados
DDNAME Adia a definição de um arquivo
DEST Direciona a saída para um determinado destino
DISP Especifica a disposição do arquivo
DLM Especifica um delimitador alternativo
DSID Fornece a identificação de um arquivo em um disquete modelo 3540
DSN Denomina o arquivo
FCB Especifica formulário de imagem de controle para uma impressora
FLASH Especifica a superposição de formulário na impressora
FREE Libera o dispositivo de E/S quando o arquivo é fechado
HOLD Retém o arquivo de saída em uma fila
LABEL Fornece informação de rótulos e proteção de arquivos
MODIFY Modifica as linhas de impressão na impressora
MSVGP Solicita um periférico MSS (Mass Storage System)
OUTLIM Limita as linhas de saída impressa
OUTPUT Especifica o processamento de saída especial
PROTECT Solicita proteção de arquivos (senhas)
QNAME Dá acesso a mensagens recebidas
SEP Solicita separação de canal
SPACE Solicita o espaço em acesso direto a ser alocado
SPLIT Aloca espaço em um volume de acesso direto a ser sub-alocado
SUBALLOC Subaloca espaço em um volume de acesso direto
SUBSYS Especifica o subsistema a processar o arquivo
SYSOUT Direciona um arquivo por meio do fluxo de saída do sistema
TERM Envia ou recebe um arquivo de um terminal timesharing
UCS Envia um conjunto de caracteres para impressão
UNIT Especifica o dispositivo de E/S
VOL Especifica o volume e oferece informações sobre ele
17
O parâmetro DSN denomina o nome do arquivo (datasets), e esses
arquivos podem ser temporários ou não temporários. O arquivo temporário quando
nomeado são codificados dois ampersands (&&) antes do nome. Esses arquivos são
criados e removidos durante o processamento do JOB. Já os arquivos não
temporários podem ser salvos e reusados depois que o job termina. Esses arquivos
devem ter no máximo 44 caracteres (incluindo pontos) separados por grupos de até
8 caracteres que formam os high-level qualifier (HLQ) iniciando sempre com um
algarismo alfa. (SOARES, 2010, p.91)
18
O parâmetro DISP deve informar ao Sistema o status do arquivo antes do
início do step e também informar o que fazer com o arquivo ao término do step.
(BARBARA, 2011, p. 82)
Vejamos o formato:
19
5.3 DCB (DATA CONTROL BLOCK)
Sua sintaxe:
DCB=(sub-parâmetros[,sub-parâmetro]..)
Vejamos os sub-parâmetros:
o F – Fixo
o FB – Fixo Blocado
o V – Variável
o VB – Variável Blocado
o U – indefinido
20
• BLKSIZE – Block Size – especifica o tamanho, em bytes, de um bloco de
registro. O tamanho máximo é de 32760.
o PS - Seqüencial
o PO - Particionado
o VS - Vsam
o IS - Sequencial Indexado
o DA - Acesso direto
o U - Indefinido
Exemplo:
21
5.4 SPACE
Sintaxe:
SPACE=(CYL,(pri,sec,dir),RLSE,CONTIG,ROUND)
TRK,
blocos,
22
5.5 UNIT
Sintaxe:
VOLUME=(PRIVATE,RETAIN,vol-seq-number,volcount)
• PRIVATE – requer um volume específico
• RETAIN – mantém o volume montado na unidade ao término da leitura
• Vol-seq-number – identifica o volume, em um já existente dataset
muitivolume, onde o processamento do dataset deve iniciar.
23
Volcount – especifica o número de volume a ser utilizado, máximo de 255 o default é
5 . Com a codificação do parâmetro VOL=(,,,255) evita-se o abend 838.
• SER – VOLSER. Identificador (ID) do volume ou volumes.
• REF – Identifica ao sistema aonde obter o VOLSER de outro dataset ou de
um comando DD anterior.
6 DDs Especiais
6.1 STEPLIB
6.2 JOBLIB
24
Informa a localização de todos os programas definidos nos cartões EXEC de
todos os steps do JOB. O cartão JOBLIB deve ser codificado imediatamente após o
cartão JOB. Esse cartão JOBLIB é opcional.
Se no mesmo JOB são utilizados os cartões JOBLIB e STEPLIB, no step
onde é utilizado o STEPLIB o sistema ignora o JOBLIB, ou seja, o programa vai ser
procurado na STEPLIB e em seguida nas bibliotecas do sistema.
6.3 SYSIN
25
6.4 SYSOUT
26
6.5 IF/THEN/ELSE/ENDIF
Vejamos as sintaxes:
//ddname ELSE
//ddname ENDIF
Expressões relacionais
NOT ¬NOT
[step.]RC GT > [AND] ou &
[step.]ABEND LT < valor expressão 2 ... expressão n
[step.]RUN EQ = [OR] ou |
NE ¬=
GE >=
LE <=
Exemplo:
27
Outros exemplos:
IF com ELSE
28
Vejamos o resultado
29
6.7 Comandos de JES2
7. UTILITÁRIOS
OBJETIVO UTILITÁRIO
Alterar a organização de um dataset IEBGENER, IEBUPDTE, IEBPTPCH
Converter um dataset para sequencial IEBGENER, IEBUPTDTE
Copiar um arquivo particionado IEBCOPY, IEHMOVE
Copiar um arquivo sequencial IEBGENER, IEHMOVE, IEBUPDTE, IEBPTPCH
30
Criar um dataset seqüencial de saída IEBDG, IEBGENER, IEBPTPCH
Editar e copiar um arquivo sequencial IEBGENER, IEBPUPDTE, IEBPTPCH
Deletar, catalogar um dataset IEFBR14
Substituir membros selecionados de um PDSE IEBCOPY, IEBUPDTE
7.1 IEBGENER
31
Vejamos o JCL do utilitário IEBGENER
32
Resultado da execução com os cartões alterados na sua posição.
33
7.2 IEFBR14
34
Um exemplo de execução
35
7.3 TELGENER
Uma execução
36
Resultado da Execução
37
38
8. REFERÊNCIAS BIBLIOGRÁFICAS
BARBARA, Saulo; ABREU, Jorge; BORBA, Ana Lucia. JCL e Utilitários do Sistema
Operacional z/OS. Rio de Janeiro: Moderna, 2011.
39