Você está na página 1de 51

Índice

Índice_______________________________________________________________ 1
1 Executando Tarefas ________________________________________________ 7
1.1 Processamento de um job _______________________________________ 7
1.1.1 Job step __________________________________________________ 7
1.1.2 Job ______________________________________________________ 7
1.1.3 Input stream ______________________________________________ 7
1.1.4 Procedure ________________________________________________ 7
1.1.5 STEPS em um JOB _________________________________________ 7
1.2 Processando o Job _____________________________________________ 7
1.3 Requisitos de recursos __________________________________________ 8
2 Formato do Cartão de JCL ___________________________________________ 9
2.1 Campos do cartão de JCL________________________________________ 9
2.1.1 Campo de Identificação _____________________________________ 9
2.1.2 Campo de nome ___________________________________________ 9
2.1.3 Campo de operação ________________________________________ 9
2.1.4 Campo de operando ________________________________________ 9
2.1.5 Campo de comentários _____________________________________ 10
2.2 Campo de operandos __________________________________________ 10
2.2.1 Parâmetros posicionais _____________________________________ 10
2.2.2 Parâmetros de palavra-chave ________________________________ 10
2.2.3 Sub-parâmetros___________________________________________ 10
2.2.4 Sub-parâmetros posicionais Nulos ____________________________ 10
2.3 Campos de Cartões de JES2_____________________________________ 11
2.4 Continuação de um Cartão______________________________________ 11
2.4.1 Continuação de um campo de parâmetro ______________________ 11
2.4.2 Continuando parâmetros entre apóstrofos______________________ 11
2.4.3 Continuando cartão de comentário____________________________ 11
3 Sintaxe dos Operandos ____________________________________________ 13
3.1 Conjunto de Caracteres ________________________________________ 13
3.1.1 Caracteres especiais em parâmetros __________________________ 13
3.2 Referência Anterior____________________________________________ 13
4 Procedures e Símbolos_____________________________________________ 15
4.1 Procedures __________________________________________________ 15
4.1.1 Procedures In-stream ______________________________________ 15
4.1.2 Procedures Catalogadas ____________________________________ 15
4.1.3 O Uso de Procedure _______________________________________ 16
4.2 Modificando uma Procedure_____________________________________ 16
4.2.1 Exemplos ________________________________________________ 16

- 1 -
4.3 Procedures “aninhadas” ________________________________________ 18
4.3.1 Exemplos ________________________________________________ 18
4.4 Usando símbolos do sistema e de JCL _____________________________ 20
4.4.1 Símbolos do Sistema _______________________________________ 20
4.4.2 Símbolos de JCL __________________________________________ 20
5 Cartões do JCL ___________________________________________________ 21
6 Cartão de Comando JCL ___________________________________________ 22
6.1 Descrição ___________________________________________________ 22
6.1.1 Sintaxe__________________________________________________ 22
6.1.2 Campo de operação _______________________________________ 22
6.1.3 Campo de parâmetros______________________________________ 22
6.1.4 Campo de comentário ______________________________________ 22
6.1.5 Localização no JCL ________________________________________ 22
6.1.6 Exemplos ________________________________________________ 22
7 Cartão COMMAND ________________________________________________ 23
7.1 Descrição ___________________________________________________ 23
7.1.1 Sintaxe__________________________________________________ 23
7.1.2 Campo de nome __________________________________________ 23
7.1.3 Campo de operação _______________________________________ 23
7.1.4 Campo de parâmetros______________________________________ 23
7.1.5 Campo de comentário ______________________________________ 23
7.1.6 Localização no JCL ________________________________________ 23
7.1.7 Exemplos ________________________________________________ 23
8 Cartão de comentário _____________________________________________ 24
8.1 Descrição ___________________________________________________ 24
8.1.1 Sintaxe__________________________________________________ 24
8.1.2 Localização no JCL ________________________________________ 24
8.1.3 Exemplos ________________________________________________ 24
9 Cartão CNTL_____________________________________________________ 25
9.1 Descrição ___________________________________________________ 25
9.1.1 Sintaxe__________________________________________________ 25
9.1.2 Campo Label _____________________________________________ 25
9.1.3 Campo de operação _______________________________________ 25
9.1.4 Campo de parâmetros______________________________________ 25
9.1.5 Campo de comentário ______________________________________ 25
9.1.6 Localização no JCL ________________________________________ 25
9.1.7 Cartões de controle de programa _____________________________ 25
9.1.8 Exemplos ________________________________________________ 26
10 Cartão ENDCNTL _______________________________________________ 27
10.1 Descrição ___________________________________________________ 27
10.1.1 Sintaxe__________________________________________________ 27
10.1.2 Campo label______________________________________________ 27

- 2 -
10.1.3 Campo de operação _______________________________________ 27
10.1.4 Campo de comentário ______________________________________ 27
10.1.5 Localização no JCL ________________________________________ 27
10.1.6 Exemplos ________________________________________________ 27
11 Cartão JCLLIB__________________________________________________ 28
11.1 Descrição ___________________________________________________ 28
11.1.1 Sintaxe__________________________________________________ 28
11.1.2 Campo de nome __________________________________________ 28
11.1.3 Campo de operação _______________________________________ 28
11.1.4 Campo de parâmetros______________________________________ 28
11.1.5 Campo de comentário ______________________________________ 28
11.1.6 Localização no JCL ________________________________________ 28
11.1.7 Exemplos ________________________________________________ 29
12 Cartão PROC___________________________________________________ 30
12.1 Descrição ___________________________________________________ 30
12.1.1 Sintaxe__________________________________________________ 30
12.1.2 Campo de nome __________________________________________ 30
12.1.3 Campo de operação _______________________________________ 30
12.1.4 Campo de parâmetros______________________________________ 30
12.1.5 Campo de comentário ______________________________________ 30
12.1.6 Override_________________________________________________ 30
12.1.7 Localização no JCL ________________________________________ 31
12.1.8 Exemplos ________________________________________________ 31
13 Cartão PEND___________________________________________________ 32
13.1 Definição ____________________________________________________ 32
13.1.1 Sintaxe__________________________________________________ 32
13.1.2 Campo de nome __________________________________________ 32
13.1.3 Campo de operação _______________________________________ 32
13.1.4 Campo de comentário ______________________________________ 32
13.1.5 Localização no JCL ________________________________________ 32
13.1.6 Exemplos ________________________________________________ 32
14 Cartão SET ____________________________________________________ 33
14.1 Descrição ___________________________________________________ 33
14.1.1 Sintaxe__________________________________________________ 33
14.1.2 Campo de nome __________________________________________ 33
14.1.3 Campo de operação _______________________________________ 33
14.1.4 Campo de parâmetros______________________________________ 33
14.1.5 Campo de comentário ______________________________________ 33
14.1.6 Localização no JCL ________________________________________ 34
14.1.7 Exemplos ________________________________________________ 34
15 Cartão Nulo ___________________________________________________ 35
15.1 Descrição ___________________________________________________ 35
15.1.1 Sintaxe__________________________________________________ 35
- 3 -
15.1.2 Localização no JCL ________________________________________ 35
15.1.3 Exemplos ________________________________________________ 35
16 Cartão JOB ____________________________________________________ 36
16.1 Definição ____________________________________________________ 36
16.1.1 Sintaxe__________________________________________________ 36
16.1.2 Campo de nome __________________________________________ 36
16.1.3 Campo de operação _______________________________________ 36
16.1.4 Campo de parâmetros______________________________________ 36
16.1.5 Parâmetros de palavra-chave ________________________________ 36
16.1.6 Localização no JCL ________________________________________ 37
16.1.7 Exemplos ________________________________________________ 37
16.2 Parâmetro de account _________________________________________ 37
16.2.1 Sintaxe__________________________________________________ 37
16.2.2 Definição de sub-parâmetros ________________________________ 37
16.2.3 Exemplos ________________________________________________ 37
16.3 Parâmetro nome do programador ________________________________ 37
16.3.1 Sintaxe__________________________________________________ 37
16.3.2 Definição do parâmetro ____________________________________ 38
16.3.3 Exemplo_________________________________________________ 38
16.4 Parâmetro TIME ______________________________________________ 38
16.4.1 Sintaxe__________________________________________________ 38
16.4.2 Definição dos sub-parâmetros _______________________________ 38
16.4.3 Defaults _________________________________________________ 39
16.4.4 Overrides ________________________________________________ 39
16.4.5 Exemplos ________________________________________________ 39
16.5 Parâmetro CLASS _____________________________________________ 39
16.5.1 Sintaxe__________________________________________________ 39
16.5.2 Definição do sub-parâmetro _________________________________ 39
16.5.3 Exemplos ________________________________________________ 40
16.6 Parâmetro MSGCLASS _________________________________________ 40
16.6.1 Sintaxe__________________________________________________ 40
16.6.2 Definição do sub-parâmetro _________________________________ 40
16.6.3 Exemplos ________________________________________________ 40
16.7 Parâmetro MSGLEVEL__________________________________________ 41
16.7.1 Sintaxe__________________________________________________ 41
16.7.2 Definição dos sub-parâmetros _______________________________ 41
16.7.3 Exemplos ________________________________________________ 41
16.8 Parâmetro TYPRUN ___________________________________________ 41
16.8.1 Sintaxe__________________________________________________ 41
16.8.2 Definição dos sub-parâmetros _______________________________ 42
16.8.3 Exemplos ________________________________________________ 42
16.9 Parâmetro COND _____________________________________________ 42
16.9.1 Sintaxe__________________________________________________ 42
- 4 -
16.9.2 Definição dos sub-parâmetros _______________________________ 43
16.9.3 Exemplos ________________________________________________ 43
16.10 Parâmetro REGION __________________________________________ 43
16.10.1 Sintaxe ________________________________________________ 43
16.10.2 Definição do sub-parâmetro _______________________________ 43
16.10.3 Exemplos ______________________________________________ 44
16.11 Parâmetro PRTY ____________________________________________ 44
16.11.1 Sintaxe ________________________________________________ 44
16.11.2 Exemplos ______________________________________________ 44
16.12 Parâmetro ADDRSPC_________________________________________ 44
16.12.1 Sintaxe ________________________________________________ 44
16.12.2 Exemplos ______________________________________________ 44
16.13 Parâmetro BYTES ___________________________________________ 45
16.13.1 Sintaxe ________________________________________________ 45
16.13.2 Definição dos sub-parâmetros _____________________________ 45
16.13.3 Exemplos ______________________________________________ 45
16.14 Parâmetro CARDS ___________________________________________ 45
16.14.1 Sintaxe ________________________________________________ 46
16.14.2 Definição dos sub-parâmetros _____________________________ 46
16.14.3 Exemplos ______________________________________________ 46
16.15 Parâmetro PAGES ___________________________________________ 46
16.15.1 Sintaxe ________________________________________________ 46
16.15.2 Definição dos sub-parâmetros _____________________________ 46
16.15.3 Exemplos ______________________________________________ 47
16.16 Parâmetro LINES ___________________________________________ 47
16.16.1 Sintaxe ________________________________________________ 47
16.16.2 Definição dos sub-parâmetros _____________________________ 47
16.16.3 Exemplos ______________________________________________ 48
16.17 Parâmetro MEMLIMIT ________________________________________ 48
16.17.1 Sintaxe ________________________________________________ 48
16.17.2 Definição dos sub-parâmetros _____________________________ 48
16.17.3 Exemplos ______________________________________________ 48
16.18 Parâmetro NOTIFY __________________________________________ 48
16.18.1 Sintaxe ________________________________________________ 48
16.18.2 Definição dos sub-parâmetros _____________________________ 49
16.18.3 Exemplos ______________________________________________ 49
16.19 Parâmetro SCHENV__________________________________________ 49
16.19.1 Sintaxe ________________________________________________ 49
16.19.2 Definição do sub-parâmetro _______________________________ 49
16.19.3 Exemplos ______________________________________________ 49
16.20 Parâmetro USER ____________________________________________ 49
16.20.1 Sintaxe ________________________________________________ 49
16.20.2 Definição do sub-parâmetro _______________________________ 49
-5-
16.20.3 Exemplos ______________________________________________ 50
16.21 Parâmetro PASSWORD _______________________________________ 50
16.21.1 Sintaxe ________________________________________________ 50
16.21.2 Descrição dos sub-parâmetros _____________________________ 50
16.21.3 Exemplos ______________________________________________ 50
16.22 Parâmetro RESTART _________________________________________ 50
16.22.1 Sintaxe ________________________________________________ 50
16.22.2 Definição dos sub-parâmetros _____________________________ 50
16.22.3 Exemplos ______________________________________________ 51

- 6 -
1 Executando Tarefas
Neste capítulo será feito um resumo da entrada de serviço no Sistema
Operacional e como fazer para identificá-lo.

1.1 Processamento de um job

1.1.1 Job step

Um programa entra no sistema operacional como um job step. Um job


step consiste de um cartão de JCL que requisita e controla a execução de
um programa e reserva os recursos necessários para a execução do
programa. Um job step é identificado pelo cartão EXEC. Um job step pode
também conter dados necessários para o processamento do programa. O
sistema operacional distingue cartões de JCL de dados para
processamento.

1.1.2 Job

Um job é uma coleção de job steps identificado pelo cartão JOB.

1.1.3 Input stream

Jobs localizados em série e inseridos no sistema por intermédio de um


dispositivo de entrada é chamado de input stream. O sistema operacional
lê os cartões de entrada de um arquivo ou de uma Internal Reader.

1.1.4 Procedure

Quando se possui um conjunto de cartões de JCL que é utilizado por


diversos jobs com poucas ou nenhuma mudança, estes podem ser
agrupados como uma Procedure, ou PROC. Uma procedure pode estar
localizada numa biblioteca do sistema, similar à SYS1.PROCLIB, neste caso
chamada de procedure catalogada, ou ser inserida diretamente no JOB,
chamada então de procedure in-stream.

1.1.5 STEPS em um JOB

Um job pode ser simples ou complexo, consistindo de uma ou mais steps


e, que podem chamar uma ou mais procedures. Um job pode consistir de
até 255 steps, incluindo todos os steps de procedures catalogadas ou in-
stream que foram incluídas nele.

1.2 Processando o Job

O sistema operacional processa muitos jobs automaticamente. O usuário


pode influenciar em como o sistema processa seu job por meio de
definições de JCL.
-7-
1.3 Requisitos de recursos

Recursos de data set


Para executar um programa é necessário informar ao sistema quais os
arquivos serão utilizados para fornecer entrada e saída de dados do
programa.

Recursos de SYSOUT
Um arquivo de SYSOUT é um arquivo de saída em formato de relatório,
pois será gravado no SPOOL do JES.

- 8 -
2 Formato do Cartão de JCL
Neste capítulo será descritos o formato de um cartão JCL e as convenções
de término e continuação.

2.1 Campos do cartão de JCL

Um cartão de JCL consiste de um ou mais registros de 80 bytes. Cada


registro tem o formato de uma imagem de cartão de 80 colunas. Cada
cartão de JCL é dividido logicamente em 5 campos que podem aparecer ou
não em todos os cartões.

2.1.1 Campo de Identificação

O campo de identificação indica para o sistema se o cartão é de JCL ou de


dados. O identificador consiste de:
Colunas 1 e 2 de todo o cartão de JCL, exceto cartão delimitador,
deve conter “//”;
Colunas 1 e 2 de cartões delimitadores devem conter “/*” ou
quaisquer outros caracteres, desde que sejam definidos no
parâmetro DLM;
Colunas 1, 2 e 3 de um cartão de comentário deve conter “//*”;

2.1.2 Campo de nome

O campo de nome identifica um cartão de JCL para que o sistema ou


outros cartões possa referenciá-lo. O capo de nome deve possuir a
seguinte especificação:
O nome deve começar na coluna 3;
O nome deve possuir de 1 a 8 caracteres alfanuméricos ou os
caracteres (@,#,$);
O primeiro caracter não pode ser numérico;
O campo de nome deve ser seguido por um ”฿ “;

2.1.3 Campo de operação

O campo de operação especifica o tipo de cartão, ou, para um cartão de


comando, o comando a que se refere, sendo:
O campo de operação consiste dos caracteres que indicam a
operação;
O campo de operação segue o campo de nome;
A operação deve ser presecida e seguida de pelo menos um ”฿ “;

2.1.4 Campo de operando

O campo de operando contém parâmetros específicos do cartão separados


por “,”. Os operandos devem ser codificados da seguinte forma:
O campo de operando deve seguir o campo de operação;
- 9 -
A lista de operandos deve ser precedida de pelo menos um ”฿ “;

2.1.5 Campo de comentários

O campo de comentário contém qualquer informação que se ache útil


colocar quando se codifica o cartão de JCL.
O campo de comentário segue o campo de operandos;
O campo de comentário deve ser precedido por pelo menos um ”฿
“;

2.2 Campo de operandos

O campo de operandos, também chamado de parâmetros, consiste de dois


tipos: parâmetros posicionais e parâmetros de palavra-chave. Todos os
parâmetros posicionais devem preceder todos os parâmetros de palavra-
chave.

As vírgulas devem ser utilizadas para separar os operandos posicionais,


operandos de palavra-chave e subparâmetros no campo de operando.

2.2.1 Parâmetros posicionais

Um parâmetro posicional consiste de:


Caracteres específicos;
Informações variáveis;
Uma combinação de ambos;

2.2.2 Parâmetros de palavra-chave

Os parâmetros de palavra-chave devem ser codificados tendo como base a


palavra chave que os identifica, seguido por um sinal de “=” e as variáveis
de acordo com o que se deseje.

Os parâmetros de palavra-chave podem aparecer em qualquer ordem


dentro do cartão de JCL a que se referem.

2.2.3 Sub-parâmetros

Um parâmetro posicional ou uma variável de uma palavra-chave consiste,


em algumas vezes, de mais de um item, chamado de lista de sub-
parâmetros. Esta lista de sub-parâmetros pode consistir de sub-parâmetros
posicionais ou palavra-chave. Esses sub-parâmetros seguem as mesmas
regras dos parâmetros posicionais ou de palavra-chave.

2.2.4 Sub-parâmetros posicionais Nulos

Também é permitido codificar sub-parâmetros posicionais nulos, exceto


quando a sintaxe do parâmetro a que está associado obriga.

- 10 -
2.3 Campos de Cartões de JES2

As regras de codificação de um cartão de JES2 são as mesmas de um


cartão de JCL, com as seguintes adições:
Colunas 1 e 2 sempre contém os caracteres “/*”;
Não se codifica comentários em cartões de JES2;
Se um mesmo parâmetro á codificado mais de uma vez, o JES2
assume o último deles;

2.4 Continuação de um Cartão

Quando o tamanho total dos campos de um cartão excede a coluna 71, os


campos devem ser continuados em mais de um cartão.

A seguir são cartões de JCL que não podem ter continuação:


Cartão de Comando JCL;
Cartão de comentário;
Cartão de delimitador;
Cartão nulo;

2.4.1 Continuação de um campo de parâmetro

1. Interrompa o campo depois de um parâmetro completo ou de um


sub-parâmetro, incluindo a vírgula que segue ele, em ou na frente
de coluna 71;
2. Codifique “//” nas colunas 1 e 2 do cartão seguinte;
3. Codifique um ”฿“ na coluna 3 do cartão seguinte. Se coluna 3
contém qualquer coisa exceto um em branco ou um asterisco, o
sistema assume o cartão seguinte é um novo cartão. O sistema
emite uma mensagem de erro indicando que nenhuma continuação
é encontrada e falha o job;
4. Continue o parâmetro ou campo interrompido começando em
qualquer coluna de 4 até 16.

2.4.2 Continuando parâmetros entre apóstrofos

Para continuar um parâmetro que é incluso em apóstrofos:


1. Estenda o parâmetro até a coluna 71. Não codifique um apóstrofo na
coluna 71 de um cartão de JCL que será continuado. O sistema
interpreta o apóstrofo em coluna 71 como o caracter final do cartão
e ignora a continuação.
2. Codifique “//” nas colunas 1 e 2 do cartão seguinte;
3. Continue o parâmetro na coluna 16 do cartão seguinte;

2.4.3 Continuando cartão de comentário

Inclua comentários seguindo um campo de parâmetro interrompido com


pelo menos um campo em branco. Para continuar um comentário:

- 11 -
1. Interrompa o comentário em um lugar conveniente na frente de
coluna 72, até e inclusive coluna 71;
2. Codifique um caráter não branco na coluna 72;
3. Codifique “//” nas colunas 1 e 2 do cartão seguinte;
4. Codifique um caráter “฿ “ na coluna 3 do cartão seguinte;
5. Continue o campo de comentários que começa em qualquer coluna
depois de coluna 3;

- 12 -
3 Sintaxe dos Operandos
As regras de sintaxe definem como codificar os campos e parâmetros nos
cartões de um job. A sintaxe indica:
O que o sistema requer;
O que opcional para um específico propósito;
Como os operandos devem aparecer;

3.1 Conjunto de Caracteres

Para se codificar um JCL deve se usar um conjunto de caracteres


alfanuméricos (A-Z e 0-9), caracteres nacionais ($,@,#) e caracteres
especiais (,./´()&*+-=).

3.1.1 Caracteres especiais em parâmetros

A descrição do parâmetro ou sua sintaxe indica o uso ou não de carcteres


especiais. Parâmetros e sub-parâmetros que podem conter caracteres
especiais, não usados em funções sintáticas devem vir entre apóstrofos.
Quando um apóstrofo deve fazer parte do campo especificado, deve ser
codificado um conjunto de 2 deles.

3.2 Referência Anterior

Muitos parâmetros em um cartão de JCL podem utilizar referência anterior


(backward reference) para encontrar uma informação. Backward reference
é uma referência a um cartão especificado anteriormente no job, numa
procedure catalogada ou in-stream. Ela pode ser especificada na seguinte
forma:
*.name ou *.ddname – onde name e ddname é um campo de nome
de um cartão;
*.stepname.name ou *.stepname.ddname – onde o nome ou
ddname a ser referenciado está em um step, com o nome no
stepname, definido anteriormente;
*.stepname.procstepname.name ou
*.stepname.procstepname.ddname – onde o name ou ddname a ser
referenciado está em um step de uma procedure definida
anteriormente;

Uma referência anterior pode ser utilizada para copiar parâmetros para um
novo cartão de JCL. Os seguintes cartões podem ter referências anteriores:
DD CNTL – refere-se a outro cartão CNTL definido anteriormente;
DD DCB – refere-se a um outro cartão DD para copiar parâmetros
de DCB;
DD DSNAME – refere-se a outro cartão DD para copiar o seu
dsname, sendo ele ou não temporário ou particionado;

- 13 -
DD OUTPUT – refere-se a outro cartão OUTPUT definido
anteriormente;
DD REFDD – refere-se a outros cartões DD para copiar atributos de
arquivos;
DD VOLUME=REF – refere-se a um cartão DD anterior para utilizar
do mesmo volume. O sub-parâmetro LABEL também é copiado;
EXEC PGM – refere-se a um cartão DD definido anteriormente com
o programa a ser executado como membro de um arquivo
particionado;

Os seguintes cartões não podem ser referenciados:


DD * nos parâmetros DCB, DSNAME ou VOLUME;
DD DATA nos parâmetros DCB, DSNAME ou VOLUME;
DD DUMMY nos parâmetros VOLUME ou UNIT. O DD referenciando
assumirá um arquivo dummy;
DD DYNAM;
DD contendo FREE=CLOSE nos parâmetros VOLUME ou UNIT;
Cartão DD SYSOUT;
Cartão DD que é resultado de uma referência de DDNAME=;
Cartão DD contendo um parâmetro PATH;
Procedures “aninhadas”;

- 14 -
4 Procedures e Símbolos
Este capítulo irá descrever o uso de procedures, incluído procedures
aninhadas e como se utilizam símbolos em cartões JCL;

4.1 Procedures

Para jobs que executam constantemente ou que utilizam um mesmo


conjunto de cartões de JCL podem ser criadas procedures.

4.1.1 Procedures In-stream

Quando se localiza uma procedure em conjunto com o cartão job, ela é


chamada uma procedure in-stream.

Uma procedure in-stream deve começar com o cartão PROC e terminar


com o cartão PEND, e incluir somente os seguintes os cartões de JCL:
CNTL;
Comentário;
DD;
ENDCNTL;
EXEC;
IF/THEN/ELSE/ENDIF;
INCLUDE;
OUTPUT JCL;
SET;

As seguintes restrições também devem ser observadas nas procedures in-


stream:
Não codificar qualquer outro cartão de JCL além dos indicados
acima;
Não adicionar um arquivo in-stream;
Não definir outra procedure in-stream;
Não usar uma procedure in-stream se será executada como uma
Started Task sob o MASTER subsystem;

4.1.2 Procedures Catalogadas

Uma procedure que reside em uma biblioteca de procedures é chamada


procedure catalogada.

Uma procedure catalogada pode incluir os seguintes os cartões de JCL:


CNTL;
Comentário;
DD;
ENDCNTL;
EXEC;

- 15 -
IF/THEN/ELSE/ENDIF;
INCLUDE;
OUTPUT JCL;
SET;

Uma procedure catalogada pode, opcionalmente, começar com o cartão


PROC e terminar com o cartão PEND. Se assim for, o cartão PROC deve
ser o primeiro.

Uma biblioteca contendo procedures catalogadas pode ser um arquivo


particionado (PDS) ou um (PDSE). A biblioteca de procedures do sistema é
a SYS1.PROCLIB.

4.1.3 O Uso de Procedure

Para se executar uma procedure basta chamá-la num cartão EXEC em uma
etapa do job. Especifica-se o nome da procedure no parâmetro PROC do
cartão EXEC. A etapa usa os cartões de JCL da procedure imediatamente
após o cartão EXEC. Se necessário pode se modificar a procedure durante
a execução do job.

Quando se chama uma procedure o sistema usa a seguinte seqüência de


busca:
1. Dos cartões de entrada (input stream), quando codificada uma
procedure in-stream antes do cartão EXEC que a referencia;
2. De uma biblioteca privada, quando codificado o cartão JCLLIB;
3. Das bibliotecas do sistema;

4.2 Modificando uma Procedure

Existem duas formas de se modificar uma procedure:


Utilizando símbolos de sistema e símbolos de JCL;
Utilizando um override;

O uso de símbolos do sistema ou de símbolos de JCL é projetado para que


uma procedure possa ser modificada facilmente. Se a procedure não
possui símbolos ela pode ser modificada utilizando o override.

Para uma execução, pode-se fazer override de uma procedure por:


Adicionando, substituindo ou anulando parâmetros do cartão EXEC;
Adicionando, substituindo ou anulando parâmetros dos cartões DD
ou OUTPUT JCL;
Adicionando cartões DD ou OUTPUT JCL;

4.2.1 Exemplos

Exemplo 1

- 16 -
//JOBA JOB ACCT23,’G. HILL’
//STEPA EXEC PROC=REP
//PSTEP1.INDS DD *
.
(DADOS)
.
/* IN SYS1.PROCLIB MEMBER REP:
// PROC
//PSTEP1 EXEC PGM=WRIT22
//OUTDS DD SYSOUT=A

Exemplo 2

No input-stream

//JOB1 JOB ,’H.H. MORRILL’


//ADD1 OUTPUT COPIES=2
//STEPA EXEC PROC=P
//PS1.OUTA OUTPUT CONTROL=DOUBLE,COPIES=5
//PS1.DSB DD OUTPUT=*.ADD1
//PS1.DSE DD *
.
(DATA)
.
/*
//PS2.OUTB OUTPUT DEFAULT=YES,DEST=STL

Na procedure P
//PS1 EXEC PGM=R15
//OUTA OUTPUT CONTROL=PROGRAM
//DSA DD SYSOUT=C,OUTPUT=*.OUTA
//DSB DD SYSOUT=D,OUTPUT=*.OUTA
//PS2 EXEC PGM=T48
//DSC DD SYSOUT=A

Exemplo 3

No input-stream
//JOBB JOB ACCT23,’G. HILL’
//STEPB EXEC PROC=WRIT35,COND.PSTEP3=(4,GT,PSTEP1),RD=R
//PSTEP1.DD1 DD VOLUME=SER=,UNIT=SYSDA,DISP=(NEW,CATLG)
//PSTEP1.INDS DD *
.
.
(DATA)
.
/*
//PSTEP2.DD3 DD DISP=(OLD,KEEP)
//PSTEP3.DD5 DD DUMMY
//PSTEP3.DD6 DD DSNAME=A.B.C
//PSTEP3.DD8 DD EXPDT=

Na procedure WRIT35
// PROC
//PSTEP1 EXEC PGM=WT1,TIME=(,50)
- 17 -
//DD1 DD DSNAME=DATA1,DISP=(NEW,DELETE),SPACE=(TRK,(10,2)),
// UNIT=3330,VOL=SER=1095
//DD2 DD DSNAME=&&WORK,UNIT=SYSDA,SPACE=(CYL,(10,1)),
// DISP=(,PASS)
//PSTEP2 EXEC PGM=WT2,TIME=(,30)
//DD3 DD DSNAME=*.PSTEP1.DD2,DISP=(OLD,DELETE)
//PSTEP3 EXEC PGM=UPDT,TIME=(,45),RD=RNC
//DD4 DD SYSOUT=*
//DD5 DD DSNAME=DATA3,UNIT=3340,DISP=OLD,
// VOLUME=SER=335006
//DD6 DD DSNAME=QOUT,UNIT=3400-5
//DD7 DD SYSOUT=H
//DD8 DD DSNAME=A.B,DISP=(NEW,CATLG,DELETE),
// SPACE=(TRK,(1)),EXPDT=92365,UNIT=SYSDA

4.3 Procedures “aninhadas”

Procedures catalogadas ou in-stream podem chamar outras procedures


(até o nível de 15 procedures). Em uma procedure um cartão EXEC pode
chamar outra procedure, que pode conter um cartão EXEC que chama
outra procedure e assim por diante.

4.3.1 Exemplos

Exemplo de chamada de uma procedure aninhada

Procedure C:
//C PROC
//CS1 EXEC PGM=GHI
.
// PEND

Procedure B:
//B PROC
//BS1 EXEC PROC=C
.
//BS2 EXEC PGM=DEF
.
// PEND

Procedure A:
//A PROC
//AS1 EXEC PROC=B
.
//AS2 EXEC PGM=ABC
.
// PEND

Job Stream:
//JOB1 JOB
//STEP1 EXEC PROC=A
.
//STEP2 EXEC PGM=JKL
.
.
Os cartões que seguem são equivalentes aos exemplificados acima:

- 18 -
//JOB1 JOB LEVEL 0
//CS1 EXEC PGM=GHI LEVEL 3
.
//BS2 EXEC PGM=DEF LEVEL 2
.
//AS2 EXEC PGM=ABC LEVEL 1
.
//STEP2 EXEC PGM=JKL LEVEL 0

Exemplo de modificação em uma procedure aninhada.

Procedure C:
//C PROC
//CS1 EXEC PGM=CCC
//CS1DD1 DD DSNAME=A.B.C,DISP=SHR
//CS1DD2 DD SYSOUT=A
// PEND

Procedure B:
//B PROC
//BS1 EXEC PROC=C
//CS1.CS1DD1 DD DSNAME=X.Y.Z
//*
//CS1.CS1DD3 DD SYSOUT=A
//BS2 EXEC PGM=BBB
//BS2DD1 DD DSNAME=E,DISP=SHR
// PEND

Procedure A:
//A PROC
//AS1 EXEC PROC=B
//BS2.BS2DD2 DD DSNAME=G,DISP=SHR
//AS2 EXEC PGM=AAA
//AS2DD1 DD DSNAME=E,DISP=SHR
// PEND

Job Stream:
//JOB1 JOB
//STEP1 EXEC PROC=A
//AS2.AS2DD2 DD DSNAME=G,DISP=SHR
//STEP2 EXEC PGM=IEFBR14
.

Os seguintes cartões são equivalentes ao ninho de procedures mostrado


acima:

//JOB1 JOB
//CS1 EXEC PGM=CCC
//CS1DD1 DD DSNAME=X.Y.Z,DISP=SHR
//*
//CS1DD2 DD SYSOUT=A
//CS1DD3 DD SYSOUT=A
//*
//BS2 EXEC PGM=BBB
//BS2DD1 DD DSNAME=E,DISP=SHR
//BS2DD2 DD DSNAME=G,DISP=SHR

- 19 -
//*
//AS2 EXEC PGM=AAA
//AS2DD1 DD DSNAME=E,DISP=SHR
//AS2DD2 DD DSNAME=G,DISP=SHR
//STEP2 EXEC PGM=IEFBR14

4.4 Usando símbolos do sistema e de JCL

Símbolos de sistema e de JCL são conjunto de caracteres que representam


variáveis no JCL. Eles permitem modificar facilmente um JCL. Um string
que define um símbolo é limitado a 8 caracteres em tamanho, não
incluindo o caracter de identificação “&”.

4.4.1 Símbolos do Sistema

Símbolos do sistema representam valores que são únicos para cada


sistema. O sistema substitui esses símbolos por seus próprios valores
quando ele processa o JCL de uma Started Task e logon de TSO

4.4.2 Símbolos de JCL

Os símbolos de JCl diferem dos símbolos de sistema pelo fato de que eles
devem ser definidos antes do uso deles pelo JCL. Os símbolos definidos
são válidos apenas durante a execução do job.

- 20 -
5 Cartões do JCL
A seguir se tem um resumo dos comandos JCL existentes:

COMANDO NOME FUNÇÃO


// comando comando JCL Emite um comando de operação
MVS por meio dos cartões de JCL
// COMMAND comando Especifica um comando de MVS ou
JES que o sistema emite quando o
JCL é convertido.
//* comentário comentário Especifica comentários que são
utilizados para efeitos de
documentação.
// CNTL control Identifica o início de um ou mais
cartões de controle
// DD data definition Identifica e descreve um data set.
/* delimitador Identifica o final de dados
inseridos em conjunto com o JCL.
// ENDCNTL end control Identifica o final de um ou mais
cartões de controle.
// EXEC execute Marca o início de uma etapa do
job e identifica o programa ou
procedure que será chamada.
// IF/THEN/ELSE/ENDIF construção IF Especifica execução condicional de
um job ou step.
// INCLUDE include Identifica membro de um PDS ou
PDSE que será adicionado ao JCL
corrente.
// JCLLIB JCL library Identifica as bibliotecas que o
sistema irá pesquisar para
encontrar membros para INCLUDE
e PROC.
// JOB job Marca o início de um job e
assinala nome ao job.
// nulo Marca o final de um job.
// OUTPUT output JCL Especifica opções de
processamento que o JES utilizará
para processar arquivos em
SYSOUT.
// PEND procedure end Marca o final de uma procedure
in-stream ou catalogada.
// PROC procedure Marca o início de uma procedure
in-stream ou catalogada.
// SET set Define e assinala valores iniciais
para parâmetros simbólicos.
// XMIT transmit Transmite cartões de um sistema
para outro

- 21 -
6 Cartão de Comando JCL

Usa-se o cartão de comando JCL para emitir um comando de operação


MVS por intermédio do input stream em um sistema com JES2.

Porém, o cartão COMMAND é uma melhor forma de especificar comandos


a serem emitidos para o MVS ou JES2.

Usualmente, o sistema executa um comando no JCl assim que ele efetua a


leitura dos cartões. Desta forma o comando não é sincronizado com a
execução do job.

6.1 Descrição

6.1.1 Sintaxe

// command [parâmetros] [comentários]

6.1.2 Campo de operação

O campo de operação contém o comando de operação do MVS que deve


ser codificado como segue:
Preceder e suceder o comando com um ou mais caracteres brancos
e começar em qualquer coluna;
Codificar o comando ou uma abreviação válida do comando;

6.1.3 Campo de parâmetros

Codificar qualquer parâmetro exigido e aceito pelo comando.

6.1.4 Campo de comentário

O campo de comentário segue o campo de parâmetro separado por pelo


menos um caracter branco.

6.1.5 Localização no JCL

O cartão de comando pode aparecer em qualquer lugar em um JCL depois


do cartão JOB.

6.1.6 Exemplos
// DISPLAY TS,LIST

- 22 -
7 Cartão COMMAND
Use o cartão COMMAND para especificar qualquer comando MVS ou JES2
que será emitido quando o JCL for convertido.

Quando o sistema encontra um comando oriundo de um JCL ele emite a


mensagem IEFC165I que informa ao operador a execução do comando.

7.1 Descrição

7.1.1 Sintaxe

//[nome] COMMAND ’comando e parâmetros’ [comentários]

7.1.2 Campo de nome

O campo de nome é opcional e deve ser codificando de acordo com as


normas estabelecidas para nome.

7.1.3 Campo de operação

O campo de operação consiste da palavra COMMAND e deve estar


precedida e seguida de caracteres brancos.

7.1.4 Campo de parâmetros

O campo de parâmetros especifica o comando e seus operandos. O


tamanho máximo para um comando é de 123 caracteres.

7.1.5 Campo de comentário

O campo de comentário pode ser codificado após o campo de parâmetros


e separado por pelo menos um branco.

7.1.6 Localização no JCL

O cartão COMMAND pode aparecer em qualquer lugar no JCL após o


cartão JOB.

7.1.7 Exemplos
// COMMAND ’S VTAM’ START VTAM

// COMMAND ’SEND ’’ESTA MENSAGEM SERÁ EMITIDA PARA O USUARIO


// P525341 QUANDO O JOB FOR CONVERTIDO’’,USER=(P525341)’

- 23 -
8 Cartão de comentário
Use o cartão de comentário para enviar um comentário na listagem de
saída do job. O comentário é utilizado com propósito de documentação de
um job e de seus recursos.

8.1 Descrição

8.1.1 Sintaxe

//*comentário

8.1.2 Localização no JCL

Um cartão de comentário pode ser localizado em qualquer lugar em um


JCL após o cartão JOB.

8.1.3 Exemplos
//* UM CARTAO DE COMENTÁRIO NAO PODE TER CONTINUACAO
//* ENTAO SE PODE UTILIZAR VARIAS LINHAS PARA ESCREVER
//* O QUE QUER DIZER

- 24 -
9 Cartão CNTL
O cartão CNTL marca o início de cartões de controle de programa em um
JCL. Cartões de controle de programa especificam informações de controle
para um subsistema. Os cartões de controle de programa são finalizados
pelo cartão ENDCNTL e são chamados de um grupo CNTL/ENDCNTL.

9.1 Descrição

9.1.1 Sintaxe

//label CNTL [ * comentários]

9.1.2 Campo Label

Para cada cartão CNTL deve ser codificado um label da seguinte forma:
O label deve começar na coluna 3;
O label segue a norma de codificação de nome;
O label pode ser precedido de até 8 caracteres separado por um “.”;

9.1.3 Campo de operação

O campo de operação consiste da palavra CNTL separada por brancos e


pode estar em qualquer coluna.

9.1.4 Campo de parâmetros

O campo de parâmetros possui apenas um “*” e deve ser utilizado apenas


quando se deseja incluir comentários.

9.1.5 Campo de comentário

O campo de comentário segue o “*” separado por pelo menos um branco.

9.1.6 Localização no JCL

Um cartão CNTL deve aparecer antes do cartão DD que se referencia a ele.


O cartão CNTL e seu DD de referência devem estar na mesma etapa do
job.

9.1.7 Cartões de controle de programa

Cartões de controle de programa passam informações de controle para um


subsistema. Um subsistema pode requerer um ou mais cartões de
controle.

- 25 -
9.1.8 Exemplos
//STEP1 EXEC PGM=PRINT
//ALPHA CNTL * SEGUEM CARTOES DE CONTROLE DE PROGRAMA
//PRGCNTL PRINTDEV BUFNO=20,PIMSG=YES,DATACK=BLOCK
//OMEGA ENDCNTL
//AGAR DD UNIT=AFP1,CNTL=*.ALPHA

- 26 -
10 Cartão ENDCNTL
Usa-se o cartão ENDCNTL para marcar o final de um grupo de cartões de
controle de programa seguindo um cartão CNTL.

10.1 Descrição

10.1.1 Sintaxe

//label ENDCNTL [comentários]

10.1.2 Campo label

O campo label deve ser codificado como segue:


Cada label deve ser único no job;
O label deve seguir as normas de codificação do nome;

10.1.3 Campo de operação

O campo de operação consiste da palavra ENDCNTL separada por brancos


e pode iniciar em qualquer coluna.

10.1.4 Campo de comentário

O campo de comentário segue a palavra ENDCNTL e é separado por


brancos.

10.1.5 Localização no JCL

O cartão ENDCNTL vem imediatamente após o último cartão de controle


de programa precedido por um cartão CNTL.

10.1.6 Exemplos
//STEP1 EXEC PGM=PRINT
//ABLE CNTL
//STATE1 PRINTDEV BUFNO=20,PIMSG=YES,DATACK=BLOCK
//BAKER ENDCNTL
//CALLER DD UNIT=3800-3,CNTL=*.ABLE

- 27 -
11 Cartão JCLLIB
O cartão JCLLIB deve ser utilizado para:
Identificar o nome de bibliotecas privadas que o sistema utilizará
para o job. O sistema procura bibliotecas para:
o Procedures identificadas nos cartões EXEC do JCL;
o Grupos de cartões JCL ou qualquer cartão INCLUDE;
Identificar os nomes das bibliotecas de procedures do sistema ou de
aplicações específicas que serão utilizadas pelo job;
Identificar a ordem em que as bibliotecas serão pesquisadas. O
sistema pesquisa as bibliotecas na ordem que aparecem no cartãop
JCLLIB, antes de pesquisar em qualquer outra biblioteca do sistema;

11.1 Descrição

11.1.1 Sintaxe

//[nome] JCLLIB ORDER=(biblioteca[,biblioteca]...) [comentários]

11.1.2 Campo de nome

O campo de nome opcionalmente identifica o cartão JCLLIB e deve seguir


as normas de definição de nome.

11.1.3 Campo de operação

O campo de operação consiste da palavra JCLLIB entre caracteres brancos.

11.1.4 Campo de parâmetros

O cartão JCLLIB possui apenas um parâmetro de palavra-chave.

ORDER=(biblioteca[,biblioteca]...)
Especifica o nome das bibliotecas a serem pesquisadas. O
máximo número de bibliotecas que pode ser pesquisado é 15.

11.1.5 Campo de comentário

O campo de comentário segue o campo de parâmetros separado por


branco.

11.1.6 Localização no JCL

Um cartão JCLLIB deve:


Aparecer após o cartão JOB e antes do primeiro cartão EXEC;
Aparecer antes de qualquer cartão INCLUDE;
Não pode aparecer em um grupo INCLUDE;

- 28 -
11.1.7 Exemplos

Exemplo 1

//MYJOB1 JOB ...


//MYLIBS1 JCLLIB ORDER=CAMPBEL.PROCS.JCL
//S1 EXEC PROC=MYPROC1

Exemplo 2
//MYJOB2 JOB ...
//MYLIBS2 JCLLIB ORDER=(CAMPBEL.PROCS.JCL,PUCHKOF.PROCS.JCL,
// YUILL.PROCS.JCL,GARY.PROCS.JCL)
//S2 EXEC PROC=MYPROC2
.
.
//INC2 INCLUDE MEMBER=MYINC2
.
.

- 29 -
12 Cartão PROC
O cartão PROC marca o início de uma procedure. O cartão PROC pode
assinalar valores default para parâmetros simbólicos, se codificados, em
uma procedure.

12.1 Descrição

12.1.1 Sintaxe

Para uma procedure catalogada:


//[nome] PROC [parâmetros [comentários]]
//[nome] PROC

Para procedures in-stream


//nome PROC [parâmetros [comentários]]
//nome PROC

12.1.2 Campo de nome

O campo de nome é exigido em uma procedure in-stream e opcional em


uma procedure catalogada e deve:
Para uma procedure in-stream o campo de nome deve ser único em
todo o job, mas para uma procedura catalogada não;
O campo de nome deve seguir as normas de codificação de nome;

12.1.3 Campo de operação

O campo de operação consiste da palavra PROC entre brancos e pode


começar em qualquer coluna.

12.1.4 Campo de parâmetros

O campo de parâmetros de um cartão PROC assinala valores defaults para


parâmetros simbólicos utilizados na procedure.

12.1.5 Campo de comentário

O campo de comentário deve apenas ser codificado se houver um campo


de parâmetros e separado por branco.

12.1.6 Override

Para se fazer um override em um parâmetro simbólico de uma procedure


basta codificar o parâmetro com o valor que ele deve assumir no cartão
EXEC de chamada da procedure.

- 30 -
12.1.7 Localização no JCL

O cartão PROC deve ser o primeiro cartão em uma procedure. Em uma


procedure in-stream deve aparecer depois do cartão job e antes do cartão
EXEC que a referencia.

12.1.8 Exemplos

Exemplo 1

//DEF PROC STATUS=OLD,LIBRARY=SYSLIB,NUMBER=777777


//NOTIFY EXEC PGM=ACCUM
//DD1 DD DSNAME=MGMT,DISP=(&STATUS,KEEP),UNIT=3400-6,
// VOLUME=SER=888888
//DD2 DD DSNAME=&LIBRARY,DISP=(OLD,KEEP),UNIT=3350,
// VOLUME=SER=&NUMBER

- 31 -
13 Cartão PEND
O cartão PEND deve ser utilizado para marcar o final de uma procedure in-
stream. Ele também pode ser codificado para marcar o final de uma
procedure catalogada, mas não é requerido.

13.1 Definição

13.1.1 Sintaxe

//[nome] PEND [comentários]

13.1.2 Campo de nome

O campo de nome é opcional e se codificado deve seguir as normas de


codificação de nome.

13.1.3 Campo de operação

O campo de operação consiste da palavra PEND separada por brancos e


pode começar em qualquer coluna.

13.1.4 Campo de comentário

O campo de comentário segue o campo de operação separado por branco.

13.1.5 Localização no JCL

O cartão PEND deve ser o último cartão de uma procedure in-stream ou


catalogada.

13.1.6 Exemplos
//PROCEND1 PEND ESTE CARTAO E OBRIGATORIO PARA PROC IN-STREAM

- 32 -
14 Cartão SET
O uso do cartão SET serve para:
Definir e assinalar valores iniciais para parâmetros simbólicos que
serão utilizados no job;
Alterar ou anular valores de parâmetros simbólicos definidos
previamente;

Os valores assinalados para parâmetros simbólicos pelo cartão SET são


usados em:
Cartões JCL subseqüentes no input stream, ou
Cartões em subseqüentes procedures;

14.1 Descrição

14.1.1 Sintaxe

//[nome] SET parâmetro-simbólico=valor


// [,parâmetro-simbólico=valor]... [comentários]

14.1.2 Campo de nome

O campo de nome é opcional no cartão SET e se usado deve seguir as


regras de codificação de nome.

14.1.3 Campo de operação

O campo de operação consiste da palavra SET, separada por brancos e


começando em qualquer coluna.

14.1.4 Campo de parâmetros

O cartão SET possui um ou mais parâmetros posicionais que identificam os


parâmetros simbólicos.

parâmetro-simbólico=valor[,parâmetro-simbólico=valor]...
Define o parâmetro simbólico e especifica um valor inicial que será
assinalado para ele. Para tornar um parâmetro simbólico nulo basta
especificar:
parâmetro simbólico=

14.1.5 Campo de comentário

O campo de comentário segue o campo de parâmetros separado por


brancos.

- 33 -
14.1.6 Localização no JCL

O cartão SET pode aparecer em qualquer lugar em um JCL após o cartão


JOB. O cartão SET deve seguir um cartão de JCL completo e não pode
estar entre concatenação de cartões DD.

14.1.7 Exemplos

Exemplo 1
//SET1 SET DSP=NEW
.
.
//DD1 DD DSNAME=ALPHA.PGM1,DISP=(&DSP,KEEP)

Exemplo 2
//SETA SET DSP=(NEW,DELETE,KEEP)
//PR2 PROC DSP=(NEW,KEEP)
.
.
//DD6 DD DSNAME=ALPHA.PGM2,DISP=&DSP

Exemplo 3

//SETB SET AA=BETA.PGM.RATE,BB=DCLAS03,


// CC=(NEW,KEEP)
.
.
//PR3 PROC ...
//S3 EXEC PGM=...
//DD7 DD DSNAME=&AA,DATACLAS=&BB,DISP=&CC
.
// PEND
.
//S1 EXEC PROC=PR3,BB=DCLAS0X

- 34 -
15 Cartão Nulo
O uso do cartão nulo serve para marcar o final de um job.

15.1 Descrição

15.1.1 Sintaxe

//

15.1.2 Localização no JCL

O cartão nulo deve aparecer no final dos cartões de controle de um job e


no final de um input stream.

15.1.3 Exemplos
//MYJOB JOB ,’RICARDO’
//STEP1 EXEC PROC=FIELD
//STEP2 EXEC PGM=XTRA
//DD1 DD UNIT=3400-5
//DD2 DD *
.
.
DADOS
.
/*
//

- 35 -
16 Cartão JOB
O cartão JOB marca o inicio de um job e serve para informar ao sistema
como processar o job. Também, quando codificado dentro de um mesmo
input stream o cartão JOB serve para separar vários jobs diferentes.

Para cada job ou serviço devemos codificar apenas um cartão JOB e não é
possível processar simultaneamente mais que um JOB com o mesmo
nome.

16.1 Definição

16.1.1 Sintaxe

//jobname JOB parâmetros-posicionais[,parâmetros-chave]... [comemtários]


//jobname JOB

16.1.2 Campo de nome

O campo de nome deve possuir de 1 a 8 caracteres alfanuméricos ou


nacionais ($.@.#) e o primeiro deve ser a alfabético, não podendo conter
brancos e começando da coluna 3.

16.1.3 Campo de operação

O campo de operação consiste da palavra JOB separada por brancos e


começando em qualquer coluna.

16.1.4 Campo de parâmetros

O cartão JOB possui dois tipos de parâmetros, os posicionais e os de


palavra-chave. Todos eles são opcionais, mas a instalação pode requerer
informações de account e nome do programador.

Parâmetros posicionais
O cartão JOB pode conter dois parâmetros posicionais. Eles devem
preceder todos os parâmetros de palavra-chave e devem seguir a ordem
de definição.

16.1.5 Parâmetros de palavra-chave

O cartão JOB pode conter uma série de parâmetros de palavra-chave que


podem ser codificados em qualquer ordem, sempre separador por “,” e
após os parâmetros posicionais separados por “฿ “.

- 36 -
16.1.6 Localização no JCL

O cartão JOB deve ser o primeiro cartão de cada job. Um cartão JOB
nunca devem aparecer em uma procedure catalogada.

16.1.7 Exemplos
//ALFA JOB 843,RICARDO,CLASS=F,MSGCLASS=A,MSGLEVEL=(1,1)
//LOS JOB ,’R PARANHOS’,TIME=(4,30),MSGCLASS=H,MSGLEVEL=(2,0)
//MART JOB 1863,RESTART=STEP4 AQUI TEM COMENTARIO
//TRY8 JOB
//RACF1 JOB ’D83,123’,USER=P525341,GROUP=A27,PASSWORD=XYY
//RUN1 JOB ’D8306P,D83,B1062J12,S=C’,’JUDY PERLMAN’,MSGCLASS=R,
// MSGLEVEL=(1,1),CLASS=3,NOTIFY=D83JCS1,
// COND=(8,LT)

16.2 Parâmetro de account

O parâmetro de account identifica um número qualquer que represente


para a instalação a contabilização do processamento de cada job.

16.2.1 Sintaxe

([número-account][,informação-account]...)

16.2.2 Definição de sub-parâmetros

número de account
Especifica um número de account definido pela instalação

informação de account
Especifica informações adicionais de acordo com definições da
instalação

16.2.3 Exemplos
//MJB0203W JOB (9113,20,1040),‘IMOB #2 ALF’,
// CLASS=W, TIME=10

//JOB1 JOB (CEF),’SEGURANCA’,CLASS=T,MAGCLASS=X

16.3 Parâmetro nome do programador

O nome do programador é um parâmetro posicional, requerido de acordo


com a instalação e identifica o responsável pelo job.

16.3.1 Sintaxe

nome-do-programador

- 37 -
16.3.2 Definição do parâmetro

O parâmetro do programador deve ser codificado antes de qualquer


parâmetro não posicional e possui um máximo de 20 caracteres de
tamanho.

Quando o nome do programador tiver um caracter especial, codificado


entre apóstrofes exceto se tiver uma apóstrofe o qual deverá ser
codificado duplamente.

Se não for preciso contabilizar o parâmetro de account, pode-se suprimi-lo


com ‘‘,“ antes do nome do programador, mas se não houver necessidade
desta, não é necessária a virgula no cartão JOB.

16.3.3 Exemplo
// MJOB0103T JOB (9002,20,1040),’CTA COR#2PROGRAMADOR’,
// CLASS=T,TIME=10

//MEUJOB JOB (CEF),’RICARDO PARANHOS’,CLASS=A

16.4 Parâmetro TIME

O parâmetro TIME especifica o montante de tempo que o JOB pode usar a


CPU.

Se for especificada somente a quantidade de minutos, não é necessária a


codificação de parênteses, entretanto se for especificada somente a
quantidade de segundos é necessária à codificação de parênteses e uma
virgula antecedendo os segundos para indicar a abstenção dos minutos.

16.4.1 Sintaxe

TIME= {([minutos][,segundos])} |
{1440 } |
{NOLIMIT } |
{MAXIMUM } |

16.4.2 Definição dos sub-parâmetros

minutos
Especifica a quantidade de minutos que o JOB poderá usar a CPU e
deve ser um número entre 0 e 357912 (248.55 dias).
Não codifique TIME=0, pois o resultado pode ser inesperado.

segundos
Especifica quantos segundos, entre 0 e 59 que o job pode usar de CPU
além do numero de minutos. Se o número de minutos não for
especificado indica quantos segundos o JOB pode usar a CPU.

- 38 -
1440 ou NOLIMIT
Especifica que o JOB não possui limite de tempo para usar a CPU.
Também pode ser codificado para especificar que qualquer step do job
pode permanecer em wait status por tempo além do definido pela
instalação.

MAXIMUN
Especifica que o job pode usar CPU pelo máximo total de tempo
permitido, que é 357912 minutos.

16.4.3 Defaults

Cada etapa de um job tem um limite de tempo especificado. Se não for


codificado no cartão JOB o limite para cada etapa de um job é:
O valor especificado no cartão EXEC, ou;
O valor especificado no JES;

16.4.4 Overrides

A codificação de um parâmetro TIME no cartão JOB igual a 1440 ou


NOLIMIT anula qualquer valor especificado nos cartões EXEC
subseqüentes.

Para outros valores que não os identificados acima, o sistema seta para
cada etapa do job o seguinte:
O tempo especificado em cada cartão EXEC ou o restante de tempo
que sobra da definição do cartão JOB, prevalecendo o que for
menor.

16.4.5 Exemplos
//MJZ1913T JOB ...,TIME=5
//MJZ1913T JOB ...,TIME=(,30)

16.5 Parâmetro CLASS

O parâmetro CLASS determina a classe de entrada de cada JOB.

16.5.1 Sintaxe

CLASS=classe

16.5.2 Definição do sub-parâmetro

classe
Identifica a classe de execução do job que assumir qualquer caracter de A
a Z ou de 0 a 9 definidos pela instalação e a critério do usuário.

- 39 -
As classes são estabelecidas pela instalação para agrupar jjobs. Através do
agrupamento pode-se otimizar o uso dos recursos dos equipamentos para
processamentos paralelos com as mesmas necessidades.

Por exemplo: Se tivermos duas classes definidas A e B sendo que a


primeira serve aos jobs que necessitem de unidade de fita e a segunda de
unidade de disco, poderemos manipular os recursos liberando os jobs
para processamento segundo a disponibilidade do equipamento.

Deverá haver números de initiators correspondentes ás classes especificas


para os jobs.

A instalação poderá dar prioridade maior em algum determinado serviço


dentro de uma mesma classe, isto em termo de CPU.

Normalmente, jobs com a mesma classe são executados por ordem de


submissão.

16.5.3 Exemplos
//MIA0203T JOB (9230,20,1040),’.......’,
// CLASS=T,TIME=10

//SETUP JOB 1249,SMITH,CLASS=M

16.6 Parâmetro MSGCLASS

O parâmetro MSCLASS especifica a classe de saída na qual as mensagens


do sistema e os cartões do JCL serão listadas.

O sistema produz mensagens acerca das alocações do job para as


unidades e volume, disposições dos arquivos e códigos de retorno dos
programas. Através da codificação do parâmetro MSGCLASS, podemos
endereçar as mensagens e os cartões de JCL para a classe de saída.

16.6.1 Sintaxe

MSGCLASS=classe

16.6.2 Definição do sub-parâmetro

classe
Identifica a classe de saída para as mensagens do job. A classe é um
caracter entre A e Z e 0 e 9 válidos para o JES.

16.6.3 Exemplos
//MJF0353W JOB ...,MSGCLASS=A

- 40 -
16.7 Parâmetro MSGLEVEL

O parâmetro MSGLEVEL indica se toda ou parte da saída deve ser


impressa. Podemos requerer o seguinte:
Apenas o cartão JOB
Os cartões de JCL
O JCL de uma procedure catalogada
Mensagens de alocação e disposição dos arquivos

16.7.1 Sintaxe

MSGLEVEL=([cartões][,mensagens])

16.7.2 Definição dos sub-parâmetros

cartões
Indica quais os cartões o sistema irá imprimir para o JES, podendo ser
um dos seguintes números:

0 O sistema imprime o cartão JOB e todos os cartões JECL até o


primeiro cartão EXEC;
1 O sistema imprime todos os cartões de JCL e JES, procedures e
mensagens IEF653I que identificam os valores assinalados em
parâmetros simbólicos;
2 O sistema imprime apenas cartões de JCL e JES;

mensagens
Indica quais mensagens o sistema irá imprimir de alocação e término
do JOB serão gravadas.

0 O sistema imprime somente mensagens de JCL. Ele imprime


mensagens de operador e JES somente se o job termina
anormalmente.
1 O sistema imprime todas as mensagens de JCL, JES e SMS;

16.7.3 Exemplos
//ALI00001 JOB ...,MSGLEVEL=(2,0)

16.8 Parâmetro TYPRUN

Quando se deseja prender um JOB na fila de entrada para posterior


execução ou então testar apenas a sintaxe do JCL sem que haja execução
do processo.

16.8.1 Sintaxe

TYPRUN= {COPY}
{HOLD}

- 41 -
{JCLHOLD}
{SCAN}

16.8.2 Definição dos sub-parâmetros

COPY
Especifica que o Jes deve fazer uam cópia do JCL que foi submetido e
colocá-lo diretamente para impressão.

HOLD
Especifica que o JOB ficará preso na fila de entrada até que o operador
o liberte. Se houver algum erro de JCL detectado pela internal reader o
JOB passará imediatamente para a fila de saída.

JCLHOLD
Especifica que o JOB ficará preso na fila de entrada até que o operador
o liberte, entretanto a sintaxe do JCL só será verificado pela internal
reader no momento que o JOB for libertado.

SCAN
Especifica que o JCL do JOB será apenas testado à sintaxe, sem a
execução do mesmo e as informações diretamente para a fila de saída.

16.8.3 Exemplos
//ALI00001 JOB ...,TYPRUN=HOLD
//ALI00001 JOB ...,TYPRUN=JCLHOLD
//ALI00001 JOB ...,TYPRUN=SCAN

16.9 Parâmetro COND

O uso do parâmetro COND serve para especificar o teste que será


realizado com os códigos de retorno emitidos pelos programas e definir a
continuação ou não do job. Antes e depois de cada etapa ser executada, o
sistema efetua o teste de condição com o código de retorno da última
etapa a ser executada. Se nenhum dos testes é satisfeito o sistema
executa a etapa seguinte; se qualquer teste é satisfeito, o sistema faz o
bypass das etapas seguintes e termina o job.

Os testes são feitos contra códigos de retorno da execução corrente do


job. Uma etapa que sofreu bypass devido a um teste de condição no
cartão EXEC não possui código de retorno.

16.9.1 Sintaxe

COND=(código,operador)
COND=((código,operador)[,(código,operador)])

- 42 -
16.9.2 Definição dos sub-parâmetros

código
Especifica um número que o sistema compara com o código de retorno
de cada etapa executada no job, podendo ser um número decimal de 0
a 4095.

operador
Especifica o tipo de comparação a ser feita para o código de retorno. Se
o teste executado é verdadeiro, o sistema faz o bypass de todas as
etapas restantes do job. Os operadores possíveis são:

Operador Comparação
GT Maior que
GE Maior ou igual que
EQ Igual que
NE Diferente de
LT Menor que
LE Menor ou igual que

16.9.3 Exemplos
//ALI00001 JOB ....................,COND=(4,GE)
Se 4 for maior ou igual ao código de retorno o job termina.

//ALI00001 JOB ....................,COND=((3,LT),(12,GT))


Se 3 for menor que o código de retorno ou 12 for maior que o código de
retorno o job termina.

16.10 Parâmetro REGION

O parâmetro REGION especifica a quantidade de memória central ou


virtual necessária para o processamento do JOB.

16.10.1 Sintaxe

REGION= {valorK}
{valorM}

16.10.2 Definição do sub-parâmetro

valorK
Especifica a memória solicitada em Kilobytes. O valor é de 1 a 7
números decimais de 1 2096128. O valor codificado deve sempre ser
múltiplo de 4.

valorM
Especifica a memória solicitada em Megabytes. O valor é de 1 a 4
números decimais de 1 a 2047.

- 43 -
16.10.3 Exemplos
//ALI00001 JOB.................ADDRSPC=VIRT,REGION=100K

O JOB será executado em memória virtual

//ALI00001 JOB.................ADDRSPC=REAL,REGION=2500K

O JOB será executado em memória real.

16.11 Parâmetro PRTY

O parâmetro PRTY especifica a prioridade de seleção de um JOB na fila de


espera do JES.

16.11.1 Sintaxe

PRTY=prioridade

prioridade
Um número de 0 a 15 indicando a prioridade de seleção. A maior
prioridade é 15 (JES2). Essa prioridade é somente de seleção, ou seja,
prioridade de reader e interpreter. Se vários JOBS forem submetidos
com a mesma prioridade a seleção será feita na ordem em que são
apresentados.

16.11.2 Exemplos
//MMC0233T JOB .....................PRTY=09

16.12 Parâmetro ADDRSPC

O Parâmetro ADDRSPC indica se o JOB pode ou não ser paginado.

Se o parâmetro for omitido o sistema assume VIRT.

A memória disponível para um programa pode ser REAL ou VIRTUAL.

Quando um programa é selecionado ocorre uma divisão em páginas dentro


da MEMÓRIA VIRTUAL para a execução. A paginação para a MEMÓRIA
REAL é feita pelo supervisor.

16.12.1 Sintaxe

ADDRSPC= {REAL}
{VIRT}

16.12.2 Exemplos
//MJOB103T JOB (9002...20..1040),’CONTAB. #2 PROGRAMADOR’,
// CLASS=T,TIME=10,ADDRSPC=REAL OU ADDRSPC=VIRT
- 44 -
16.13 Parâmetro BYTES

Usa-se o parâmetro BYTESpara:


Indica o máximo de impressão, em milhares de bytes, que o job
poderá produzir;
Especificar a ação que sistema tomará caso o número máximo seja
excedido;

16.13.1 Sintaxe

BYTES= {nnnnnn}
{([nnnnnn][,CANCEL])}
{([nnnnnn][,DUMP])}
{([nnnnnn][,WARNING])}

16.13.2 Definição dos sub-parâmetros

nnnnnn
Indica o total máximo de impressão que pode ser produzido pelo job,
em milhares de bytes. Um valor de 500 representa 500.000 bytes. O
valor pode ser de 0 a 999999.

CANCEL
Indica que o sistema deve cancelar o job sem realizar o dump da
memória.

DUMP
Indica que o sistema deverá cancelar o job com emissão do dump de
memória.

WARNING
Indica que o sistema deverá emitir uma mensagem para o operador
informado que a produção de impressão do job excedeu ao máximo.

16.13.3 Exemplos
//JOB1 JOB (123456),’R F B’,BYTES=(500,CANCEL)

//JOB2 JOB (123456),’R F B’,BYTES=40

16.14 Parâmetro CARDS

Usa-se o parâmetro CARDS:


Indica o máximo de cartões que pode ser produzido pelo job;
Especificar a ação que sistema tomará caso o número máximo seja
excedido;

- 45 -
16.14.1 Sintaxe

CARDS= {nnnnnnnn}
{([nnnnnnnn][,CANCEL])}
{([nnnnnnnn][,DUMP])}
{([nnnnnn]nn[,WARNING])}

16.14.2 Definição dos sub-parâmetros

nnnnnnnn
Indica o total máximo de cartões que pode ser produzido pelo job. O
valor pode ser de 0 a 99999999.

CANCEL
Indica que o sistema deve cancelar o job sem realizar o dump da
memória.

DUMP
Indica que o sistema deverá cancelar o job com emissão do dump de
memória.

WARNING
Indica que o sistema deverá emitir uma mensagem para o operador
informado que a produção de cartões do job excedeu ao máximo.

16.14.3 Exemplos
//JOB1 JOB (123456),’R F B’,CARDS=(500,CANCEL)

//JOB2 JOB (123456),’R F B’,CARDS=40000

16.15 Parâmetro PAGES

Usa-se o parâmetro PAGES:


Indica o máximo de páginas que pode ser produzido pelo job;
Especificar a ação que sistema tomará caso o número máximo seja
excedido;

16.15.1 Sintaxe

PAGES= {nnnnnnnn}
{([nnnnnnnn][,CANCEL])}
{([nnnnnnnn][,DUMP])}
{([nnnnnn]nn[,WARNING])}

16.15.2 Definição dos sub-parâmetros

nnnnnnnn

- 46 -
Indica o total máximo de páginas que pode ser produzido pelo job. O
valor pode ser de 0 a 99999999.

CANCEL
Indica que o sistema deve cancelar o job sem realizar o dump da
memória.

DUMP
Indica que o sistema deverá cancelar o job com emissão do dump de
memória.

WARNING
Indica que o sistema deverá emitir uma mensagem para o operador
informado que a produção de páginas do job excedeu ao máximo.

16.15.3 Exemplos
//JOB1 JOB (123456),’R F B’,PAGES=(500,CANCEL)

//JOB2 JOB (123456),’R F B’,PAGES=40000

16.16 Parâmetro LINES

Usa-se o parâmetro LINES:


Indica o máximo de linhas, em milhares de linhas, que pode ser
produzido pelo job;
Especificar a ação que sistema tomará caso o número máximo seja
excedido;

16.16.1 Sintaxe

CARDS= {nnnnnn}
{([nnnnnn][,CANCEL])}
{([nnnnnn][,DUMP])}
{([nnnnnn][,WARNING])}

16.16.2 Definição dos sub-parâmetros

nnnnnn
Indica o total máximo de linhas, em milhares de linhas, que pode ser
produzido pelo job. O valor pode ser de 0 a 999999.

CANCEL
Indica que o sistema deve cancelar o job sem realizar o dump da
memória.

DUMP
Indica que o sistema deverá cancelar o job com emissão do dump de
memória.
- 47 -
WARNING
Indica que o sistema deverá emitir uma mensagem para o operador
informado que a produção de linhas do job excedeu ao máximo.

16.16.3 Exemplos
//JOB1 JOB (123456),’R F B’,LINES=(500,CANCEL)

//JOB2 JOB (123456),’R F B’,LINES=40000

16.17 Parâmetro MEMLIMIT

O uso do parâmetro MEMLIMIT serve para definir o limite no número total


de páginas utilizáveis acima da barra para um único address space.

16.17.1 Sintaxe

MEMLIMIT= {nnnnnM}
{nnnnnG}
{nnnnnP}
{nnnnnT}
{NOLIMIT}

16.17.2 Definição dos sub-parâmetros

nnnnnM
nnnnnG
nnnnnP
nnnnnT
Indica o valor a ser usado como limite para o número total de páginas
utilizáveis pelo address space.

NOLIMIT
Indica que não existe limite para o total de páginas utilizáveis pelo
address space acima da barra.

16.17.3 Exemplos
//TEST JOB ’D83,123456’,MEMLIMIT=10000M

16.18 Parâmetro NOTIFY

O parâmetro NOTIFY é utilizado para solicitar ao sistema que envie uma


mensagem para o usuário quando o job termina o processamento.

16.18.1 Sintaxe

NOTIFY= {nodename.userid}
{userid}

- 48 -
{&SYSUID}

16.18.2 Definição dos sub-parâmetros

nodename.userid
Identifica o nome de um nó e um usuário TSO para aquele nó.

userid
Identifica o nome de um usuário que irá receber a mensagem de
finalização do job.

16.18.3 Exemplos
//SIGN JOB ,TKLOMP,NOTIFY=VMNODE.VMUSERID

//SIGN JOB ,TKLOMP,NOTIFY=&SYSUID

16.19 Parâmetro SCHENV

O parâmetro SCHENV é utilizado para especificar o nome de um scheduling


environment que o Workload Manager (WLM) deve associar para o job.
Um scheduling environment é uma lista de recursos que deve ser satisfeita
para o job.

16.19.1 Sintaxe

SCHENV=envir-name

16.19.2 Definição do sub-parâmetro

envir-name
Especifica o nome de um scheduling environment do WLM a ser
associado ao job.

16.19.3 Exemplos
//JOBA JOB 1,’STEVE HAMILTON’,SCHENV=DB2LATE

16.20 Parâmetro USER

O parâmetro USER deve ser especificado quando se quer associar um


usuário específico ao job diferente do usuário que está submetendo o job
para processamento.

16.20.1 Sintaxe

USER=usuário

16.20.2 Definição do sub-parâmetro

usuário
- 49 -
Especifica um usuário do sistema

16.20.3 Exemplos
//TEST JOB ’D83,123456’,USER=MYNAME,PASSWORD=ABCD

16.21 Parâmetro PASSWORD

O uso do parâmetro PASSWORD serve para especificar a password de um


usuário ou para alterar a password atual do usuário.

16.21.1 Sintaxe

PASSWORD={password[,new-password]}

16.21.2 Descrição dos sub-parâmetros

password
Especifica a password atual do usuário a ser validada pelo sistema.

new-password
Especifica a nova password a ser atribuída ao usuário especificado.

16.21.3 Exemplos
//TEST1 JOB ’D83,123456’,PASSWORD=ABCDE,USER=MYNAME

16.22 Parâmetro RESTART

Especifique o parâmetro RESTART para informar ao sistema a etapa, etapa


de uma procedure ou checkpoint pelo qual deve ser iniciado o job.

16.22.1 Sintaxe

RESTART= ({* }[,checkid] )


({stepname } )
({stepname.procstepname } )

16.22.2 Definição dos sub-parâmetros

*
Indica que o sistema deve inciar o job da primeira etapa identificada no
job, sendo ela no próprio input stream ou fazendo parte de uma
procedure in-stream ou catalogada.

stepname
Indica que o sistema deve iniciar o processamento do job da etapa
referenciada pelo nome no parâmetro stepname.

stepname.procstepname

- 50 -
Indica que o sistema deve iniciar o job do início de uma etapa em uma
procedure catalogada ou in-stream.

checkid
Indica o nome de um checkpoint pelo qual o sistema deve reiniciar a
execução do job.

16.22.3 Exemplos

Exemplo 1

//LINES JOB ’1/17/85’,RESTART=COUNT

Exemplo 2

//@LOC5 JOB ’4/11/86’,RESTART=(PROCESS,CHKPT3)


//SYSCHK DD DSNAME=CHK,UNIT=3330,DISP=OLD

Exemplo 2

//WORK JOB ,PORTER,RESTART=(*,CKPT2)


//SYSCHK DD DSNAME=CHKPT,UNIT=3330,DISP=OLD

- 51 -

Você também pode gostar