Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e...

57
Carlos J E de Campos JCL Job Control Language Comandos, Sintaxe, Regras e Procedimentos Exemplos de programas e Pensamentos Desenvolvimento COBOL Mainframe Guia de Referência Segunda edição São Paulo 2014

Transcript of Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e...

Page 1: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Carlos J E de Campos

JCL Job Control Language

Comandos, Sintaxe, Regras e Procedimentos

Exemplos de programas e Pensamentos

D e s e n v o l v i m e n t o C O B O L M a i n f r a m e

G u i a d e R e f e r ê n c i a

S e g u n d a e d i ç ã o

S ã o P a u l o

2 0 1 4

Page 2: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Carlos J E de campos, 2014 Capa: Ramon Alvarenga Revisão: Fernanda Rizzo Diagramação: Carlos J E de Campos

É proibida a reprodução total ou parcial desta obra, de qualquer forma ou por qualquer meio sem a autorização prévia e por escrito do autor. A violação dos Direitos Autorais (Lei n.º 9610/98) é crime estabelecido pelo artigo 184 do Código Penal.

2014

Todos os direitos desta obra pertencem a

Carlos J E de Campos

www.carloscamposinfo.com

Page 3: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 3

Agradecimentos

Agradeço a Deus por ter-me colocado na trilha do conhecimento.

Agradeço à minha filhota, Vanessa Soares de Campos, por ser a minha fonte de esperança e por mostrar compreensão e paciência em muitos momentos da nossa vida.

Agradeço ao amigo Roberto Azem, que sempre esteve por perto, nos momentos de estudo e naqueles em que precisava de ouvidos e conselhos.

Agradeço aos meus pais Alice de Assunção Esteves Costa e José Manuel Lopes Moreira de Campos, por terem-me dado a vida, educação, formação moral e muito apoio.

Agradeço ao companheiro Benedito Aparecido Alves, pelo apoio que tem me dado nesta segunda fase dos meus livros, acompanhando-me no dia a dia do trabalho, ouvindo-me e apoiando-me com o seu conhecimento e sabedoria. Benê, como é conhecido, tem sido um grande conselheiro.

Reflexão

“Para adquirir conhecimento é preciso estudar, para adquirir sabedoria é preciso observar.”

Autor: William Arthur Ward

Page 4: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

N ã o e s t a m o s a q u i p a r a p a g a r n e m s o b r e v i v e r , m a s s i m , p a r a v e n c e r ,

a d q u i r i n d o s a b e r .

&

U s e m o s o c o n h e c i m e n t o c o m é t i c a e m o r a l .

Page 5: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 5

Introdução

JCL - Job Control Language é uma linguagem interpretada usada em Mainframes da IBM para instruir o sistema operacional a inicializar um subsistema ou executar um programa de lote. A sigla JCL também pode ser usada genericamente para se referir a qualquer linguagem que realize as mesmas funções, tais como a WFL, da empresa Burroughs, ou a OCL, da ICL. JCL é uma linguagem de controle de serviços e tem como objetivo descrever os serviços, gerenciar a sequência de execução dos programas e dos arquivos e dimensionar o volume de recursos, do sistema operacional, necessários para a realização do serviço. O JCL existe para executar programa no chamado processamento batch. O processamento batch é administrado pelos operadores, que se encarregam de manter, supervisionar e garantir a execução dos programas e a integridade dos dados. Essas execuções, normalmente, acontecem durante a noite, para que o sistema possa fornecer, no dia seguinte, os dados corretos aos usuários. O JCL existe para executar e administrar uma quantidade enorme de programas e arquivos de dados.

Esta obra

Esta obra tem como objetivo alcançar as pessoas que desejam criar programas COBOL Batch para serem executados em ambiente Mainframe, principalmente da IBM, z/OS e OS/390. Oferece uma base teórica e prática, suficientemente boa, para que o leitor domine a criação, manutenção e utilização em programas COBOL. A abordagem segue uma sequência, de forma que o leitor possa compreender como montar STEPs e PROCs que vão executarprogramas e efetuar tratamento de arquivos sequenciais e VSAM.

Os comandos são apresentados com a sua sintaxe básica e explicados a partir de pequenos programas apresentados especificamente e criados para esse fim, que podem ser usados para praticar e realizar testes.

Reflexão

“E conhecereis a verdade e a verdade vos libertará.”

João 8:32

Page 6: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Público-Alvo

As informações contidas neste livro podem ser aprendidas e aplicadas por qualquer pessoa que deseje conhecer e programar em COBOL com o Banco de Dados DB2 em ambiente Mainframe.

Os conceitos e os comandos são apresentados numa ordem, como forma de melhorar a compreensão e são acompanhados por figuras para ilustrar e aumentar a clareza das informações. Com a finalidade de reforçar e consolidar o aprendizado, cada comando é apresentado com a sua sintaxe básica e com um exemplo da sua aplicação e uso na programação COBOL.

Pré-Requisitos

Para desenvolver sistemas comerciais em COBOL que utilizem o banco de dados DB2, é necessário conhecer a sua linguagem, a sua sintaxe e as suas regras, mas, para elaborar programas nesta linguagem ou em outra, é preciso ter conhecimento sobre lógica de programação. É somente com a lógica de programação que se conseguem elaborar programas que atendam a algum propósito de negócio, com eficiência, e para executar programas Batch no ambiente Mainframe é necessário conhecer JCL.

Para que o leitor possa tirar maior proveito dos conhecimentos apresentados neste livro, é aconselhável que conheça:

✔Lógica de programação estruturada

✔Linguagem COBOL

✔DB2 para COBOL

✔CICS para COBOL

É aconselhada a leitura do livro de “LÓGICA” do mesmo autor que explica, passo a passo, a construção de algoritmos e de lógicas de programação, seguido do livro de COBOl, do DB2 para COBOL, do livro de CICS. E, depois, o livro de JCL.

Esta obra está aderente ao programa de formação de Especialista em Desenvolvimento de Programação COBOL Mainframe, CMCPDS - Certified Mainframe COBOL Program Development Specialist, fornecido pelo instituto ICPDUG - INTERNATIONAL COBOL PROGRAM DEVELOPER USERS GROUP.

Para mais informações, visite o site www.carloscamposinfo.com, ou entre em contato através do e-mail do autor: [email protected].

Reflexão

“Muitos homens iniciaram uma nova era na sua vida a partir da leitura de um livro”.

Autor: Henry Thoreau

Page 7: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 7

Resenha

Benedito Aparecido Alves

Quando fui convidado para participar deste projeto, não fiquei surpreso nem tive dúvidas do que iria encontrar quando pude ler todos os outros livros do autor. Na nossa área, os livros são muito raros e com pouco conteúdo. Normalmente, sem exemplos que reforcem o entendimento. Os que existem são os manuais técnicos e na língua inglesa.

Li este livro e comparei com outros da área, observando a maneira como o conteúdo do JCL está organizado. Gostei muito da forma simples e objetiva de como os comandos são apresentados. Todos estão na forma básica e possuem exemplos que o leitor pode ler, interpretar e até executar.

O livro de JCL atingiu o objetivo: apresentar a linguagem de forma prática, de modo a ser facilmente utilizado pelo programador, e ainda virar um guia de referência, assim como foram elaboradas as outras obras do autor.

O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um treinamento com uma metodologia que leva a uma boa formação básica para ser um bom programador, utilizando lógica e bons princípios da linguagem JCL para ambiente de desenvolvimento Mainframe.

Benedito Aparecido Alves tem mais de 25 anos de experiência, no ambiente de produção Mainframe, atuando no setor financeiro, tais com: Bradesco, Unibanco, Caixa Federal, Boston e IBM. Atualmente, trabalha na Sonda IT como Suporte a Produção (Mainframe).

Page 8: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Página deixada em branco

Page 9: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 9

Formação de especialista COBOL A formação de um desenvolvedor especialista em COBOL Mainframe envolve diversas áreas do conhecimento, necessárias para a atuação que o profissional precisa ter no desempenho da sua atuação. São seis módulos específicos de conhecimento que se completam: Lógica, COBOL, DB2, CICS, JCL e TSO.

A formação completa segue uma sequência, de acordo com um planejamento, para a integração de todos os módulos e, com isso, potencializar a sinergia vinda de cada área de conhecimento. Por exemplo, primeiro se desenvolve o racíocino e se aprende a construir algoritmos e lógicas de programação; depois, se aprende a estrutura de linguagem de programação com os seus comandos e constrói-se programa com base nas lógicas de programação aprendidas. A seguir, aprende-se o banco de dados onde estarão armazenados os dados e, finalmente, aprende-se a estrutura do ambiente online do Mainframe, a forma de programação pseudoconversacional e, o JCL, linguagem de administra a execução de programas batch.

No módulo de LÓGICA, são abordados como se constrói algoritmos e lógicas de programação.

No módulo de COBOL, são vistos toda a teoria e estrutura da linguagem de programação e todos os comandos principais e básicos para desenvolver a grande maioria dos programas.

No módulo de DB2, são abordados a teoria e estrutura básica de um banco de dados e, todos os comandos principais e básicos para desenvolver programas que utilizam o banco de dados DB2 em programas COBOL.

No módulo de CICS, são vistos toda a teoria e estrutura do ambiente, a forma de programação pseudoconversacional e, todos os comandos principais e básicos para desenvolver a grande maioria dos programas online.

No módulo de JCL, são vistos toda a teoria e estrutura da linguagem de programação e todos os comandos principais e básicos para desenvolver a grande maioria das soluções necessárias para a execução dos programas batch.

Page 10: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Metodologia dos cursos

O assunto novo é apresentado ao aluno, através da apresentação de SLIDES animados e coloridos e tiradas as dúvidas sobre o tópico. Para praticar o conhecimento novo, o aluno é solicitado a realizar o exercício, no caso: criar algoritmo ou programa. Após o tempo para criar a primeira solução, é apresentado; via SLIDES animados e coloridos, a solução do exercício, tirando todas as dúvidas possíveis. Para consolidar e poder tirar novas dúvidas do tópico do conhecimento, são solicitados, em média de dois a quatro exercícios na aula. A solução dos exercícios propostos é apresentada, via SLIDES animados e coloridos. E para tentar consagrar o conhecimento, é solicitado, em média de três a seis exercícios extras para o aluno fazer fora as horas das aulas. E, para tentar tirar possíveis dúvidas remanescentes, são reservados os primeiros minutos de cada aula, para tirar dúvidas.

Objetivo do método

Este método tem como objetivo alcançar os mais diversos indivíduos (visual, auditivo ou cinestésico) para que tomem consciência dos conceitos. Todo o método está baseado na indução do raciocínio, para que se crie a lógica necessária. Com isto, a energia necessária gasta com o esforço para criar a lógica é gasta durante o treinamento. Depois de formado, o individuo passa a raciocinar automaticamente com muito menor esforço. Por exemplo, quando houver uma solicitação que seja necessária à criação de duas quebras, uma dentro da outra, o raciocínio vem automaticamente e, à medida que vai elaborando a lógica, o seu formato já vem no padrão aprendido.

Benefícios do método

Os benefícios do método aplicado podem se resumir no seguinte:

Aumento do desempenho no raciocínio lógico Acomodação crescente do conhecimento Consolidação das estruturas lógicas Facilidade de criar a solução lógica

Apresentar Conceito

Tirar dúvidas

Praticar exercícios

Apresentar Solução

Consolidar Exercícios

Rever conceitos

Page 11: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 1 1

Certificação para desenvolvedor Mainframe

O instituto ICPDUG (INTERNATIONAL COBOL PROGRAM DEVELOPER USERS GROUP), para valorizar a área de desenvolvimento de sistema, fornece o exame de certificação para desenvolvedor COBOL Mainframe, com o objetivo de identificar o especialista em desenvolvimento de sistemas COBOL Mainframe.

Objetivo da certificação

A certificação vem agregar valor para a empresa, na medida em que vai avaliar o conhecimento para a necessidade específica que o profissional precisa ter, possibilitando a criação de um quadro de profissionais altamente qualificados e nivelados com o objetivo de planejar, definir e criar sistemas e programas com eficiência e qualidade.

E para o profissional, vem para valorizar a sua capacitação, a sua formação, diferenciando-o dos demais profissionais, fornecendo-lhe as credencias de um profissional especialista, aderente com as necessidades de conhecimento específico.

Como é a certificação

O certificado de Especialista em COBOL Mainframe, CMCPDS - Certified Mainframe COBOL Program Development Specialist (Especialista em Desenvolvimento de Programação COBOL Mainframe). O especialista máster recebe o título, após ter obtido todas as certificações para as seguintes especialidades:

LÕGICA - Programação estruturada COBOL - Linguagem de programação DB2 - Sistema Gerenciador de Banco de Dados Relacional CICS - Sistema Gerenciador de ambiente ONLINE JCL - Linguagem de controle Batch

Para mais informações, acesse o site www.icpdug.org.br ou utilize o e-mail [email protected].

Reflexão

“Em algum lugar, algo incrível está esperando para ser descoberto.”

Autor: Carl Seagan

Page 12: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Página deixada em branco

Page 13: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 1 3

Sumário

Agradecimentos ........................................................................ 3

Introdução .............................................................................. 5

Resenha ................................................................................. 7

Formação de especialista COBOL.................................................... 9

Metodologia dos cursos .......................................................... 10

Objetivo do método .............................................................. 10

Benefícios do método ............................................................ 10

Certificação para desenvolvedor Mainframe .................................... 11

Objetivo da certificação ......................................................... 11

Como é a certificação ............................................................ 11

Sumário ............................................................................... 13

Notação utilizada ................................................................. 21

Como codificar subparâmetros .................................................... 23

códigoretorno ..................................................................... 23

chaveregistro ...................................................................... 23

classe ............................................................................... 24

ddname ............................................................................ 24

dsname ............................................................................. 24

formdado .......................................................................... 24

jobname ............................................................................ 24

nomearquivo ...................................................................... 25

nomeform .......................................................................... 25

nomeprog .......................................................................... 25

nomeproc .......................................................................... 25

nromaxcomponente .............................................................. 25

operadorlogico .................................................................... 26

posini ............................................................................... 26

Page 14: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

posiçãoinicial ...................................................................... 26

quantidade ........................................................................ 26

qtdecopias ......................................................................... 26

qtdebufers ......................................................................... 26

qtdedispositivo .................................................................... 26

qtderegistro ....................................................................... 26

stepname .......................................................................... 27

stepanterior ....................................................................... 27

tamanho ............................................................................ 27

tamcampo ......................................................................... 27

tamanhomedio .................................................................... 27

tamanhomaximo .................................................................. 27

usuário ............................................................................. 27

Mainframe ............................................................................ 29

O que é Mainframe ............................................................... 30

História do Mainframe ........................................................... 31

Primeiros Mainframes ............................................................ 32

Capacidade dos Mainframes ..................................................... 33

Mainframe suporta vários sistemas operacionais............................. 33

Disponibilidade do Mainframe .................................................. 34

Imponência do Mainframe ....................................................... 34

Mainframe e supercomputador ................................................. 35

Visão geral de um Mainframe ................................................... 35

Terminal 3270 ..................................................................... 36

Teclado 3270 ...................................................................... 36

Softwares utilizados no Mainframe............................................. 37

Sistema operacional do Mainframe ............................................ 38

O que é sistema operacional .................................................... 38

História do sistema operacional ................................................ 39

JCL – Job Control Language ........................................................ 41

Page 15: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 1 5

Introdução ao JCL ................................................................ 42

O que é JCL ........................................................................ 43

Estrutura da linguagem .......................................................... 44

JOB MANAGEMANT ............................................................. 44

TASK MANAGEMENT ............................................................ 44

DATA MANAGEMENT ........................................................... 44

O que é um JOB ................................................................... 45

O que é um STEP .................................................................. 45

Estrutura de um JOB ............................................................. 45

Regras de codificação ......................................................... 46

Estrutura da linha de codificação ........................................... 47

Regras para uso de comentários ............................................. 48

Regras de continuação de comando ........................................ 49

Como é executado um JOB ...................................................... 49

JES – Job Entry Subsystem .................................................... 49

Entrada de JOB ................................................................. 50

Execução de JOB ............................................................... 51

Saída de JOB.................................................................... 53

Identificando a situação de execução de um JOB ........................... 56

Situação final de execução do STEP ........................................ 56

Fim normal da execução do STEP ........................................... 56

Fim anormal da execução do STEP .......................................... 57

ABEND programado ............................................................ 58

ABEND não programado ....................................................... 58

Instruções do JCL .................................................................... 59

Principais instruções abordadas ................................................ 60

Parâmetros ........................................................................ 61

Parâmetro opcional ........................................................... 61

Parâmetro obrigatório ........................................................ 61

Parâmetro posicional .......................................................... 61

Page 16: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Parâmetro chave ............................................................... 61

Instrução JOB ...................................................................... 63

Codificação dos parâmetros .................................................. 63

Sintaxe da instrução JOB ..................................................... 63

parâmetros-posicionais ....................................................... 63

parâmetros-chave ............................................................. 64

Instrução EXEC .................................................................... 67

Sintaxe da instrução EXEC .................................................... 67

Parâmetros da instrução EXEC ............................................... 68

PGM .............................................................................. 68

PROC ............................................................................. 68

Parâmetro TIME ................................................................ 69

Parâmetro REGION ............................................................. 69

Parâmetro PARM ............................................................... 70

Parâmetro COND ............................................................... 72

Instrução DD ....................................................................... 77

Sintaxe da instrução DD....................................................... 77

parâmetros-posicionais ....................................................... 77

Parâmetros-chave ............................................................. 82

Concatenar (juntar) arquivos .................................................. 101

IEFBR14 .............................................................................. 103

Criar arquivo sequencial ........................................................ 104

Exemplo para criar arquivo sequencial .................................... 104

Criar arquivo particionado (PDS) .............................................. 105

Exemplo para criar particionado – tamanho variado .................... 106

Exemplo para criar particionado – tamanho fixo ......................... 106

IEBGENER ............................................................................ 107

Controlar o IEBGENER ........................................................... 107

Como controlar a execução do IEBGENER .................................... 108

Sintaxe do IEBGENER ............................................................ 109

Page 17: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 1 7

dados-de-entrada ............................................................. 109

parâmetros-de-controle ..................................................... 109

Comandos utilizados no IEBGENER ............................................ 110

Exemplo de IEBGENER – Imprimir a partir do STEP ......................... 111

Exemplo de IEBGENER – Copiar a partir do STEP ............................ 111

Exemplo de IEBGENER – Copiar a partir de arquivo ......................... 111

Copiar arquivo para particionado (PDS) ...................................... 112

Exemplo para copiar arquivo para PDS ....................................... 112

IDCAMS ............................................................................... 113

Codificação dos comandos ..................................................... 113

Regras dos comandos............................................................ 114

Parâmetros posicionais e de palavra-chave .................................. 114

Como continuar comandos e parâmetros .................................... 115

Como terminar o comando ..................................................... 115

Como utilizar comentário ...................................................... 115

Usando o serviço de método de acesso ....................................... 116

Invocando o serviço de método de acesso ................................... 116

Acesso por meio de um JOB ................................................. 116

Serviços fornecidos pelo IDCAMS ........................................... 116

Utilização do IDCAMS ............................................................ 117

Sintaxe do IDCAMS ............................................................ 117

Comandos-do-IDCAMS ........................................................ 117

Considerações do IDCAMS .................................................... 117

Comandos utilizados no IDCAMS ............................................... 118

Comando DEFINE GDG ........................................................... 119

O que é arquivo GDG ......................................................... 119

Sintaxe do comando DEFINE GDG .......................................... 120

Comando PRINT .................................................................. 123

Sintaxe do comando PRINT .................................................. 123

Parâmetro indicador do arquivo de entrada .............................. 123

Page 18: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Parâmetro indicador da forma de impressão do caracteres ............ 124

Parâmetro indicador para inicio da impressão ........................... 124

Parâmetro indicador da forma de impressão do caracteres ............ 125

Exemplo para listar arquivo GDG com INFILE ............................. 125

Exemplo para incluir no arquivo GDG ...................................... 126

Exemplo para listar arquivo sequencial ................................... 127

Exemplo para listar arquivo GDG ........................................... 127

Exemplo para listar arquivo GDG com COUNT ............................ 128

Comando DEFINE CLUSTER ..................................................... 129

O que é CLUSTER VSAM ...................................................... 129

Sintaxe genérica do comando DEFINE CLUSTER .......................... 129

Comando REPRO ................................................................. 135

Sintaxe genérica do comando REPRO ...................................... 135

Sintaxe do comando REPRO condicional ................................... 137

Sintaxe do comando REPRO condicional – a partir de ................... 139

Sintaxe do comando REPRO condicional – REPLACE ..................... 142

Comando LISTCAT ............................................................... 145

Sintaxe do comando LISTCAT ............................................... 145

Comando DELETE ................................................................ 147

Sintaxe do comando DELETE ................................................ 147

Exemplo para criar arquivo VSAM KSDS .................................... 147

Exemplo para excluir arquivo ............................................... 147

Comando VERIFY ................................................................. 149

Sintaxe do comando VERIFY ................................................. 149

Exemplo com VERIFY para arquivo com dados ........................... 149

DFSORT ............................................................................... 151

Cartão de controle do DFSORT ................................................ 152

Sintaxe geral do DFSORT ....................................................... 152

SORTWKnn ..................................................................... 152

SORTINnn ...................................................................... 152

Page 19: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 1 9

comandos-do-sort ............................................................. 152

Comandos do DFSORT ........................................................... 153

Sequência de execução dos comandos do DFSORT ....................... 153

Classificar registros do arquivo ................................................ 155

Uso do comando SORT FIELDS .................................................. 155

Sintaxe do comando SORT FIELDS .......................................... 155

Exemplo de ordenação – SORT FIELDS ..................................... 159

Sequência de execução de SORT FIELDS .................................. 159

Selecionar registro do arquivo ................................................. 161

Tipos de selecionamento de registro de entrada ........................ 161

Regras de preenchimento e truncamento na comparação .............. 162

Regras de comparação para INCLUDE e OMIT ............................. 162

Selecionar registros que serão gravados ..................................... 163

Uso do comando INCLUDE COND ............................................ 163

Ignorar registros para não serem gravados .................................. 167

Uso do comando OMIT COND ................................................ 167

Somar valores em registros..................................................... 169

Uso do comando SUM FIELDS ................................................ 169

Eliminar chaves duplicadas ..................................................... 171

Uso do comando SUM FIELDS=NONE ........................................ 172

Sintaxe do comando SUM FIELDS=NONE ................................... 172

Exemplo de eliminação de duplicados ..................................... 172

Reformatar registros de entrada .............................................. 173

Uso do comando INREC FIELDS .............................................. 174

Reformatar registros de saída ................................................. 177

Uso do comando OUTREC FIELDS ........................................... 178

Como inserir dados no registro de saída................................... 180

Juntar arquivos .................................................................. 183

Uso do comando MERGE FIELDS ............................................. 184

Exemplo de MERGE com arquivos ordenados ............................. 185

Page 20: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Copiar partes de arquivo ....................................................... 187

Uso do comando OUTFIL ..................................................... 188

Copiar arquivos ............................................................... 195

Uso do comando COPY ....................................................... 196

Exemplo para copiar arquivos com OPTION COPY ....................... 197

Exemplo para copiar arquivos com SORT FIELDS ......................... 198

Exemplo para copiar arquivos com MERGE FIELDS ....................... 198

IEBCOMPR ............................................................................ 199

Controlar o IEBCOMPR........................................................... 199

Cartão de controle do IEBCOMPR .............................................. 200

Sintaxe geral do IEBCOMPR ..................................................... 200

Boas práticas ........................................................................ 201

Orientações para DFSORT ...................................................... 202

Blocagem eficiente ........................................................... 202

Melhor disposição dos campos .............................................. 202

Melhor definição dos campos ............................................... 202

Especificar tamanho do arquivo ............................................ 203

Executar o DFSORT via JCL .................................................. 203

Ser generoso com o tamanho da memória virtual ....................... 203

Alocação ideal da área de trabalho ........................................ 203

Bibliografia .......................................................................... 205

Outras obras do autor .............................................................. 207

Page 21: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 2 1

Notação utilizada

[ ] Opcional

{ } Optar por um, sendo que as opções estão separadas pelo símbolo “|”

que significa “ou”

< > Operador lógico "OU". Significa que pode ser substituído por um dos

parâmetros.

| Operador lógico "OU". Significa que pode ser substituído por um dos

parâmetros.

... Existem procedimentos não mencionados

....|....1....|....2....|....3....|....4....|....5....|....6....|....7..

A linha acima representa a régua do exemplo em questão para ajudar a mostrar a posição dos caracteres, muito importante para a linguagem COBOL.

Reflexão

“Só é lutador quem sabe lutar consigo mesmo.”

Autor: Carlos Drummond de Andrade

Page 22: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Página deixada em branco

Page 23: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 2 3

Como codificar subparâmetros

Muitos comandos e parâmetros necessitam de valores para o seu funcionamento, chamados de subparâmetros. Por exemplo, o parâmetro DATASET possui a seguinte sintaxe: READ ARQCLI INTO nomeáreadedados, onde nomeáreadedados representa o nome da área que vai receber os dados do registro lido.

Muitos comandos e parâmetros necessitam de valores para o seu funcionamento, chamados de subparâmetros. Por exemplo, o parâmetro COUNT, para contar registros, possui a seguinte sintaxe: COUNT(qtd-reg), onde qtde-reg representa a quantidade de registros que devem ser contados.

Os seguintes formatos de dados podem ser usados: decimal (n), hexadecimal (X’n'), ou binário (B’n').

Estas convenções de codificação se aplicam às necessidades dos parâmetros e opções quando:

Necessitar de um caracter especial, incluir os dados entre aspas únicas. Por exemplo, OWNER(‘*CJEC*’).

Necessitar de um caracter especial e do caractere aspa única. Neste caso codificar a aspa únuca precedida de outra aspa única. Por exemplo, VOLUMES('um ' '& '). Isto significa (um’&).

Necessitar informar dados na forma hexadecimal. Lembre-se de que dois caracteres hexadecimais representam um caracter alfanumérico ou especial. Por exemplo, FROMKEY(X 'C1C2C3 ') é o mesmo que FROMKEY(ABC).

códigoretorno

Número inteiro indicador da situação de término do STEP, conhecido com RETURN CODE. Valor entre 0 e 4095.

chaveregistro

Especifica a chave primária do registro.

Page 24: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

classe

Nome da classe de saída para o conjunto de dados (arquivo). A classe pode ser identificada pelos caracteres de A a Z ou de 0 a 9, que você pode opcionalmente colocar entre aspas. Os atributos de cada classe de saída são definidos durante a inicialização do JES.

O asterisco “*” indica que se use a classe definida na MSGCLASS.

ddname

Nome do arquivo lógico utilizado dentro do programa de aplicação. No caso de programa COBOL, é utilizado na SELECT. Deve seguir as seguintes regras de stepname.

dsname

Nome do arquivo físico utilizado pelo sistema operacional. Ver nomearquivo.

formdado

Sequência de dois caracteres para indicar o tipo de formato do campo a ser utilizado na ordenação.

jobname

Nome da instrução (comando ou cartão) JOB e, deve seguir as seguintes regras:

Pode ter de um a oito caracteres. Deve ter um nome exclusivo na instalação. Deve começar por um caractere alfanumérico ou pelos caracteres: $, @ e #. Deve começar na coluna 3. O primeiro caractere deve ser alfabético ou nacional ($, #, @). Deve ser seguido por pelo menos um espaço em branco.

Reflexão

“Devemos educar nosso coração a ser piedoso, gentil, terno, cheio de perdão e compaixão.”

Autor desconhecido

Page 25: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 2 5

nomearquivo

Nome do arquivo a ser utilizado. O nome do arquivo pode ser simples ou composto.

Se for simples, segue as regras de nomedopgm.

Se for composto, pode ter no máximo 44 caracteres de tamanho, se for GDG, poderá ter no máximo 35 caracteres. No caso de nome composto, o nome pode ser uma junção de vários nomes simples separados por um ponto.

O nome composto deve possuir a seguinte formatação:

----------------..----------------..----------------..----------------..----------------

Por exemplo:

AD.CJEC.CURSO.JCL.ARQJCL78

nomeform

Nome do formulário pré-formatado. O formulário é identificado por um código de 4 caracteres e necessita de um tratamento específico para que seja montado pelo programa e impresso em papel. Por exemplo:

//SAIDAPGM DD SYSOUT=A,,ZT42

Neste exemplo, a saída é um formulário de nome “ZT42”. No caso, a SYSOUT possui o nome (DDNAME) de “SAÍDAPGM”.

nomeprog

Nome do utilitário ou programa de aplicação.

Pode ter de um a oito caracteres. Deve ter um nome exclusivo na instalação. O primeiro caractere deve ser alfabético ou ($, #, @).

nomeproc

Nome de um procedimento (processo catalogado).

Pode ter de um a oito caracteres. Deve ter um nome exclusivo na instalação. O primeiro caractere deve ser alfabético ou ($, #, @).

nromaxcomponente

Número inteiro de 1 a 255.

Page 26: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

operadorlogico

O operador lógico é identificado por dois caracteres. Pode ser:

NE – Não igual. EQ – Igual. LT – Menor. GT – Maior. LE – Menor ou igual. GE – Maior ou igual.

posini

Número inteiro para indicar a posição inicial do valor a ser utilizado na ordenação. A 1ª posição é o byte 1.

posiçãoinicial

Número inteiro para indicar a posição inicial da chave principal. A primeira posição é identificada pelo número zero.

quantidade

Número inteiro.

qtdecopias

Número de cópias a serem impressas do formulário. É um número inteiro. Por exemplo:

//SYSPRINT DD SYSOUT=A,COPIES=3

Neste exemplo, o parâmetro COPIES está com o número 3. Isso significa que os dados que estão na SYSPRINT serão impressos três vezes.

qtdebufers

Número inteiro para determinar a quantidade de regiões de memória.

qtdedispositivo

Quantidade de dispositivos que podem ser utilizados. É um número decimal de 1 até 59.

qtderegistro

Especifica o número de registros lógicos que será copiado. É um número inteiro.

Page 27: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 2 7

stepname

Nome do STEP. Deve seguir as seguintes regras:

Pode ter de um a oito caracteres. Deve ter um nome exclusivo na instalação. Deve começar por um caractere alfanumérico ou pelos caracteres: $, @ e #. Deve começar na coluna 3. O primeiro caractere deve ser alfabético ou nacional ($, #, @). Deve ser seguido por pelo menos um espaço em branco.

stepanterior

Nome do STEP anterior, já executado. Deve seguir as regras de stepname.

tamanho

Número inteiro para determinar o tamanho.

tamcampo

Número inteiro para indicar o tamanho do campo (sequência de caracteres) a ser utilizado na ordenação.

tamanhomedio

Número inteiro indicativo do tamanho médio do registro.

tamanhomaximo

Número inteiro indicativo do tamanho máximo do registro.

usuário

Nome do usuário que tem permissão para ver o formulário (relatório).

Page 28: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Página deixada em branco

Page 29: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 2 9

Mainframe

Este capítulo tem como finalidade apresentar a história e os fundamentos dos computadores Mainframe, em especial, da IBM, por ter sido o que mais se popularizou.

Reflexão

“A ciência sem a religião é coxa; a religião sem a ciência é cega.”

Albert Einstein

1

Page 30: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

O que é Mainframe

Um Mainframe é um computador de grande porte, dedicado normalmente ao processamento de um volume grande de informações. Os Mainframes são capazes de oferecer serviços de processamento a milhares de usuários por meio de milhares de terminais conectados diretamente ou por uma rede.

O termo Mainframe se refere ao gabinete principal que alojava a unidade central de fogo nos primeiros computadores.

É uma linha de computadores de grande porte destinado ao processamento contínuo e ininterrupto de grande volume de informações com alto grau de confiabilidade e segurança.

Um Mainframe moderno pode processar uma quantidade superior a 4 bilhões de transações por segundo, suportar milhares de terminais remotos e suas controladoras, controlar o acesso de centenas de discos, fitas, volume de milhões de impressão etc.

Mainframe não é sistema operacional, é um computador que usa o sistema operacional OS/390 ou z/OS desenvolvido pela IBM com o fim específico de processar grandes volumes de dados de forma contínua e ininterrupta.

Anteriormente, eram computadores que ocupavam um grande espaço e necessitavam de um ambiente especial para seu funcionamento. Atualmente, possuem o mesmo tamanho dos demais servidores de grande porte com menor consumo de energia elétrica. Os Mainframes são capazes de realizar operações em grande velocidade e sobre um volume muito grande de dados.

O Mainframe possui grande número de processadores que auxiliam os processadores centrais. Eles são utilizados em funções de criptografia, gerenciamento de entrada/saída, monitoração do ambiente, manipulação de memória etc. Suportam totalmente o software antigo (no caso da IBM, inclusive aplicações escritas na década de 1960) convivendo com novas versões.

Reflexão

“Não vos enganeis: as más conversas corrompem os bons costumes.”

I Coríntios 15:33

Page 31: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 3 1

História do Mainframe

Os Mainframes nasceram em 1946 e foram sendo aperfeiçoados. Em 7 de abril de 1964, a IBM apresentou o System/360, Mainframe que, na época, foi o maior projeto de uma empresa. Desde então, outras empresas – como a HP e a Burroughs (atual Unisys) – lançaram seus modelos.

Posteriormente, a IBM lançou a série /370 e a Burroughs, as máquinas de terceira geração: B-3500 e B-6500, sucedidas pela série 700: B-3700 e B-6700.

No fim da década de 1970, ao mesmo tempo em que os sistemas destinados a grandes corporações cresciam, começaram a ser reduzidos os tamanhos de uma série de máquinas: a IBM lançou o /3 e a Burroughs, a série B-1700 e, posteriormente, a B-700, máquinas de quarta geração, cujo software básico era escrito em MIL (Micro Implemented Language) e SDL (Software Development Language). Como foram as primeiras máquinas Burroughs microprogramáveis, isso lhes proporcionou flexibilidade ímpar. Estas máquinas marcaram o início do uso de circuitos integrados com tecnologia TTL e integração em média escala (MSI).

Atualmente, a IBM produz quatro versões de Mainframes, denominados System Z series, que, modernizados, suportam diversos sistemas operacionais: z/OS, z/OS.e, z/VM, z/VSE, VSE/ESA, TPF, z/TPF e Linux on System z.

Hoje, segundo especialistas, há uma forte tendência de crescimento para este setor, inclusive com as novas versões do Cobol (principal linguagem dos Mainframes) que usam ambiente gráfico.

A primeira empresa a usar o S/360 no Brasil foi a Bayer, empresa de produtos químicos, em 1966. Outras empresas e órgãos do governo adotaram o Mainframe depois, como o governo do Estado de São Paulo, a Usiminas e Paulo Afonso.

Desde então, outras empresas, como a HP e a Unisys, lançaram seus modelos de Mainframe. Além disso, bastante coisa mudou no mundo da tecnologia. Na verdade, boa parte do mercado de informática que existe hoje surgiu depois do primeiro Mainframe. Foi apenas depois disso, por exemplo, que surgiu o circuito integrado, mais conhecido hoje em dia como chip semicondutor. Sem esses chips, dificilmente teriam surgidos os microprocessadores, que começaram a se tornar populares na década de 80.

Reflexão

“Há um poder maravilhoso no silêncio.”

Autor Desconhecido

Figura 1 – IBM 704

Page 32: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

IBM 360 – LANÇADO EM 1964O primeiro mainframe

IBM 3090 – ANOS 80 Refrigerado a água

IBM MULTIPRISE – 1990Modelo compacto usado muito

em backup de sites

LINHA 9000 – ANOS 90, o modelo mais utilizado

LINHA Z/SERIES – ANO 2000 a nova geração

IBM 370 – DÉCADA DE 70,a segunda geração

Primeiros Mainframes

Vejamos como eram os primeiros computadores Mainframes da IBM.

Page 33: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 3 3

Inovação com Processadores Especializados

Internal Coupling

Facility (ICF) 1997

Integrated

Facility for Linux

(IFL) 2001

IBM System z9

Integrated Information

Processor (zIIP) 2006

System z9

Application Assist

Processor (zAAP)

2004

A PU quando é um Processador

Central (CP) processa qualquer tipo

de carga de aplicativo, mas pode ser

configurada para processar cargas

específicas como:

Processa Linux e

Virtualização

Processa parte

das cargas do

DB2

Processa

Cluster

Processa JAVA

Capacidade dos Mainframes

Os Mainframes possuem grande capacidade de armazenamento e velocidade (Fonte IBM).

Mainframe suporta vários sistemas operacionais

Os Mainframes podem suportar vários sistemas operacionais (Fonte IBM).

Reflexão

“Só é livre o homem que sabe dar ordens a si mesmo.”

Autor: Pitágoras

Mainframe Atual - IBM System z9-EC – Clientes maiores

Até 54 Processadores (para aplicação)

Até 512 Gb de memória

Velocidade de Barramento até 172.8 Gb por segundo.

Page 34: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Disponibilidade do Mainframe

O Mainframe tem alta disponibilidade, atinge 99,99 % (Fonte IBM).

Imponência do Mainframe

A IBM tem o projeto BIG Green, que consolida em 30 Mainframes uma enorme capacidade de armazenamento e de processamento, com alta economia de energia (Fonte IBM).

IBM System z – Disponibilidade – 99.999%

5 minutos de paradas programadas por ano!!

Componentes projetados para funcionar 100 anos sem apresentar falhas.

Projeto IBM Big Green

Consolidação de Servidores na IBM

- 3900 servidores Intel e Unix nos CPDs do

mundo todo

- 80% de Economia de Energia

- 250 milhões de dolares economizados em 5

anos com energia, software e suporte

- Usando Linux

TUDO ISSO EM 30 MAINFRAMES

Page 35: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 3 5

Mainframe e supercomputador

A distinção entre supercomputadores e Mainframes não está clara, mas podemos dizer que os supercomputadores são utilizados na solução de problemas em que o tempo de cálculo é um limite, enquanto os Mainframes são utilizados em tarefas que exigem alta disponibilidade e envolvem alto volume de processamento de dados.

Os supercomputadores são otimizados para realizar tarefas complexas, utilizando principalmente a memória, enquanto os Mainframes são otimizados para realizar tarefas que acessam grandes quantidades de informação oriunda de bases de dados, arquivos. Os supercomputadores são construídos para atender a uma finalidade específica. Os Mainframes são construídos para realizar uma grande variedade de tarefas de execução diária. Normalmente, os supercomputadores são utilizados em aplicações científicas e militares, enquanto os Mainframes são voltados a aplicações civis, sejam governamentais ou empresariais. A análise de modelos de clima, análise estrutural de proteínas e processamento de filmes digitais são tarefas bastante apropriadas para os supercomputadores. O processamento de cartões de crédito, gerenciamento de contas bancárias e processamento de seguro são tarefas normalmente realizadas por Mainframes. Uma exceção: certas aplicações militares exigem um nível de segurança muito alto, que é uma forte característica dos Mainframes.

Visão geral de um Mainframe

CONTROLADORAS

Console(s) operador

C P U

...

D i s c o s

I m p r e s s o r a s

F i t a s

C a r t u c h o s

Terminal Terminal

Page 36: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Terminal 3270

Os terminais que se comunicam com o Mainframe são dedicados e não possuem inteligência, como um computador, conhecido como PC (Personal Computer). Eles são conhecidos como terminais tipo 3270, terminal a caractere.

Nos terminais 3270 os pontos “endereçáveis” constituem um vetor de (basicamente) 24 x 80 = 1920. Estes “pontos” podem receber um conjunto limitado de conteúdos (basicamente 190 caracteres oriundos das 256 configurações EBCDIC).

Nos computadores, PC, os monitores cada vez mais possuem pontos endereçáveis, os pixels (picture elements). Por exemplo, a configuração 640 x 480 possui 307.200 “pontos”, que podem ser configurados à vontade. É a maravilha do terminal gráfico permitindo imagens cada vez mais perfeitas. Parecidas com a natureza.

Por meio dos computadores PC, pode-se conectar-se ao Mainframe. Para isso ser possível, é necessário utilizar um software de simula um terminal 3270 para a comunicação.

Teclado 3270

Os terminais (teclado) do Mainframe também são um pouco diferentes, assim como existem diversos teclados para os computadores pessoais. Depende do fabricante e do idioma do país.

A utilização dos recursos do teclado 3270 no PC depende do emulador e do teclado utilizado.

No PC existem o processador, a memória e o software, que possibilitam o tratamento de uma parte dos dados para que a comunicação com um host seja feita localmente; no terminal, existe apenas um buffer (memória) capaz de conter informações que estão limitadas ao tamanho da tela.

Page 37: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 3 7

Softwares utilizados no Mainframe

CHANGEMAN Sistema de gerenciamento e automação dos processos de migração de software, ou aplicações, do ambiente de desenvolvimento para produção, passando pelo ambiente de teste.

CICS Gerenciador de aplicações on-line.

DB2 Gerenciador de base de dados relacional (usa SQL).

EASYTRIEVE Linguagem para desenvolvimento, que pode ser usada de forma interpretada.

ENDEVOR Controle de objetos fonte.

FILE-AID Manipulação on-line de arquivos.

IDCAMS Manipulação batch de arquivos, principalmente VSAM.

JCL Job Control Language: linguagem para especificação de “conjuntos” de serviços a executar.

RACF Controle de acesso aos recursos.

ROSCOE Remote Operating System Conversation Operating Environment, interface com funções utilizadas como interface com o sistema operacional.

TSO Time Sharing Option, interface para processamento on-line, com funções utilizadas como interface com o sistema operacional.

Reflexão

“Para adquirir conhecimento é preciso estudar, para adquirir sabedoria é preciso observar.”

William Arthur Ward

Page 38: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Sistema operacional do Mainframe

O sistema operacional OS/390 (ou z/OS) utiliza caractere, muito diferente do gráfico que suporta a elaboração de imagens bonitas. O sistema operacional em “estado bruto” da forma como é entregue pela IBM, ocupa cerca de 18 CDs de instalação.

A instalação do sistema operacional feita por um bom especialista em suporte operacional pode levar longos dias até chegar ao “modus operandi”. Existe uma série longa de parâmetros que devem ser selecionadas e customizadas de acordo com a padronização da empresa, o perfil dos funcionários, a definição dos grupos de acesso, a instalação de aplicativos, a customização das redes internas e externas, a escalação de segurança etc. Isso tudo permite dizer que o OS/390 é realmente um sistema operacional radicalmente corporativo.

O que é sistema operacional

Um sistema operacional, ou sistema operativo, é um programa ou um conjunto de programas cuja função é servir de interface entre um computador e o usuário (pessoa que interage com o computador ou com a aplicação).

A sigla usual para designar esta classe de programas é SO (Sistema Operacional, em português) ou OS (Operating System, em inglês).

Segundo alguns autores, existem dois modos distintos de conceituar um sistema operacional:

Pela perspectiva do usuário ou programador, visão Top-Down, de cima para baixo. O hardware faz o papel de intermediário entre o aplicativo (programa) e os componentes físicos do computador (hardware).

Pela visão Bottom-Up, de baixo para cima. É um gerenciador, i.e., que controla quais aplicações (processos), quando e os recursos do computador (memória, disco, entre outros dispositivos periféricos) que podem ser utilizados.

Reflexão

“Se quer tirar mel, não espante a colmeia.”

Autor desconhecido

Page 39: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 3 9

História do sistema operacional

Na primeira geração de computadores, aproximadamente entre 1945 e 1955, os computadores usavam válvulas, e por essa razão eram tão grandes que ocupavam salas imensas.

Eles não usavam sistemas operacionais e eram os programadores, também operadores, que controlavam o computador por meio de chaves, fios e luzes de aviso.

A primeira geração de computadores deveu-se à dedicação de pessoas como: Howard Aiken (Harvard); John von Neumann (Instituto de Estudos Avançados de Princeton); John Adam Presper Eckert Jr. e William Mauchley (Universidade da Pennsylvania); e Konrad Zuse (Alemanha).

Na geração seguinte, aproximadamente entre 1955 e 1965, foram criados os sistemas em lote (batch systems), que permitiram melhor uso dos recursos computacionais. A base do sistema operacional era um programa monitor, usado para enfileirar tarefas (JOBs). O usuário foi afastado do computador e cada programa era escrito em cartões perfurados, que por sua vez eram carregados com o respectivo compilador (normalmente Fortran ou Cobol), por um operador, que usava uma linguagem de controle chamada JCL (Job Control Language).

E assim, começou a história da linguagem de controle JCL, que existe até hoje nos Mainframes.

Os sistemas operacionais desenvolvidos para Mainframes são criados especialmente para cada modelo com finalidades específicas; seja para processar textos, bancos de dados, efetuar cálculos ou gerenciar dispositivos, e estão baseados em sistemas próprios, por exemplo: z/OS, z/VSE, z/VM, z/TPF (da IBM), OS2200, MCP (da Unisys), GCOS (da Bull), e outros de empresas como Fujitsu, Hitachi e Amdhal.

Reflexão

“Não julgueis segundo a aparência, e sim pela reta justiça.”

João 7:24

Page 40: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Página deixada em branco

Page 41: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 4 1

JCL – Job Control Language

Este capítulo tem como finalidade apresentar os conceitos básicos do JCL (JOB CONTROL LANGUAGE), a estrutura dos seus “programas” e os conceitos de ligados à execução de programas de aplicação em lote (chamados de Batch).

Job Control Language (JCL) é uma linguagem interpretada usada em Mainframes da IBM para instruir o sistema operacional a inicializar um subsistema ou executar um programa de lote.

A sigla JCL também pode ser usada genericamente para se referir a qualquer linguagem que realize as mesmas funções, tais como a WFL, da empresa Burroughs, ou a OCL, da ICL.

A IBM possui duas linguagens JCLs: uma para sistemas operacionais iniciada com o DOS/360 e cujo último membro é o z/VSE; e a outra para as linhas dos sistemas operacionais que vão do OS/360 ao z/OS. Ambas possuem em comum alguns conceitos e regras básicas de sintaxe, mas em geral são bastante diferentes.

Neste livro será tratada especificamente a linguagem JCL da IBM para as linhas dos sistemas operacionais que vão do OS/360 ao z/OS.

A sintaxe da linguagem é caracterizada por um par de barras (//) que indicam o início de cada instrução. Essa notação existe desde a década de 1960 no uso de cartões perfurados e mantém a compatibilidade da linguagem desde a sua criação. A função original das barras era assegurar que o cartão perfurado estivesse posicionado corretamente no leitor: caso elas não fossem lidas logo no começo da instrução, todo o cartão seria rejeitado. Outro conceito mantido é o tamanho dos comandos JCL, armazenados em registros de 80 bytes, o que equivale a um cartão.

Reflexão

“A menos que admita a existência de Deus, a questão sobre propósito de vida não tem sentido.”

Bertrand Russell

2

Page 42: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Introdução ao JCL

Existem pessoas que interagem com o computador por meio de um serviço fornecido por um sistema (aplicação). Por exemplo: obter o extrato da conta corrente. Neste caso, a pessoa, como usuário do sistema de conta corrente, aciona a opção correspondente e obtém, imediatamente, no monitor ou no papel, a movimentação da sua conta. A esse tipo de processo dá-se o nome de processo on-line, onde a pessoa, chamada de usuário, solicita a execução de uma determinada funcionalidade e recebe no mesmo instante a resposta da máquina.

Mas existe o tipo de processamento que executa programas com a missão de processar dados sem a intenção de mostrá-lo ao usuário. O objetivo é preparar dados, atualizar arquivos ou emitir relatórios para quando o usuário pedir a execução, por exemplo, da funcionalidade “listar movimentação” possa obter e ver o resultado atualizado imediatamente. A esse tipo de processamento dá-se o nome batch.

O processamento batch é administrado pelos operadores, que se encarregam de manter, supervisionar e garantir a execução dos programas e a integridade dos dados. Essas execuções, normalmente, acontecem durante a noite, para que o sistema possa fornecer, no dia seguinte, os dados corretos aos usuários.

Para executar e administrar uma quantidade enorme de programas e arquivos de dados é necessária uma linguagem para a comunicação entre o usuário (operador) e o sistema operacional, para que este fique “sabendo” quais as necessidades particulares de cada usuário e como efetuar a distribuição de recursos. Quem possibilita a execução e administração deste processamento é a linguagem JCL (JOB CONTROL LANGUAGE).

JCL é uma linguagem de controle de serviços e tem como objetivo descrever os serviços que devem ser realizados, a sequência de execução dos programas e os arquivos necessários para executar o respectivo serviço, além dos parâmetros que permitirão ao sistema operacional do Mainframe dimensionar o volume de recursos necessários para a realização do serviço.

Reflexão

“Só é lutador quem sabe lutar consigo mesmo.”

Carlos Drummond de Andrade

Page 43: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 4 3

O que é JCL

JCL significa linguagem de controle de serviço, que é composta por instruções, mais conhecida como cartões, que depois de codificadas são utilizadas pelo sistema operacional para dirigir a execução de programas.

Qualquer Mainframe IBM utiliza o JCL para executar processos batch, porém o formato poderá variar de acordo com a empresa.

A codificação das instruções JCL, os programas a serem executados e os arquivos de dados utilizados no processamento, constituem um serviço, ou seja, um JOB.

As instruções JCL descrevem o que o sistema operacional deve fazer:

Especifica a prioridade de execução do JOB. Pode condicionar a continuidade do fluxo de execução ou de um

determinado passo do processamento. Identifica o nome do programa ou procedure a ser executado. Identifica o arquivo que o programa quer trabalhar (ler ou gravar) e o

relaciona com sua execução. Especifica os dispositivos e as memórias auxiliares para a execução do

programa ou utilitário.

Reflexão

“Não te furtes de fazer o bem a quem de direito, estando na tua mão o poder de fazê-lo.”

Salomão. Sl 3: 27

S u b m e t e JES interpreta o JCL e passa para S.O.

S.O. executa o serviço

JES agrupa as saídas e informações sobre o JOB

S a í d a

Page 44: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Estrutura da linguagem

O JCL é uma linguagem estruturada que executa as tarefas solicitadas de modo sequencial e pode ser controlada por meio de parâmetros. A linguagem está dividida em três grandes programas que gerenciam a sua execução. São elas:

JOB MANAGEMENT. TASK MANAGEMENT. DATA MANAGEMENT.

JOB MANAGEMANT

JOB MANAGEMENT é o programa responsável por receber e expedir os serviços solicitados e gerenciar os recursos necessários para a execução de cada atividade solicitada. O gerenciamento é feito individualmente para cada etapa chamada de STEP. É por meio do comando JOB que é informado ao JOB MANAGEMENT o início de um novo serviço.

TASK MANAGEMENT

TASK MANAGEMENT é também chamado de Supervisor, porque é responsável por administrar o espaço de memória da CPU. Uma TASK é um serviço solicitado pela execução de um programa, também definido como uma unidade de trabalho da CPU. É por meio do comando EXEC que é informado ao TASK MANAGEMENT qual o programa (PROCEDURE) vai ser executado.

DATA MANAGEMENT

DATA MANAGEMENT é o componente responsável por todas as operações em arquivos. Administra a abertura, o fechamento, o volume necessário (EOV) e o fim do arquivo (EOF). É por meio do comando DD, que é informado à DATA MANAGEMENT quais são os arquivos que o programa vai utilizar.

S i s t e m a O p e r a c i o n a l

J O B M A N A G E M E

N T

T A S K M A N A G E M E

N T

D A T A M A N A G E M E

N T

J O B E X E C D D

Page 45: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 4 5

O que é um JOB

Dá-se o nome de JOB a um programa, script, escrito na linguagem JCL para executar um ou mais programas, utilitários, de forma serial. JOB é a unidade máxima de execução (unidade de básica de trabalho, serviço), é codificado segundo instruções e é mais conhecido como cartões, com uma regra rígida de posicionamento na linha, assim como faz o COBOL. O JOB, obrigatoriamente, deve começar com a instrução de nome JOB. Popularmente, o nome da instrução JOB é utilizado para identificar um “programa” em JCL. Um job consiste em um ou vários passos, cada qual sendo uma requisição para um programa específico.

Por exemplo, imagine o seguinte processo responsável por criar um relatório impresso com os seguintes passos: um programa para selecionar os registros apropriados e copiá-los para um arquivo temporário; outro para organizar esses dados sob um determinado critério; e outro para apresentar as informações ao usuário final.

O que é um STEP

Cada unidade de execução de um JOB, programa ou utilitário, que é comandado pela execução do cartão (comando) EXEC, dá-se o nome de STEP.

Estrutura de um JOB

O JOB, obrigatoriamente, é identificado pelo cartão (comando) JOB, que identifica o início do programa (script), da mesma forma que o programa COBOL precisa ter a divisão IDENTIFICATION DIVISION.

Nota: O STEP de nome “NMSETP1A” executa o utilitário “IDCAMS”

//NMJOB01A JOB PARM1, PARM2

//*==================================

//* STEP 01 - EXCLUIR ARQUIVO

//*==================================

//NMSTEP1A EXEC PGM=IDCAMS

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

DELETE (AD.CJEC.ARQNOV1A)

//

Cartão identificador do

JOB.

Nesse caso, o nome do JOB é “NMJOB01A”

Cartão identificador de uma unidade de execução, o STEP.

Neste caso, o nome do STEP é “NMSETP1A”

Page 46: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Regras de codificação

Um JOB é codificado cartão a cartão (instrução a instrução ou comando a comando). Por quê? Porque o objetivo do JOB é dirigir a execução de programas e utilitários. Então, cada passo do JOB é uma execução de um programa ou utilitário. E como cada instrução é um cartão, temos:

Todo o cartão deve ser especificado, descrito, numa linha com tamanho máximo de 80 caracteres.

Toda a instrução deve estar codificada entre as posições 4 e 72. Para que os parâmetros de uma instrução possam continuar na linha

seguinte é preciso terminar a linha com uma vírgula (,). Se for suprimir um parâmetro obrigatório, deve-se usar uma vírgula para

indicar a ausência. O nome da instrução (cartão) deve ter de um a oito caraceres e deve

começar por um caractere alfanumérico ou pelos caracteres: $, @ e #.

Identificador de cartão Área de indicação Separador Área de

programação Área de

comentário

1 a 2 3 a 10 (com exceções) 11 12 a 72 73 a 80

//

Espaço: se existirem

informações, indica que são parâmetros de uma instrução. Se o restante da

linha à direita estiver vazia,

significa fim do JOB.

* – junto com duas barras indica que o que está à direita é

comentário.

Conjunto de até oito letras – indica o nome do cartão.

Espaço Codificação da instrução com

seus parâmetros

Numeração sequencial

Observação: essa é a nossa orientação para que o JOB possa ter sua codificação organizada e facilmente entendida, visualmente, por todos os

envolvidos.

Page 47: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 4 7

Estrutura da linha de codificação

Um programa JCL possui estrutura bem definida e é composto por linhas que possuem uma estrutura bem definida, assim como existe no programa COBOL.

A linha possui a seguinte estrutura: ////NNOOMMEE CCOOMMAANNDDOO PPAARRÂÂMMEETTRROO CCOOMMEENNTTÁÁRRIIOO

Exemplo de um cartão JOB para demonstrar como é uma linha de comando:

//JCL1001A JOB 'CJEC',CLASS=A

Primeiro, a linha começa com // porque todo o comando deve começar obrigatoriamente com as duas barras. Obrigatório nas colunas um e dois.

Segundo, junto com as duas barras existe JCL1001A, que identifica o nome do cartão JOB. Neste caso, que é cartão JOB, o nome deve ficar juntinho com as duas barras.

Terceiro, após JCL1001A, existe um espaço, que é um separador.

Quarta, após o espaço, existe JOB, que é um comando, e após, um espaço.

Quinto, existe dois parâmetros do cartão JOB separados por vírgula 'CJEC',CLASS=A.

/ / Indica que é uma linha de comando.

NOME Nome que identifica o comando (instrução). É um texto livre

que deve ter no máximo oito (8) caracteres alfanuméricos (letras e números). Deve começar por uma letra.

[ ] Símbolo que significa um ou mais espaços (caracter branco).

COMANDO Nome do comando (instrução, conhecido também como cartão).

PARÂMETRO Parâmetros do comando (instrução).

COMENTÁRIO Comentário posicional na mesma linha do comando.

Reflexão

“Ser subdesenvolvido não é "não ter futuro"; é nunca estar no presente.”

Arnaldo Jabor

Page 48: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Regras para uso de comentários

Um JOB pode possuir comentários. Os comentários podem ocupar a linha toda ou uma parte, neste caso, eles devem estar sempre à direita do comando. À direita do comentário não pode existir mais nada a não ser comentário.

Declaração //*

Para codificar um comentário é necessário utilizar a combinação dos caracteres “//*” (duas barras inclinadas para a direita seguido de um asterisco). Todos os caracteres que estiverem à direita de “//*”, na mesma linha, serão considerados como comentário.

Comentar uma linha inteira

O comentário pode ser estendido para toda a linha, neste caso, os caracteres de controle devem começar na primeira posição da linha.

Exemplo de comentário de linha ....|....1....|....2....|....3....|....4....|....5....|....6....|....7..

//* *******************************************************************

//* LINHA DE COMENTARIO *

//* *******************************************************************

Observar que a primeira linha representa a régua com a escala posicional para que se visualize as posições nas linhas, e sempre será esta a sua função nesta obra.

Neste exemplo, a linha começa com //*, por esse motivo toda a linha é um comentário.

Comentar um pedaço de linha

O comentário também pode ser inserido na parte final de cada linha. Neste caso, após o comentário não poderá existir nada mais do que comentário.

Exemplo de comentário numa posição ....|....1....|....2....|....3....|....4....|....5....|....6....|.

//STEP01 EXEC PGM=IDCAMS //* IDCAMS EH O NOME DO UTILITARIO

Neste exemplo, o comentário começa na posição 29, e a partir daí o restante da linha é um comentário.

Page 49: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 4 9

Regras de continuação de comando

O comando (cartão) pode ser definido em mais de uma linha, mas para isso é preciso terminar a linha do parâmetro com uma vírgula “,”. Os parâmetros devem começar a ser escritos entre as colunas quatro (4) e dezesseis (16).

Um parâmetro pode ser composto de vários outros parâmetros desde que estejam colocados entre parênteses ().

....|....1....|....2....|....3....|....4....|....5....|....6....|.

//RELAT004 DD DSN=AD.RELAT004,

// DISP=(NEW,CATLG,DELETE),

// DCB=(LRECL=133,RECFM=FB),

// SPACE=(TRK,(10,10),RLSE),

// UNIT=SYSWRK

Primeiro, a linha do comando DD começa com //RELAT004.

Segundo, depois da primeira linha existem mais quatro linhas com parâmetros do comando.

Terceiro, a quinta e última linha termina sem a vírgula porque significa o fim do comado.

Quarto, as linhas dois, três e quatro terminam com a vírgula porque significa que existem mais parâmetros do comando.

Como é executado um JOB

Todo JOB é um arquivo-fonte, como se fosse a fonte de um programa, por exemplo, COBOL, e por esse motivo precisa ter um nome.

Um JOB é executado de forma interpretativa pelo JCL, sendo desnecessário a sua compilação e link de edição, como é feito com a linguagem de programação COBOL.

JES – Job Entry Subsystem

Antes que um JOB possa ser interpretado e executado, ele deve ser submetido e enfileirado, e quem faz isso é o subsistema JES2.

JES2 é a mais nova versão do subsistema do JCL que administra a execução do JOB. É ele que possui rotinas de manipulação e análise do JCL. Isso quer dizer que nenhum serviço pode ser apresentado ao sistema operacional sem ter passado pelo JES.

Reflexão

“Só é livre o homem que sabe dar ordens a si mesmo.”

Pitágoras

Page 50: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Entrada de JOB

Um JOB para ser executado precisa que seja submetido. A sua execução depende da existência de áreas específicas chamadas de SPOOL. Existem dois tipos de SPOOL:

SPOOL de entrada SPOOL de saída

SPOOL é um arquivo especial em disco onde fica o JOB e os dados utilizados no cartão SYSIN e as mensagens emitidas na sua execução.

SPOOL de entrada

À medida que o JOB é submetido, ele é validado quanto à sua sintaxe. Se a sintaxe estiver correta, então, o JOB é enfileirado na SPOOL de entrada e fica no aguardo da sua seleção para ser executado. Se houver erro na sua sintaxe, o JOB não será enfileirado.

Todo JOB deve ter uma classe, pois é a partir da sua classificação que é chamado a ser executado.

SPOOL de saída

Durante a execução é possível que um JOB gere mensagens, relatório ou dados de saída. Uma vez os dados, mensagens ou relatórios inseridos na SPOOL de saída, eles poderão ser vistas ou impressas.

Reflexão

“Todo o homem que encontro é superior a mim em alguma coisa. E, neste particular, eu aprendo com dele.”

Emerson

DC@51Z23

CB@39Z76

Fila de JOBs submetidos para execução

Page 51: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 5 1

Execução de JOB

Para um JOB ser executado é necessário que esteja enfileirado num arquivo especial chamado: SPOOL de entrada. A escolha do JOB a ser executado pode depender de várias considerações, isto é, da configuração de cada instalação. Uma das regras para a prioridade na seleção é a classe do JOB. Todo JOB deve ter uma classe, porque é a partir da sua classificação que ele é chamado a ser executado.

Exemplo de JOB com um STEP

....|....1....|....2....|....3....|....4....|....5....|....

//JOB1001A JOB 'CJEC',CLASS=A

//*========================================================

//* CRIA UM ARQUIVO VAZIO =

//*========================================================

//STEP01 EXEC PGM=IDCAMS //* UTILITARIO IDCAMS

//SYSPRINT DD SYSOUT=*

//SAIDA DD DSN=ST.CJEC.ARQ.NOV1007A,

// DISP=(NEW,CATLG,DELETE),

// DCB=(LRECL=30,RECFM=FB),

// SPACE=(TRK,(10,10),RLSE),

// UNIT=SYSDA

//SYSIN DD *

REPRO IDS(NULLFILE) REUSE OFILE(SAIDA)

//

Início do JOB: o JOB sempre inicia com o cartão JOB. Cartão JOB é o identificador de um JOB, podemos dizer que é o nome, cabeçalho. Sem ele um JOB não executa.

Passos do JOB: um JOB pode ter um ou mais passos (STEP). Cada passo é um procedimento, isto é, executa um programa de aplicação ou um utilitário. Por exemplo, gera um relatório ou copia um arquivo.

Fim do JOB: para terminar um JOB é sempre bom colocar o comando “//” (duas barras) para indicar o término do JOB, isto é, pára de executar o JOB, não executa nada após.

Reflexão

“Nós estamos nos afogando em informações, mas sedentos de conhecimento.”

John Naisbitt

Cartão identificador do JOB.

Nome do JOB é “JOB1001A”

Page 52: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Exemplo de JOB com dois STEPs ....|....1....|....2....|....3....|....4....|....5....|....6....|.

//JOB1002A JOB 'CJEC',CLASS=A

//*===============================================================

//* CRIA UM ARQUIVO VAZIO =

//*===============================================================

//STEP01 EXEC PGM=IDCAMS //* IDCAMS EH O NOME DO UTILITARIO

//SYSPRINT DD SYSOUT=*

//SAIDA DD DSN=ST.CJEC.ARQ.NOV2001A,

// DISP=(NEW,CATLG,DELETE),

// DCB=(LRECL=30,RECFM=FB),

// SPACE=(TRK,(10,10),RLSE),

// UNIT=SYSDA

//SYSIN DD *

REPRO IDS(NULLFILE) REUSE OFILE(SAIDA)

//*

//STEP02 EXEC PGM=IDCAMS //* IDCAMS EH O NOME DO UTILITARIO

//SYSPRINT DD SYSOUT=*

//SAIDA DD DSN=ST.CJEC.ARQ.NOV2002A,

// DISP=(NEW,CATLG,DELETE),

// DCB=(LRECL=30,RECFM=FB),

// SPACE=(TRK,(10,10),RLSE),

// UNIT=SYSDA

//SYSIN DD *

REPRO IDS(NULLFILE) REUSE OFILE(SAIDA)

//

Observar que entre o fim do STEP01 (passo 1) e o início do STEP02 (passo 2) existe uma linha de comentário, mas no final do JOB1002A existe uma linha com o comando “//” para indicar o término do JOB.

NULLFILE será abordado mais adiante no item “Opção NULLFILE”.

Reflexão

“Não falarei mal de nenhum homem e falarei tudo de bom que souber de cada pessoa.”

Benjamim Franklin

STEP UM (passo 1)

STEP DOIS (passo 2)

Page 53: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 5 3

Saída de JOB

As mensagens surgidas a partir da execução de um JOB podem ser originadas pelo JCL, programa ou pelo utilitário sendo executado. Para qualquer situação, as mensagens são direcionadas para uma área chamada SPOOL de saída. Uma área de SPOOL de saída pode ter várias subáreas. Cada subárea é gerada por parâmetros específicos. Existem os seguintes parâmetros:

JESJCL = recebe o JOB expandido gerado pelo JES2. JESMSGLG = recebe o resultado da pré-compilação gerada pelo JES2. JESYSMSG = recebe a estatística da pré-compilação gerada pelo JES2. SYSIN = recebe os dados que vão servir de entrada para a execução do

programa ou utilitário. SYSOUT = recebe as mensagens geradas pelo JCL referente à execução do

programa ou utilitário. SYSPRINT = recebe as mensagens geradas pelo programa ou utilitário. SYSUDUMP = recebe as mensagens pelo JCL referente ao DUMP.

A saída de um JOB é diferente dos arquivos de entrada ou de saída utilizados no STEP. No caso, as informações geradas pela execução do JOB ou pelo STEP podem ser direcionadas para visualização eletrônica ou serem diretamente impressas numa impressora. Este direcionamento se dá na classificação do parâmetro SYSOUT, que será abordado mais adiante.

Exemplo de saída da execução do JOB com um STEP

Reflexão

“Feliz o Homem que acha sabedoria, e o Homem que adquire conhecimento; porque melhor é o lucro que ele dá do que o da prata, e melhor a sua renda do que o ouro fino. Mais preciosa é do que pérolas, e tudo o que podes desejar não é comparável a ela.”

Salomão. Sl 3: 13-14

RETURN CODE da execução do STEP e do JOB

Número da execução do JOB. Atribuído automaticamente pelo JCL

Page 54: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Exemplo de saída da execução do JOB com dois STEPs

Mensagem da execução do job com um STEP

Saída da execução do JOB na SPOOL de saída com o JOB e as mensagens do que ocorreu na execução.

1 //JOB1001A JOB 'CJEC',CLASS=A

2 //*=====================================================================

3 //* CRIA UM ARQUIVO VAZIO =

4 //*=====================================================================

5 //STEP01 EXEC PGM=IDCAMS //* IDCAMS EH O NOME DO UTILITÁRIO

6 //SYSPRINT DD SYSOUT=*

7 //SAIDA DD DSN=ST.CJEC.ARQ.NOV1007A,

8 // DISP=(NEW,CATLG,DELETE),

9 // DCB=(LRECL=30,RECFM=FB),

10 // SPACE=(TRK,(10,10),RLSE),

11 // UNIT=SYSDA

12 //SYSIN DD *

14 //

**** EXECUTION SUMMARY ---------------------------------------------------

10:56:50 JCLCM0188I JOB STARTED

10:56:50 JCLCM0190I STEP STARTED STEP01

SYS2012.S0824.S105650.J01033.D00001.SYSPRINT SYSPRINT

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000054.DAT SPOOLED

ST.CJEC.ARQ.NOV1007A SAIDA

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000055.DAT CATALOGED

SYS2012.S0824.S105650.J01033.D00002.SYSIN SYSIN

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000056.DAT DELETED

---> 10:56:50 JCLCM0191I STEP ENDED - RC(0000)

---> 10:56:50 JCLCM0182I JOB ENDED - RC(0000)

RETURN CODE da execução dos dois STEPs e do JOB

Número da execução do JOB. Atribuído automaticamente pelo JCL

Código do JOB executado

Page 55: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 5 5

Saída da execução do JOB na SPOOL de saída com o JOB e as mensagens do que ocorreu na execução.

1 //JOB1002A JOB 'CJEC',CLASS=A

2 //*===================================================================

3 //* CRIA UM ARQUIVO VAZIO =

4 //*===================================================================

5 //STEP01 EXEC PGM=IDCAMS //* IDCAMS EH O NOME DO UTILITARIO

6 //SYSPRINT DD SYSOUT=*

7 //SAIDA DD DSN=ST.CJEC.ARQ.NOV2001A,

8 // DISP=(NEW,CATLG,DELETE),

9 // DCB=(LRECL=30,RECFM=FB),

10 // SPACE=(TRK,(10,10),RLSE),

11 // UNIT=SYSDA

12 //SYSIN DD *

14 //*

15 //STEP02 EXEC PGM=IDCAMS //* IDCAMS EH O NOME DO UTILITARIO

16 //SYSPRINT DD SYSOUT=*

17 //SAIDA DD DSN=ST.CJEC.ARQ.NOV2002A,

18 // DISP=(NEW,CATLG,DELETE),

19 // DCB=(LRECL=30,RECFM=FB),

20 // SPACE=(TRK,(10,10),RLSE),

21 // UNIT=SYSDA

22 //SYSIN DD *

24 //

**** EXECUTION SUMMARY ---------------------------------------------------

11:34:59 JCLCM0188I JOB STARTED

11:34:59 JCLCM0190I STEP STARTED STEP01

SYS2012.S0824.S113459.J01039.D00001.SYSPRINT SYSPRINT

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000066.DAT SPOOLED

ST.CJEC.ARQ.NOV2001A SAIDA

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000067.DAT CATALOGED

SYS2012.S0824.S113459.J01039.D00002.SYSIN SYSIN

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000068.DAT DELETED

---> 11:34:59 JCLCM0191I STEP ENDED - RC(0000)

11:34:59 JCLCM0190I STEP STARTED STEP02

SYS2012.S0824.S113459.J01039.D00003.SYSPRINT SYSPRINT

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000069.DAT SPOOLED

ST.CJEC.ARQ.NOV2002A

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000070.DAT CATALOGED

SYS2012.S0824.S113459.J01039.D00004.SYSIN SYSIN

C:\MFUSER\PROJECTS\JCLTB01A\DATA\S0000071.DAT DELETED

---> 11:35:00 JCLCM0191I STEP ENDED - RC(0000)

---> 11:35:00 JCLCM0182I JOB ENDED - RC(0000)

Execução do STEP01

Execução do STEP02

Situação da execução do JOB de nome JOB1002A

Page 56: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

Identificando a situação de execução de um JOB

O término da execução de um JOB pode ser normal ou anormal (ABEND). A situação do JOB vai depender da situação da execução de cada unidade, e serve para indicar o resultado da execução do processo como um todo. O que importa, mesmo, é a execução de cada um dos passos, STEPs, que estão no JOB.

Situação final de execução do STEP

Quando o STEP é executado, é acionada a execução do um utilitário ou de um programa de aplicação. Quando eles terminam sua execução, é enviado para o sistema operacional um número denominado RETURN-CODE (eventualmente referenciado como COND CODE) para que o JCL possa identificar qual a situação da execução desse programa.

O valor da variável do sistema RETURN-CODE é transferido para a variável COND do JCL. A variável COND está associada à execução do comando (cartão) EXEC.

Fim normal da execução do STEP

Um programa termina normalmente com RETURN-CODE igual a zero, mas pode possuir algumas variações; automaticamente, o sistema se encarrega de atualizar a variável.

Mas existe a possibilidade de que cada programa possa atribuir um valor que esteja de acordo com o interesse do sistema. Neste caso, antes que o programa termine, é necessário movimentar o valor adequado ao tipo de erro ocorrido.

Exemplo de movimentação possível para o programa nas seguintes linguagens:

COBOL : MOVE 4 TO RETURN-CODE

Assembler : L 15,=F'4'

PL/I : CALL PLIRETC (4);

Easytrieve : RETURN-CODE = 4

Após a movimentação do valor para a variável, o programa deve emitir o comando (instrução) que termina a execução de forma normal, conforme sua linguagem:

COBOL : STOP RUN ou GOBACK

Assembler : BR 14 ou RETURN

PL/I : RETURN ou END;

Easytrieve : STOP (explícito ou implícito)

Que valores o RETURN-CODE pode ter para indicar fim de execução normal fora o zero?

Isso depende do que está sendo executado.

Page 57: Job Control Language - perse.com.br · O autor, assim como fez no livro de LÓGICA, COBOL, DB2 e CICS, tem a preocupação de fornecer um material didático e, ao mesmo tempo, um

J C L

C a r l o s C a m p o s P á g i n a 5 7

Analisemos, por exemplo, a execução do aplicativo de compilação seguida pelos links edição e execução.

Vejamos como fica a situação de término para a compilação COBOL:

Se não houver nenhum erro de compilação, a execução termina com return-code igual a zero.

Se houver erro simples, que não impede a execução do aplicativo de compilação, a execução termina com return-code igual a 4.

Se houver erro de maior severidade, que impede a execução do aplicativo de compilação, a execução termina com return-code igual a 8.

Se houver erros mais graves, a execução termina com return-code igual a 12 ou 16.

Após a execução desta etapa, o sistema operacional, analisa o RETURN-CODE da compilação, antes de iniciar a execução do link editor, e pode determinar se as execuções restantes, link edição e execução do programa, devem prosseguir ou não.

Vejamos como fica a situação de término para a link edição COBOL:

Se não houver nenhum erro de link edição, a execução com return-code fica igual a zero.

Se houver algum erro, dependendo de sua severidade, a execução é terminada com return-code igual a 4, ou 8, ou 12, ou 16.

Após a execução desta etapa, o sistema operacional analisa o RETURN-CODE do link edição antes de iniciar a execução do programa, e pode determinar se ela deve ser iniciada ou não.

Esta variação permite estabelecer uma relação de dependência para a execução sequencial de diversos programas, na qual, quando um deles terminar em condições que podem prejudicar os subsequentes, a execução dos seguintes pode ser “pulada”. Nos casos dos programas, o valor de RETURN-CODE deve ser comandado pelo próprio programa.

Fim anormal da execução do STEP

Assim como um programa pode terminar normalmente, também pode terminar de forma anormal.

A forma anormal indica que houve algum tipo de erro, e se a execução iniciar ou continuar, haverá com certeza algum tipo de problema no processo que se refletirá no negócio. Por tudo isso, a partir da avaliação do valor do RETURN-CODE é que se poderá determinar se o processamento continua ou para.

Ao término de execução anormal, dá-se o nome de ABEND (ABnormal END).

Há dois tipos de ABEND: os programados e os não programados.