Escolar Documentos
Profissional Documentos
Cultura Documentos
Sobre o Tutorial
Job Control Language (JCL) é a língua do Multiple Virtual Storage (MVS), que é o sistema operacional comumente
usado em computadores mainframe IBM de comando. JCL identifica o programa a ser executado, as entradas que
são necessários e o local da entrada / saída, e informa o sistema operacional através de declarações de controle de
trabalho.
Em ambiente de mainframe, os programas podem ser executados em lote e modos online. JCL é usado para a
apresentação de um programa para execução em modo de lote.
Público
Este tutorial será útil para os programadores de software que gostariam de compreender os conceitos básicos de
Job Control Language. Além disso, este tutorial será útil para profissionais de mainframe aumentar o seu nível de
especialização em JCL.
Pré-requisitos
O tutorial é destinado a leitores que têm uma compreensão básica de gerenciamento de trabalho e gerenciamento
de dados em ambiente mainframe.
Todo o conteúdo e gráficos publicados neste e-book são propriedade dos Tutoriais ponto (I) Pvt. Ltd. O usuário
deste e-book é proibida a reutilização, reter, copiar, distribuir ou republicar qualquer conteúdo ou uma parte do
conteúdo deste e-book de qualquer maneira sem o consentimento por escrito do editor. Nós nos esforçamos para
atualizar o conteúdo de nosso site e tutoriais como oportuna e tão precisamente quanto possível, no entanto, o
conteúdo pode conter imprecisões ou erros. Tutoriais ponto (I) Pvt. Ltd. fornece nenhuma garantia quanto à
precisão, pontualidade, ou integridade de nosso site ou o seu conteúdo, incluindo este tutorial. Se você descobrir
erros no nosso site ou neste tutorial, por favor avise-nos em contact@tutorialspoint.com.
Eu
Job Control Language
Índice
Sobre o Tutorial ............................................... .................................................. ................................... Eu
ii
Job Control Language
iii
Job Control Language
iv
Job Control Language
1. JCL - PANORAMA
JCL é utilizado em ambiente mainframe para actuar como uma ponte entre um programa (Exemplo: COBOL,
assembler ou PL / I) e o sistema operativo. Em um ambiente de mainframe, os programas podem ser executados em
ambos modo de lote assim como modo online.
Dentro modo de lote, programas são submetidos ao sistema operacional como um trabalho através de um JCL. Por
exemplo, o processamento de transações bancárias através de um arquivo (Virtual Storage Access Method) VSAM e
aplicá-lo para as contas correspondentes é um sistema de lote. Em contraste, uma equipe do banco abrir uma conta
usando uma tela de back office é um exemplo de um sistema online.
Lote e processamento on-line diferem na maneira de receber suas entradas e pedidos de execução do programa.
No processamento em lote, estes parâmetros são alimentados para o JCL que por sua vez é recebido pelo sistema
operativo.
Processamento de trabalho
Um trabalho é uma unidade de trabalho que pode ser feita de muitas etapas de trabalho. Cada etapa de trabalho é especificado no
Job Control Language (JCL) através de um conjunto de Declarações de controle do trabalho.
Os usos do sistema operacional Sistema de Entrada de trabalho (JES) para receber trabalhos para o sistema
operacional, para programá-los para processamento, e para controlar a saída.
processamento de trabalho passa por uma série de etapas como dado abaixo:
1
Job Control Language
• Conversão de Tarefa - O JCL juntamente com o PROC é convertida em um texto interpretado a ser
compreendido por JES e armazenados em um conjunto de dados, o que chamamos de SPOOL.
• Queuing Job - JES decide a prioridade do trabalho com base em parâmetros de classe e prty na instrução
JOB. Os erros JCL são verificados e o trabalho está programado para a fila de trabalho se não há erros.
• Execução do trabalho - Quando o trabalho chega a sua maior prioridade, é levado para a execução da fila
de trabalho. A JCL é lida a partir do carretel, o programa é executado e a saída é redirecionada ao destino
de saída correspondente, conforme especificado no JCL.
• purga - Quando o trabalho estiver concluído, os recursos alocados e o espaço JES SPOOL é liberado. Para
armazenar o log de trabalho, é preciso copiar o registo de emprego para outro conjunto de dados antes de
ser liberado do carretel.
2
Job Control Language
2. JCL - configuração do ambiente
Um tal emulador é Hércules, que pode ser facilmente instalado no Windows, seguindo alguns passos simples como
dado abaixo:
• Baixe e instale o emulador Hercules, que está disponível no site para casa o Hércules -: www.hercules-390.eu
• Depois de instalar o pacote em uma máquina Windows, ele irá criar uma pasta como C: \ unidades
centrais.
• O guia completo sobre vários comandos para escrever e executar um JCL podem ser encontradas em
www.jaymoseley.com/hercules/installmvs/instmvs2.htm
Hercules é uma implementação de software de código aberto do mainframe System / 370 e ESA / 390 arquiteturas,
além de o mais recente 64-bit z / Architecture. Hercules é executado em Linux, Windows, Solaris, FreeBSD, e Mac
OS X.
Cada utilizador válido é dado um id de login para entrar na interface Z / OS (TSO / E ou ISPF). Na interface z / OS, o
JCL pode ser codificado e armazenado como um membro de um conjunto de dados particionados (PDS). Quando o
JCL é submetido, ele é executado ea saída é recebido como explicado na seção processamento de trabalho do
capítulo anterior.
3
Job Control Language
Estrutura de um JCL
// * (2)
// SYSIN DD * (6)
/* (7)
Descrição do Programa
(1) instrução JOB - Especifica as informações necessárias para o spool do trabalho, tais como ID de trabalho, a
prioridade de execução, user-id para ser notificado após a conclusão do trabalho.
(3) declaração EXEC - Especifica o PROC / programa a ser executado. No exemplo acima, um programa SORT está
sendo executada (ou seja, a classificação dos dados de entrada numa ordem particular)
(4) instrução DD Input - Especifica o tipo de entrada a ser passado para o programa mencionado em (3). No
exemplo acima, um ficheiro sequencial Física (PS) é passada como entrada no modo comum (DISP = SHR).
(5) instrução DD Output - Especifica o tipo de saída a ser produzido pelo programa após a execução. No exemplo
acima, um arquivo PS é criado. Se um
4
Job Control Language
declaração se estende para além da posição 70 em uma linha, então ele continua na linha seguinte, que deve
começar com "//" seguido por um ou mais espaços.
(6) Não pode haver outros tipos de instruções DD para especificar informações adicionais para o programa (No
exemplo acima: A condição SORT é especificado na declaração SYSIN DD) e para especificar o destino para o log
de erro / execução (Exemplo: SYSUDUMP / SYSPRINT). instruções DD pode ser contida em um (ficheiro
mainframe) ou como conjunto de dados em dados de transmissão (informação codificada dentro do JCL) como dado
no exemplo acima.
Todas as instruções JCL, exceto dados InStream começar com //. Deve haver pelo menos um espaço antes e
depois do trabalho, EXEC, e palavras-chave DD e não deve haver nenhum espaço no resto da declaração.
Cada uma das instruções JCL é acompanhada por um conjunto de parâmetros para ajudar o sistema operacional
para completar a execução do programa. Os parâmetros podem ser de dois tipos:
Parâmetros posicionais
Parâmetros de palavra-chave
• Parâmetros de palavra-chave são codificados após os parâmetros de posição, mas pode aparecer em qualquer
ordem. parâmetros de palavra-chave pode ser omitido, se não for necessário. A sintaxe genérica é palavra-chave = valor.
Exemplo: MSGCLASS = X, ou seja, o registo do trabalho é redireccionada para a bobina de saída após a conclusão
do trabalho.
• No exemplo acima, classe, MSGCLASS e notificar são parâmetros-chave de instrução JOB. Não pode
haver parâmetros-chave em declaração EXEC também.
Estes parâmetros foram detalhadas nos capítulos subsequentes, juntamente com exemplos apropriados.
5
Job Control Language
3. JCL - DEMONSTRAÇÃO DE TRABALHO
Declaração JOB é a primeira instrução de controle em um JCL. Isto dá a identidade do trabalho para o sistema
operacional (OS), no carretel e no programador. Os parâmetros na instrução JOB ajudar o OS em alocar o
programador direita, exigido tempo de CPU, e emissão de notificações para o usuário.
Sintaxe
A seguir está a sintaxe básica de uma instrução JOB JCL:
Descrição
Vamos dar uma olhada mais de perto os termos usados na sintaxe da instrução JOB acima.
Job-name
Ele dá um id para o trabalho enquanto enviá-lo para o sistema operacional. Pode ser do comprimento de 1 a 8 com
caracteres alfanuméricos e começa logo após //.
TRABALHO
Posicional-param
Parâmetros posicionais podem ser de dois tipos:
Parâmetro Descrição
posicional
Informação da Refere-se à pessoa ou grupo ao qual o tempo de CPU é devido. Ele é definido
conta de acordo com as regras da empresa possuir os mainframes. Se for
especificado como (*), em seguida, leva o ID do usuário, que tem atualmente
conectado ao Terminal Mainframe.
6
Job Control Language
Keyword-param
A seguir estão os vários parâmetros de palavra-chave, que podem ser usados em um comunicado TRABALHO.
Você pode usar um ou mais parâmetros (separados por vírgula) com base em suas necessidades.
Parâmetro de Descrição
palavra-chave
CLASSE
Com base no tempo de duração eo número de recursos requeridos pelo trabalho,
dos trabalhos. Algumas empresas têm classes diferentes para trabalhos em teste e
ambiente de produção.
CLASS = 0 a 9 | A a Z
prty
Para especificar a prioridade do trabalho dentro de uma classe trabalho. Se este
Prty = N
NOTIFICAR
O sistema envia a mensagem de sucesso ou fracasso
7
Job Control Language
seguir é a sintaxe:
JCL.
MSGCLASS
Para especificar o destino de saída para as mensagens de sistema e de trabalho
MSGCLASS = CLASSE
Os valores válidos de classe pode ser a partir de "A" a "Z" e "0" a "9". MSGCLASS = Y
pode ser definido como uma classe para enviar o log de trabalho para a JMR (Gestão
estatísticas de trabalho).
MSGLEVEL
Especifica o tipo de mensagens a serem gravados para o destino de saída
8
Job Control Language
TYPRUN
Especifica um processamento especial para o trabalho. A seguir é a sintaxe:
liberar um trabalho, "A" pode ser digitado contra o trabalho no spool, o que
TEMPO
Especifica o período de tempo a ser utilizado pelo processador para executar o
garantir que o programa não é executado por um longo tempo devido a erros de
looping, um parâmetro de tempo pode ser codificado para que o programa aborta
REGIÃO
Especifica o espaço de endereço necessário para executar uma etapa de trabalho dentro do
9
Job Control Language
REGIÃO = nK | nM
quilobyte, e M é megabyte.
Exemplo
// FUNÇÃO URMISAMP (*), "tutpoint", CLASSE = 6, prty = 10, AVISAR = & SYSUID,
Aqui, a declaração de trabalho está sendo estendido para além da posição 70 em uma linha, então continuamos na
próxima linha, que deve começar com "//" seguido por um ou mais espaços.
Parâmetros diversos
Há outros parâmetros que podem ser usados com uma declaração de trabalho, mas eles não são usados com
freqüência:
BYTES Tamanho de dados a ser escrito no registo de saída e a ação a ser tomada quando
o tamanho for excedido.
10
Job Control Language
COND e Estes são usados em processamento condicional etapa de trabalho e são explicados
RESTART em pormenor ao discutir condicional
em processamento.
11
Job Control Language
4. JCL - DEMONSTRAÇÃO EXEC
Cada JCL podem ser feitas de muitas etapas de trabalho. Cada etapa de trabalho pode executar um programa diretamente
ou pode chamar um procedimento, que por sua vez executa um ou mais programas (etapas de trabalho). A afirmação de
que mantém o programa de etapa de trabalho / informação procedimento é o declaração EXEC.
O objetivo da declaração EXEC é fornecer informações necessárias para o / procedimento programa executado na
etapa de trabalho. Parâmetros codificados nesta declaração pode
• passar parâmetros para o procedimento se a declaração EXEC chama um procedimento em vez de executar
diretamente um programa.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL EXEC:
Descrição
Vamos dar uma olhada de perto os termos utilizados na sintaxe da instrução EXEC acima.
PASSO-NAME
Ele identifica a etapa de trabalho dentro do JCL. Ele pode ser do comprimento de 1 a 8 com caracteres
alfanuméricos.
EXEC
Esta é a palavra-chave para identificá-lo como uma declaração EXEC.
12
Job Control Language
POSIÇÃO-PARAM
Parâmetros posicionais podem ser de dois tipos:
Parâmetro Descrição
posicional
PROC Refere-se ao nome do procedimento a ser executado na etapa de trabalho. Vamos discutir
isso em um capítulo separado.
KEYWORD-PARAM
A seguir estão os vários parâmetros de palavra-chave para declaração EXEC. Você pode usar um ou mais
parâmetros (separados por vírgula) com base em suas necessidades.
Parâmetro de Descrição
palavra-chave
PARM
Usado para fornecer dados parametrizados para o programa que está sendo executado na
etapa de trabalho. É um campo dependente programa e ele não tem regras definidas, a
não ser que o valor PARM tem de ser incluído dentro citação no caso de ter caracteres
especiais.
Dê uma olhada no exemplo dado no final deste capítulo. O "CUST1000" valor é passado
do programa.
ADDRSPC
Isto é usado para especificar se a etapa de trabalho exige armazenamento virtual ou real para
colocado na memória principal para execução. etapas de trabalho que requerem uma
13
Job Control Language
ACCT
Ele especifica as informações contábeis da etapa de trabalho. A seguir é a sintaxe:
na instrução JOB aplica-se a todas as etapas de trabalho onde um parâmetro ACCT não
Parâmetro de Descrição
palavra-chave
ADDRSPC ADDRSPC codificado em instrução JOB substitui a ADDRSPC codificado em declaração EXEC
de qualquer etapa de trabalho.
TEMPO Se o tempo é codificado em uma declaração EXEC, então aplica-se apenas que a etapa
de trabalho. Se for especificado tanto em instrução JOB e EXEC, então ambos estarão em
vigor e pode causar erro de tempo limite deve a ele. Não é recomendado usar parâmetro
TIME tanto o trabalho e declaração EXEC juntos.
REGIÃO
Se a região é codificado em uma declaração EXEC, então aplica-se apenas que a etapa de
trabalho.
14
Job Control Language
COND
Usado para controlar a execução etapa de trabalho baseado no returncode da etapa
anterior.
trabalho, o parâmetro COND da instrução JOB (se houver) é ignorado. Os vários testes
é explicado em condicional
Em processamento.
Exemplo
A seguir é um exemplo simples de um script JCL, juntamente com Jó e EXEC declarações:
// *
15
Job Control Language
5. JCL - DD DECLARAÇÃO
Conjuntos de dados são arquivos de mainframe com registros organizados em um formato específico. Conjuntos de dados são
armazenados em áreas de armazenamento básicos, tais como o dispositivo de armazenamento de acesso directo (DASD) ou fitas
de mainframe. Se forem necessários estes dados a serem usados / criado em um programa de lote, em seguida, o arquivo (ou
seja, conjunto de dados) nome físico junto com o formato e organização de arquivos são codificados em um JCL.
A definição de cada conjunto de dados usado na JCL é determinado usando o declaração DD.
Os recursos de entrada e saída exigidos por uma etapa de trabalho precisa ser descrito em uma instrução DD com
informações como a organização do conjunto de dados, os requisitos de armazenamento e tamanho de registro.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL DD:
// Parâmetros DD-nome DD
Descrição
Vamos dar uma olhada de perto os termos utilizados na sintaxe da instrução DD acima.
DD-NOME
A DD-NOME identifica o conjunto de dados ou de entrada / saída de recursos. Se este é um arquivo de entrada /
saída usado por um programa / Assembler COBOL, em seguida, o arquivo é referenciada por este nome dentro do
programa.
DD
Esta é a palavra-chave para identificá-lo como uma declaração DD.
PARÂMETROS
A seguir estão os vários parâmetros para uma instrução DD. Você pode usar um ou mais parâmetros (separados por
vírgula) com base em suas necessidades.
16
Job Control Language
Parâmetro Descrição
DSN
O parâmetro DSN se refere ao nome do conjunto de dados física de um conjunto de dados
comprimento de 44 caracteres
são excluídos na conclusão do trabalho. Tais conjuntos de dados são representados como DSN = &
Se um conjunto de dados temporária criada por uma etapa de trabalho é para ser usado na próxima
Referenciando.
DISP
O parâmetro DISP é usado para descrever o estado da base de dados, a disposição no
A seguir é a sintaxe:
17
Job Control Language
de acesso no conjunto de dados e nenhum outro trabalho pode acessar este conjunto de dados
conjunto de dados pode ser lido por vários trabalhos ao mesmo tempo. Exemplo:
ENTRADA1 e ENTRADA2.
• MOD: O conjunto de dados já está criado. Esta disposição será usado quando há
removido.
• GUARDA : O conjunto de dados é mantido sem alterar qualquer uma das entradas de
catálogo. MANTENHA é a única disposição válida para arquivos VSAM. Isso é para ser
18
Job Control Language
utilizado quando o conjunto de dados está a ser transmitida e processada pelo próximo passo do
trabalho em um JCL
Quando qualquer um dos sub-parâmetros de DISP não são especificados, os valores padrão
são os seguintes:
então é MANTENHA.
DCB
O parâmetro Bloco de Controle de Dados (DCB) detalha as características físicas de um
conjunto de dados. Este parâmetro é necessário para conjuntos de dados que são
RECFM é o formato de registro do conjunto de dados. RECFM pode manter os valores FB, V,
ou VB.
• FB é uma organização de bloco fixo onde os registros de uma ou mais lógicas são
BLKSIZE é o tamanho do bloco físico. Quanto maior o bloco, maior é o número de registros
19
Job Control Language
Quando há necessidade dos repetir os valores DCB de um conjunto de dados para outra
Verificar o exemplo dado no final deste capítulo onde RECFM = FB, LRECL = 80 forma o
ESPAÇO
O parâmetro ESPAÇO especifica o espaço necessário para o conjunto de dados na DASD
• seg: Este é o espaço adicional necessário, quando o espaço primário não está
sendo suficiente.
• RLSE: Isto é usado para liberar o espaço não utilizado na conclusão do trabalho.
UNIDADE
Os parâmetros da unidade e VOL estão listadas no catálogo do sistema para conjuntos de
dados catalogados e, portanto, pode ser acessado com apenas o nome DSN física. Mas
parâmetros. Para novos conjuntos de dados a ser criado, os parâmetros UNIDADE / vol ou
20
Job Control Language
Onde DASD significa dispositivo de armazenamento de acesso direto e SYSDA significa Sistema
VOL
O parâmetro VOL especifica o número de volume no dispositivo identificado pelo parâmetro
Onde v1, v2 são números de volume de série. Você pode usar a seguinte sintaxe assim:
Onde REF é a referência para trás, para o número de série do volume de um conjunto de
SYSOUT
Os parâmetros de instrução DD discutidos até agora corresponde a dados que estão sendo
SYSOUT = class
seguida, ele direciona a saída para o mesmo destino que o do parâmetro MSGCLASS na
instrução JOB.
21
Job Control Language
Exemplo
O exemplo que se segue faz uso de instruções DD, juntamente com vários parâmetros, como explicado acima:
// *
// *
// SAÍDA 2 DD SYSOUT = *
22
Job Control Language
6. JCL - biblioteca de base
Biblioteca de base é o particionado Dataset (PDS), que detém os módulos de carregamento do programa a ser
executado no JCL ou o procedimento catalogado, que é chamado no programa. bibliotecas base pode ser
especificado para todo o JCL numa JOBLIB biblioteca ou para uma etapa de trabalho específico em uma STEPLIB declaração.
Declaração JOBLIB
UMA JOBLIB declaração é usado para identificar a localização do programa a ser executado em um JCL. A
declaração JOBLIB é especificado após a declaração de trabalho e antes da instrução EXEC. Isso pode ser usado
somente para os procedimentos e programas InStream.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL JOBLIB:
A declaração JOBLIB é aplicável a todas as declarações EXEC dentro do JCL. O programa especificado na
instrução EXEC será procurado na biblioteca JOBLIB seguido da biblioteca do sistema.
Por exemplo, se a instrução EXEC está executando um programa COBOL, o módulo de carregamento do programa
COBOL deve ser colocada dentro da biblioteca JOBLIB.
Declaração STEPLIB
UMA STEPLIB declaração é usado para identificar a localização do programa a ser executado dentro de uma etapa
de trabalho. A instrução STEPLIB é especificado após a instrução EXEC e antes da declaração DD da etapa de
trabalho.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL STEPLIB:
O programa especificado na instrução EXEC será procurado na biblioteca STEPLIB seguido da biblioteca do
sistema. STEPLIB codificado em uma etapa de trabalho substitui a declaração JOBLIB.
23
Job Control Language
Exemplo
O exemplo seguinte mostra o uso de declarações JOBLIB e STEPLIB:
// *
// *
// *
Aqui, o módulo de carga do MYPROG1 programa (no passo 1) é pesquisada no MYPROC.SAMPLE.LIB1. Se não
for encontrado, ele é procurado na biblioteca do sistema. Em STEP2, STEPLIB substitui JOBLIB eo módulo de carga
do MYPROG2 programa é procurado em MYPROC.SAMPLE.LIB2 e, em seguida, na biblioteca do sistema.
include
Um conjunto de instruções JCL codificados dentro de um membro de um PDS pode ser incluído em um usando um
JCL INCLUIR declaração. Quando o JES interpreta o JCL, o conjunto de instruções JCL dentro do membro INCLUIR
substitui a instrução include.
Sintaxe
A seguir está a sintaxe básica de um JCL INCLUDE:
24
Job Control Language
O principal objetivo de ter um include declaração é reutilização. Por exemplo, arquivos comuns para ser usado em
muitos JCL pode ser codificado como instruções DD dentro de um membro do INCLUEM e utilizados de JCL.
demonstrações manequim DD, especificações do cartão de dados, PROC, trabalho, demonstrações PROC não pode ser
codificada dentro de um membro INCLUEM. Uma declaração inlcude podem ser codificados dentro de um membro do
INCLUEM e mais de nidificação pode ser feito até 15 níveis.
Declaração JCLLIB
UMA JCLLIB declaração é usada para identificar as bibliotecas particulares utilizados no trabalho. Ele pode ser usado tanto
com ecológica e procedimentos catalogados.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL JCLLIB:
As bibliotecas especificadas na instrução JCLLIB serão pesquisados na ordem dada para localizar os programas,
procedimentos e INCLUIR membro usado no trabalho. Pode haver apenas uma instrução JCLLIB em um JCL,
especificado após uma declaração de trabalho e antes de EXEC e INCLUDE, mas não podem ser codificados dentro
de um membro INCLUDE.
Exemplo
No exemplo a seguir, o MYPROG3 programa eo MYINCL INCLUIR membro são pesquisados na ordem de
MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, biblioteca de sistema.
// *
// *
25
Job Control Language
// *
26
Job Control Language
7. JCL - PROCEDIMENTOS
Procedimentos JCL são um conjunto de comandos dentro de uma JCL agrupadas para realizar uma função
específica. Normalmente, a parte fixa do JCL é codificada por um processo. A parte variável do trabalho está
codificada dentro da JCL.
Você pode usar um procedimento para obter execução paralela de um programa usando vários arquivos de entrada. A
JCL podem ser criados para cada arquivo de entrada, e um único procedimento pode ser chamado simultaneamente,
passando o nome do arquivo de entrada como um parâmetro simbólico.
Sintaxe
A seguir está a sintaxe básica de uma definição do procedimento JCL:
// *
O conteúdo do processo são realizadas dentro da JCL para um procedimento de fluxo. Os conteúdos são mantidos
dentro de um membro diferente da biblioteca de base para um procedimento catalogado. Este capítulo vai explicar
dois tipos de procedimentos disponíveis em JCL e, finalmente, vamos ver como podemos aninhar vários
procedimentos.
Instream Procedimento
// *
// SYSOUT DD = * SYSOUT
27
Job Control Language
// *
// *
// *
No exemplo acima, o INSTPROC procedimento é chamado em STEP1 STEP2 e usando diferentes arquivos de
entrada. O DSNAME parâmetros e DATAC podem ser codificadas com diferentes valores ao chamar o procedimento
e estes são chamados como parâmetros simbólicos. A entrada variando ao JCL tais como nomes de ficheiros,
cartões de dados, valores PARM, etc., são transmitidos como parâmetros simbólicos para os procedimentos.
Enquanto a codificação parâmetros simbólicos, não use palavras-chave, parâmetros, ou sub-parâmetros como
nomes simbólicos. Exemplo: Não use TIME = & TIME mas você pode usar TIME = & TM e assume-se como a
maneira correta de codificação simbólica.
parâmetros simbólicos definidos pelo usuário são chamados JCL símbolos. Há determinados símbolos chamados símbolos
do sistema, que são usados para execuções de trabalho logon. O único símbolo sistema usado em trabalhos em
lote por usuários normais é & SYSUID e isso é usado na AVISAR parâmetro na instrução JOB.
Procedimento Catalogado
Quando o processo é separada a partir do JCL e codificado num armazenamento de dados diferentes, é chamado um Catalogado
Procedimento. Uma declaração PROC não é obrigatório a ser codificado em um procedimento catalogado. A seguir é
um exemplo de JCL onde ele está chamando um procedimento CATLPROC:
// *
28
Job Control Language
Aqui, o procedimento CATLPROC está catalogado no MYCOBOL.BASE.LIB1. PROG, DATAC e DSNAME são
passados como parâmetros simbólicos para o procedimento CATLPROC.
// *
// OUT1 DD = * SYSOUT
// SYSOUT DD = * SYSOUT
// *
No âmbito do procedimento, os parâmetros simbólicos PROG e BASELB está codificada. Note que o parâmetro
PROG dentro do procedimento é substituído pelo valor no JCL e, portanto, PGM assume o valor CATPRC1 durante
a execução.
procedimentos aninhados
// *
29
Job Control Language
// SYSOUT DD = * SYSOUT
// *
// *
// SYSOUT DD = * SYSOUT
// *
// *
No exemplo acima, o JCL chama o procedimento INSTPRC1 em JSTEP1 eo INSTPRC2 procedimento está sendo
chamado dentro do procedimento INSTPRC1. Aqui, a saída de INSTPRC1 (SORTOUT) é passada como entrada
(SORTIN) para INSTPRC2.
UMA declaração SET é usado para definir simbólica comumente usados em etapas de trabalho ou procedimentos.
Ele inicializa os valores anteriores nos nomes simbólicos. Tem que ser definido antes da primeira utilização dos
nomes simbólicos no JCL.
Vamos ter um olhar para a seguinte descrição para entender um pouco mais sobre o programa acima:
30
Job Control Language
31
Job Control Language
8. JCL - processamento condicional
O Sistema de Entrada Job utiliza duas abordagens para realizar processamento condicional em um JCL. Quando um
trabalho é concluído, um código de retorno é definido com base no estado de execução. O código de retorno pode ser
um número entre 0 (execução bem sucedida) para 4095 (diferente de zero mostra condição de erro). Os valores
convencionais mais comuns são:
• 0 = Normal - tudo OK
• 4 = Aviso - pequenos erros ou problemas.
• 8 = Erro - erros ou problemas significativos.
• 12 = erro grave - grandes erros ou problemas, os resultados não devem ser confiáveis.
A execução etapa de trabalho pode ser controlada com base no código de retorno do passo anterior (s) usando o COND
parâmetro e IF-THEN-ELSE construir, o que foi explicado neste tutorial.
parâmetro COND
UMA COND parâmetro pode ser codificado no emprego ou EXEC declaração de JCL. É um teste no código de
retorno das etapas do trabalho anterior. Se o teste é avaliado para ser verdade, a execução atual etapa de trabalho
é ignorada. Ignorando é apenas omissão da etapa de trabalho e não uma finalização anormal. Não pode ser, no
máximo, oito condições combinadas em um único teste.
Sintaxe
A seguir está a sintaxe básica de um JCL COND Parâmetro:
ou
ou
COND = MESMO
ou
COND = SOMENTE
32
Job Control Language
• lógico-operador: Isso pode ser GT (Maior que), GE (maior ou igual a), EQ (igual a), LT (menor do que), LE
(menor ou igual a), ou NE (não igual a).
As duas últimas condições (a) COND = MESMO e (b) COND = SOMENTE, foram explicados abaixo neste tutorial.
O COND pode ser codificado quer dentro da instrução TRABALHO ou a instrução EXEC, e em ambos os casos, que se
comporta de modo diferente, como explicado abaixo:
// *
33
Job Control Language
// *
// STP03 EXEC PGM = IEBGENER, COND = ((10, LT, STP01), (10, GT, STP02))
COND = MESMO
Quando COND = MESMO é codificado, a etapa de trabalho atual é executado, mesmo se nenhuma das etapas anteriores
anormalmente terminar. Se qualquer outra condição RC é codificado juntamente com COND = MESMO, em seguida, a etapa de
trabalho é executada se nenhuma das condições RC é verdade.
// *
34
Job Control Language
COND = SOMENTE
Quando COND = Apenas é codificado, a etapa de trabalho atual é executado, somente quando qualquer uma das etapas anteriores
anormalmente terminar. Se qualquer outra condição RC é codificado juntamente com COND = SOMENTE, em seguida, a etapa de
trabalho é executada se nenhuma das condições RC é verdadeiro e qualquer uma das etapas de trabalho anteriores falhar de forma
anormal.
// *
IF-THEN-ELSE Construir
Outra abordagem para controlar o processamento do trabalho é usando construções IF-THEN-ELSE. Esta é uma
maneira flexível e user-friendly de processamento condicional.
35
Job Control Language
Sintaxe
A seguir está a sintaxe básica de uma construção JCL IF-THEN-ELSE:
// nome do ELSE
// nome do ENDIF
• nome: Isto é opcional e um nome pode ter de 1 a 8 caracteres alfanuméricos começando com alfabeto, #, $
ou @.
• estado: Uma condição terá um formato: VALOR DO OPERADOR PALAVRA-CHAVE, Onde PALAVRAS-CHAVE
pode ser RC (código de retorno), ABENDCC (sistema ou código de conclusão do usuário), ABEND, RUN
(etapa começou execução). A OPERADOR pode ser um operador lógico (AND (&), OR (|)) ou um operador
relacional (<, <=,>,> =, <>).
Exemplo
A seguir é um exemplo simples que mostra o uso de IF-THEN-ELSE:
// *
// PRC1 PROC
// PEND
36
Job Control Language
// FIM SE
// FIM SE
// OUTRO
// FIM SE
// FIM SE
// OUTRO
// FIM SE
Vamos tentar olhar para o programa acima para compreendê-lo em um pouco mais detalhadamente:
• O código de retorno de STP01 é testado em IF1. Se for 0, então STP02 é executado. Else, o
processamento vai para a próxima instrução IF (IF2).
• Em IF3, Se STP03b não ABEND, então STP04 é executado. Em MAIS, não há declarações. Ele é
chamado uma declaração ELSE NULL.
37
Job Control Language
• Em IF5, se o Pst1 proc-passo para PROC PRC1 em JobStep STP05 ABEND, então STP06 é executado.
STP07 Else é executado.
• Se IF4 avaliada como falsa, então STP05 não é executado. Nesse caso, IF5 não são testados e os passos
STP06, STP07 não são executados.
O IF-THEN-ELSE não será executada no caso de encerramento anormal do trabalho, tais como o usuário cancelar o
trabalho, expiração do tempo de trabalho, ou um conjunto de dados está para trás referenciados a um passo que é
ignorada.
Você pode definir um posto de controle dataset dentro do seu programa JCL
utilização SYSCKEOV, que é uma declaração DD.
UMA chkpt é o parâmetro codificado para conjuntos de dados QSAM multi-volume em um comunicado DD. Quando um
chkpt está codificada como chkpt = EOV, um ponto de verificação é escrito para o conjunto de dados especificado na
instrução SYSCKEOV no final de cada volume da entrada / saída do conjunto de dados de vários volumes.
// *
No exemplo acima, um posto de controlo é escrito na SAMPLE.CHK conjunto de dados no final de cada volume do
sample.out conjunto de dados de saída.
Reiniciar Processamento
Você pode reiniciar o processamento automaticamente, usando o parâmetro RD ou manualmente, utilizando o parâmetro
RESTART.
parâmetro RD é codificado na instrução JOB ou EXEC e ajuda na automatizado reinicie o trabalho / STEP e pode
conter um dos quatro valores: R, RNC, NR, ou NC.
38
Job Control Language
• RD = NR especifica que o trabalho / passo não pode ser reiniciado automaticamente. Mas quando ele é
reiniciado manualmente usando o parâmetro RESTART, parâmetro chkpt (se houver) serão consideradas.
Se há uma exigência para fazer o reinício automático de códigos de abend específicos apenas, então ele pode ser
especificadas no SCHEDxx membro da biblioteca parmlib sistema IBM.
parâmetro RESTART é codificado na instrução JOB ou EXEC e ajuda na reinicialização manual da JOB / STEP
depois do fracasso trabalho. RESTART pode ser acompanhado com um checkid, que é o ponto de verificação
escrito no conjunto de dados codificados na demonstração SYSCKEOV DD. Quando um checkid é codificado, a
declaração SysChk DD deve ser codificado para fazer referência ao conjunto de dados posto de controle após a
declaração JOBLIB (se houver), senão após a instrução JOB.
// *
No exemplo acima, é o chk5 checkid, ou seja, STP01 é reiniciada no checkpoint5. Note-se que uma declaração
SysChk é adicionado e declaração SYSCKEOV é comentada no programa anterior explicado em Definindo seção
Checkpoint.
39
Job Control Language
9. JCL - DEFINIÇÃO DATASETS
Um nome de conjunto de dados especifica o nome de um arquivo e é denotado por DSN no JCL. O parâmetro DSN
se refere ao nome do conjunto de dados física de um conjunto de dados recém-criado ou existente. O valor DSN
pode ser composta de sub-nomes de cada um 1 a 8 caracteres de comprimento, separadas por períodos e de
comprimento total de 44 caracteres alfanuméricos (). A seguir é a sintaxe:
conjuntos de dados temporários precisar de armazenamento apenas para a duração do trabalho e são excluídos na conclusão do
trabalho. Tais conjuntos de dados são representados como DSN = & Nome ou simplesmente sem um DSN especificado.
Se um conjunto de dados temporária criada por uma etapa de trabalho é para ser usado na próxima etapa de trabalho, então ele
é referenciado como DSN = *. Stepname.ddname. Isso é chamado Referenciando para trás.
Se houver mais do que um conjunto de dados com o mesmo formato, eles podem ser concatenadas e passou como uma
entrada para o programa em um único nome DD.
// *
No exemplo acima, três conjuntos de dados são concatenadas e passado como entrada para o programa de
classificação no nome SORTIN DD. Os arquivos são mesclados, classificado nos campos chave especificada e, em
seguida, escrito para um único SAMPLE.OUTPUT arquivo de saída em nome SORTOUT DD.
40
Job Control Language
Em um JCL padronizada, o programa a ser executado e seus conjuntos de dados relacionados são colocados dentro de
um procedimento catalogado, o que é chamado no JCL. Normalmente, para fins de teste ou para uma correção
incidente, pode haver a necessidade de utilizar diferentes que não sejam os especificados no procedimento catalogado
conjuntos de dados. Nesse caso, o conjunto de dados no procedimento pode ser substituído no JCL.
// *
// *
// *
// *
// OUT1 DD = * SYSOUT
// SYSOUT DD = * SYSOUT
// *
No exemplo acima, o IN1 conjunto de dados usa o MYDATA.URMI.INPUT arquivo no PROC, que é substituído no JCL.
Assim, o arquivo de entrada usado na execução é MYDATA.OVER.INPUT. Note-se que o conjunto de dados é referido
como STEP1.IN1. Se houver apenas um passo no JCL / PROC, em seguida, o conjunto de dados pode ser referido
com apenas o nome DD. Da mesma forma, se houver mais do que um passo no JCL, em seguida, o conjunto de dados
deve ser substituído como JSTEP1.STEP1.IN1.
41
Job Control Language
// *
// DD DUMMY
// DD DUMMY
// *
No exemplo acima, a partir dos três conjuntos de dados concatenados em IN1, o primeiro é sobreposto na JCL e o
resto é mantido em que estejam presentes em Proc.
Geração de Grupos de Dados (GDGs) são um grupo de conjuntos de dados relacionados entre si por um nome
comum. O nome comum é conhecido como base de GDG e cada conjunto de dados associado com a base é chamado
de versão GDG.
As versões GDG pode ter iguais ou diferentes parâmetros DCB. Um DCB modelo inicial pode ser definido para ser
usado por todas as versões, mas pode ser substituído durante a criação de novas versões.
// SYSPRINT DD SYSOUT = *
// SYSIN DD *
LIMITE (7) -
42
Job Control Language
NOEMPTY -
COÇAR, ARRANHÃO)
/*
// UNIDADE = SYSDA,
//
No exemplo acima, a utilidade IDCAMS define a base GDG em GDGSTEP1 com os seguintes parâmetros passados
na demonstração SYSIN DD:
• LIMITE especifica o número máximo de versões que a base GDG pode conter.
• NOSCRATCH não exclua o conjunto de dados, ou seja, ele pode ser chamado usando os parâmetros da
unidade e VOL.
Em GDGSTEP2, IEFBR14 utilidade especifica parâmetros DD modelo a ser utilizados por todas as versões.
IDCAMS pode ser utilizada para alterar os parâmetros de definição de um GDG tais como aumentar o limite,
mudando vazio para NOEMPTY, etc, e suas versões relacionadas utilizando o comando SYSIN ALTER
MYDATA.URMI.SAMPLE.GDG LIMITE (15) VAZIO.
43
Job Control Language
No exemplo acima, a última versão do MYDATA.URMI.SAMPLE.GDG é excluído. Note que o parâmetro DISP na
conclusão do trabalho normal é codificado como DELETE. Assim, o conjunto de dados é excluído quando o trabalho
for concluído execução.
IDCAMS pode ser usado para excluir o GDG e suas versões relacionadas com o comando SYSIN APAGAR
(MYDATA.URMI.SAMPLE.GDG) GDG FORÇA / purga.
• FORÇA exclui as versões GDG e da base GDG. Se qualquer uma das versões GDG são ajustados com
uma data de validade que ainda é a expirar, em seguida, aqueles que não são eliminados e, portanto, a
base GDG é retida.
No exemplo a seguir, a última versão do MYDATA.URMI.SAMPLE.GDG é usado como entrada para o programa e
uma nova versão do MYDATA.URMI.SAMPLE.GDG é criado como a saída.
// *
MYDATA.URMI.SAMPLE.GDG.G0001V00, então isso leva a mudar o JCL cada vez antes da execução. Usando (0)
e (1) faz com que seja dinamicamente substituir a versão GDG para execução.
44
Job Control Language
10. JCL - Entrada / métodos de saída
Qualquer programa de lote executado através de um JCL requer entrada de dados, que é processado e uma saída é
criado. Existem diferentes métodos de alimentação de entrada para o programa de e escrever saída recebida a partir
de um JCL. No modo de lote, não há interacção do utilizador requerida, mas os dispositivos de entrada e de saída e
a organização requerida são definidos em JCL e submetido.
Existem várias maneiras para alimentar os dados para um programa usando JCL e estes métodos têm sido
explicadas abaixo:
DADOS ECOLÓGICA
dados InStream para um programa podem ser especificados usando uma instrução SYSIN DD.
//* Exemplo 1:
// SYSIN DD *
// CUST1 1000
// Cust2 1001
/*
// *
// * Exemplo 2:
45
Job Control Language
// *
No Exemplo 1, a entrada para myprog é passado através SYSIN. Os dados são fornecidos dentro do JCL. Dois
registros de dados são passados para o programa. Note-se que / * marca o fim dos dados ecológica SYSIN.
"CUST1 1000" é record1 e "Cust2 1001" é RECORD2. Fim da condição de dados é satisfeito quando o símbolo / * é
encontrado durante a leitura dos dados.
Conforme mencionado na maioria dos exemplos em capítulos anteriores, a entrada de dados para um programa pode ser
fornecido através de PS, VSAM, ou arquivos de GDG, com parâmetros de nome DSN e DISP relevantes juntamente com
instruções DD.
No Exemplo 1, SAMPLE.INPUT1 é o ficheiro de entrada através da qual os dados são passados para myprog. É
referido como IN1 dentro do programa.
A saída de um JCL pode ser catalogada em um conjunto de dados ou transmitido para o SYSOUT. Como
mencionado no capítulo declarações DD, SYSOUT = * redireciona a saída para a mesma classe como a mencionada
no parâmetro MSGCLASS da instrução JOB.
logs de tarefas também podem ser salvos em um conjunto de dados, ao mencionar um conjunto de dados já criado para
SYSOUT e SYSPRINT. Mas o log trabalho inteiro não pode ser capturado através desta forma (ou seja, JESMSG não
será catalogado) como feito em JMR ou XDC.
46
Job Control Language
// *
// OUT1 DD = * SYSOUT
// *
47
Job Control Language
11. JCL - RUN COBOL programas usando JCL
Existem muitos utilitários de compilador de mainframe disponíveis para compilar um programa COBOL. Algumas
empresas corporativas usar Change Management Ferramentas
gostar endevor, que compila e armazena todas as versões do programa. Isto é útil no rastreamento das alterações
feitas no programa.
// *
// SYSPRINT DD SYSOUT = *
// *
IGYCRCTL é um utilitário compilador IBM COBOL. As opções do compilador são passados através do parâmetro
PARM. No exemplo acima, instrui o compilador RMODE para utilizar o modo de endereçamento relativo no
programa. O programa COBOL é passado através do parâmetro SYSIN eo caderno é a biblioteca usada pelo
programa em SYSLIB.
Este JCL produz o módulo de carregamento do programa de saída, que é usado como entrada para a execução
JCL.
No seguinte exemplo JCL, o myprog programa é executado usando o MYDATA.URMI.INPUT arquivo de entrada e
produz dois arquivos de saída escritos para o carretel.
48
Job Control Language
//
// OUT1 DD = * SYSOUT
// OUT2 DD = * SYSOUT
// SYSIN DD *
// CUST1 1000
// Cust2 1001
/*
O módulo de carga de myprog está localizado na MYDATA.URMI.LOADLIB. Isto é importante notar que a acima JCL
pode ser usado por apenas um módulo de COBOL não-DB2.
A entrada de dados para um programa de lote COBOL pode ser através de arquivos, parâmetro PARAM e
declaração SYSIN DD. No exemplo acima:
• registros de dados são passados para myprog através MYDATA.URMI.INPUT arquivo. Este arquivo será
designado no programa usando o nome INPUT1 DD. O arquivo pode ser aberto, ler, e fechou no programa.
• Os dados ACCT5000 parâmetro PARM é recebido na seção de vinculação do myprog programa em uma
variável definida dentro dessa seção.
Para a execução de programas DB2 COBOL, utilitário especializado IBM é usado no programa JCL; a região DB2 e
os parâmetros necessários são passados como entrada para o utilitário.
49
Job Control Language
• Quando um programa COBOL-DB2 é compilado, um DBRM (Banco de Dados Request Module) é criado
junto com o módulo de carga. O DBRM contém as instruções SQL dos programas COBOL com sua sintaxe
verificada a ser corretas.
• O DBRM está ligada à região do DB2 (ambiente), na qual corre COBOL. Isso pode ser feito usando o
utilitário IKJEFT01 em um JCL.
• Após o passo de ligação, o programa COBOL-DB2 é executado utilizando IKJEFT01 (novamente) com a biblioteca
de carregamento e a biblioteca DBRM como a entrada para o JCL.
// *
// *
// arquivos de entrada
// arquivos de saída
// SYSPRINT DD SYSOUT = *
// SYSABOUT DD SYSOUT = *
// SYSDBOUT DD SYSOUT = *
// SYSUDUMP DD SYSOUT = *
// exibe DD SYSOUT = *
// SYSOUT DD SYSOUT = *
// SYSTSPRT DD SYSOUT = *
// SYSTSIN DD *
Executar o programa (MYCOBB) PLANO (PLANNAME) PARM (parâmetros para programa cobol) -
LIB ( 'MYDATA.URMI.LOADLIB')
FIM
/*
50
Job Control Language
No exemplo acima, MYCOBB é o programa COBOL-DB2 execução usando IKJEFT01. Note que o nome do
programa, DB2 Sub-System ID (SSID), o nome do Plano de DB2 são passados dentro da instrução SYSTSIN DD. A
biblioteca DBRM é especificado no STEPLIB.
51
Job Control Language
12. JCL - programas utilitários
programas utilitários são programas pré-escrita, amplamente utilizado em mainframes por programadores de
sistema e desenvolvedores de aplicativos para atender às exigências do dia-a-dia, organização e manutenção de
dados. Alguns deles estão listados abaixo com a sua funcionalidade:
IEHPROGM Excluindo e renomeando conjuntos de dados; catálogo ou outros que VSAM conjuntos de
dados UNCATALOG.
IEFBR14
Nenhum utilitário operação. Usado para retornar o controle para o usuário e terminar. É
normalmente usado para criar dataset vazio ou excluir um conjunto de dados existente.
Por exemplo, se um conjunto de dados é transmitido como entrada para um programa IEFBR14
com DISP = (OLD, apagar, apagar), o conjunto de dados é eliminada na conclusão do trabalho.
IEBEDIT Usado para copiar partes selecionadas de um JCL. Por exemplo, se um JCL tem
cinco passos e que exigem para executar o passo 1 e 3 só, em seguida, uma
IEBEDIT JCL pode ser codificada com um conjunto de dados que contém o JCL real
a ser executado. No SYSIN de IEBEDIT, podemos especificar STEP1 e STEP3 como
parâmetros. Quando isso JCL é executado, ele executa o
52
Job Control Language
IDCAMS Criar, excluir, renomear, catálogo, conjuntos de dados UNCATALOG (exceto PDS). Normalmente
usado para gerenciar conjuntos de dados VSAM.
Estes programas utilitários precisa para ser usado com instruções DD apropriados em um JCL, a fim de atingir a
funcionalidade especificado.
DFSORT Overview
DFSORT é um poderoso utilitário IBM usado para copiar, classificar, ou mesclar conjuntos de dados. SORTIN e SORTINnn DD
declarações são usadas para especificar conjuntos de dados de entrada. SORTOUT e Outfil declarações são usadas para
especificar dados de saída.
declaração SYSIN DD é usado para especificar o tipo e mesclar condições. DFSORT é geralmente utilizado para
obter as seguintes funcionalidades:
• SORT o ficheiro (s) de entrada na ordem da posição do campo especificado (s) no ficheiro.
• Incluir ou omitir registos do ficheiro (s) de entrada com base na condição especificada.
• SORT MERGE ficheiro (s) de entrada na ordem da posição do campo especificado (s) no ficheiro.
• SORT unir dois ou mais arquivos de entrada com base em um determinado Cadastre-CHAVE (campo (s) em cada arquivo de entrada).
• Quando há processamento adicional a ser feito sobre os arquivos de entrada, um programa de saída do usuário
pode ser chamado a partir do programa SORT. Por exemplo, se houver um cabeçalho / trailer para ser adicionado
ao arquivo de saída, em seguida, um programa COBOL USUÁRIO escrita pode ser chamado a partir do programa
SORT para executar esta funcionalidade. Usando um cartão de controle, os dados podem ser transferidos para o
programa COBOL.
• No contrário, uma espécie pode ser chamado internamente de um programa COBOL para organizar o
arquivo de entrada em uma ordem específica antes de ser processado. Normalmente, isso não é
recomendado em vista do desempenho para arquivos grandes.
53
Job Control Language
ICETOOL Overview
ICETOOL é um multiusos DFSORT utilizado para realizar uma variedade de operações em conjuntos de dados.
conjuntos de dados de entrada e saída pode ser definida usando nomes DD definidas pelo usuário. As operações de
arquivo são especificados na instrução toolin DD. Condições adicionais pode ser especificada em declarações 'CTL'
DD definidos pelo utilizador.
• SPLICE é uma poderosa operação de ICETOOL que é semelhante para classificar JOIN, mas com características
adicionais. Pode comparar dois ou mais arquivos no campo (s) especificado e criar um ou mais arquivos de saída
como arquivo com registros correspondentes, arquivo com registros não correspondentes, etc.
• Dados em um arquivo em uma posição particular podem ser cobertos em outra posição na mesma ou em
diferentes arquivos.
• Um arquivo pode ser dividido em n arquivos com base em uma condição especificada. Por exemplo, um arquivo
contendo os nomes dos funcionários pode ser dividido em 26 arquivos, cada um contendo os nomes começando com
A, B, C, e assim por diante.
• combinação diferente de manipulação de arquivos é possível usando ICETOOL com um pouco de exploração
da ferramenta.
SYNCSORT Overview
SYNCSORT é usado para copiar, mesclar ou classificar conjuntos de dados com alto desempenho. Ele dá a melhor
utilização dos recursos do sistema e operação eficiente em espaços de endereçamento de 32 bits e de 64 bits.
Ele pode ser utilizado nas mesmas linhas de DFSORT e pode atingir as mesmas características. Ele pode ser invocado por um
JCL ou a partir de dentro de um programa codificado em COBOL, PL / 1, ou linguagem Assembler. Ele também suporta
programas de saída de usuário para ser chamado a partir do programa SYNCSORT.
truques de classificação utilizados com frequência usando estes utilitários são explicados no próximo capítulo. exigências
complexas que requerem grande programação em COBOL / MONTADORA pode ser conseguido usando os utilitários
acima em passos simples.
54
Job Control Language
13. JCL - TRUQUES SORT BÁSICOS
Os requisitos de aplicações do dia-a-dia em um mundo corporativo que pode ser conseguido usando programas de
utilidade são ilustrados abaixo:
1. Um arquivo tem 100 registros. Os primeiros 10 registros precisam ser escritos para o arquivo de saída.
// TOOLMSG DD SYSOUT = *
// DFSMSG DD SYSOUT = *
// OUT1 DD = * SYSOUT
// toolin DD *
/*
// CTL1CNTL DD *
OPÇÃO STOPAFT = 10
/*
O STOPAFT opção irá parar de ler o arquivo de entrada após o registro 10 e termina o programa. Assim, 10
registros são escritos para a saída.
2. O arquivo de entrada tem um ou mais registros de mesmo número de funcionários. Escrever registros
// SYSOUT DD SYSOUT = *
// SORTOUT DD SYSOUT = *
// SYSIN DD *
55
Job Control Language
/*
SUM CAMPOS = NONE remove duplicados em campos especificados em campos de classificação. No exemplo acima,
o número do empregado está na posição de campo de 1,15. O arquivo de saída conterá os números de funcionários
únicos classificados em ordem crescente.
// SORTOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// SYSOUT DD SYSOUT = *
// SYSIN DD *
opção de cópia
/*
No arquivo de entrada, o conteúdo na posição 1,6 é substituído na posição 47,6 e depois copiado para o arquivo de
saída. operação de OVERLAY INREC é utilizado, a fim de reescrever os dados no arquivo de entrada antes de
copiar para a saída.
// SORTIN DD *
data1
data2
data3
/*
56
Job Control Language
// SORTOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// SYSOUT DD SYSOUT = *
// SYSIN DD *
opção de cópia
/*
A saída será:
data1 1000
data2 1002
data3 1004
número de sequência de 4 dígitos é adicionado na saída na posição 10, a partir de 1000, e incrementada por dois
para cada ficha.
// SORTIN DD *
data1
data2
data3
/*
// SORTOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// SYSOUT DD SYSOUT = *
// SYSIN DD *
57
Job Control Language
Outfil REMOVECC,
/*
A saída será:
HDR 20110131
data1
data2
data3
TRL 000000003
TOT calcula o número de registros no arquivo de entrada. HDR e TRL são adicionados como identificadores de cabeçalho /
trailer, que é definida pelo usuário e pode ser personalizado de acordo com as necessidades dos usuários.
6. Processamento Condicional
// SORTIN DD *
data1select
data2
data3select
/*
// SORTOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// SYSOUT DD SYSOUT = *
// SYSIN DD *
INREC IfThen = (QUANDO = (6,1, CH, NE, C' '), CONSTRUIR = (1: 1,15),
IfThen = (QUANDO = (6,1, CH, EQ, C' '), CONSTRUIR = (1: 1,5,7: C'EMPTY ')
58
Job Control Language
opção de cópia
/*
A saída será:
data1select
data2 VAZIO
data3select
Com base na posição 6 do arquivo, a compilação de arquivo de saída varia. Se 6ª posição é ESPAÇOS, então o
texto "vazio" é anexado ao registro de entrada. Else, o registro de entrada é escrito na saída, tal como está.
// SYSPRINT DD SYSOUT = *
// SYSIN DD *
// SYSOUT DD SYSOUT = *
// SORTOUT DD DUMMY
IEBGENER copia o arquivo em SYSUT1 para arquivar em SYSUT2. Observe que o arquivo em SYSUT2 leva o
mesmo DCB como a do SYSUT1 no exemplo acima.
8. Comparação Arquivo
//A PRINCIPAL DD *
1000
1001
59
Job Control Language
1003
1005
// DD PROC *
1000
1002
1003
// SYSOUT DD SYSOUT = *
// SYSIN DD *
opção de cópia
Outfil FNAMES = JOGO, INCLUEM = (1,1, CH, EQ, C'B '), CONSTRUIR = (1: 2,4)
Outfil FNAMES = NOMATCH1, INCLUEM = (1,1, CH, EQ, C'1' ), CONSTRUIR = (1: 2,4)
Outfil FNAMES = NOMATCH2, INCLUEM = (1,1, CH, EQ, C'2' ), CONSTRUIR = (1: 2,4)
/*
• REFORMAT FIELDS =? lugares 'B' (registos correspondentes), '1' (presentes em arq1, mas não em arq2),
ou '2' (presente em arq2 mas não em arq1) na primeira posição da compilação de saída.
60
Job Control Language
A saída será:
Arquivo JOGO
1000
1003
Arquivo NOMATCH1
1001
1005
Arquivo NOMATCH2
1002
61