Conceitos jcl mvs
Download
1 / 211

Conceitos JCL MVS - PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on

Conceitos JCL MVS. Apresentação. Obrigado por usar esta apresentação. Você está livre para fazer isso. Eu agradeço se fizer referência ao autor ao utilizá-la. Agradeço se você me enviar qualquer correção que ache necessária para otimizar a compreensão do leitor.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Conceitos JCL MVS' - xannon


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Apresenta o
Apresentação

Obrigado por usar esta apresentação. Você está livre para fazer isso.

Eu agradeço se fizer referência ao autor ao utilizá-la.

Agradeço se você me enviar qualquer correção que ache necessária para otimizar a compreensão do leitor.

O mesmo se aplica a erros técnicos que você encontrar; por favor me ajude a deixar este material sem erros.

Alberto Romano Schiesari – São Paulo - Brasil

www.profars.com

arschiesari@yahoo.com


Sum rio
Sumário

Principais sistemas operacionais IBM

Linha MVS

Execução da demanda de serviços

Fluxo geral

JES2

Spool de entrada e spool de saída

Spool de entrada

Submissão de jobs - Roscoe

Enfileiramento de jobs no spool de entrada

Conteúdo de cada job no spool de entrada

Initiators

Spool de saída

JCL

JOB

EXEC

DD

Busca em bibliotecas

PROCS

Apêndice - Mainframes IBM

Apêndice - CONTROL’s


Conceitos
Conceitos

Principais sistemas operacionais IBM(as datas citadas são aproximadas)verhttp://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp


Conceitos principais sistemas operacionais ibm
Conceitos – Principais sistemas operacionais IBM

Linha “DOS” ou “VSE”DOS (1966)DOS/VS (1972)DOS/VSE (80’s)VSE/ESA (1991)z/VSE (2005)


Conceitos principais sistemas operacionais ibm1
Conceitos – Principais sistemas operacionais IBM

  • Principais sistemas operacionais IBMLinha “VM”VM/370 (1972)VM/SP (1980)VM/XA (1988)VM/ESA (1990)z/VM (2000)


Conceitos1

Conceitos – Principais sistemas operacionais IBM

Conceitos

  • Principais sistemas operacionais IBMLinha “real-time” (transacionais)ACP (1969)TPF (1979)z/TPF (2005)


Conceitos2

Conceitos – Principais sistemas operacionais IBM

Conceitos

  • Principais sistemas operacionais IBMLinha Unix-likeUTS (1981)AIX/370 (1990)AIX/ESA (1991)LINUX (1999)Open Solaris (2008)


Conceitos3

Conceitos – Principais sistemas operacionais IBM

Conceitos

  • Principais sistemas operacionais IBM

Linha MVSMFT (1966) ; OS/VS1 (1972) (fim)MVT (1967)

OS/VS2 R1 (SVS) (1972) 24-bit addressing; Single Address SpaceMVS (OSVS2 R2) (1974) 24-bit addressing; Múltiplos Address SpacesMVS/370 (1981) .MVS/XA (83) Extended ArchitectureMVS/ESA (1988) Enterprise System Architeture; 31-bit addressingOS/390 (1995) . z/OS (2000) ; 24-,31- 64-bit addressingz/OS 1.10 (Sep 2008) (aqui = 1.09)


Conceitos4

Conceitos – Principais sistemas operacionais IBM

Conceitos

Cada sistema operacional tem sua linguagem para elaborar “scripts” e para ser instrumento formal de (a) solicitação de serviços ao S.O. pelo usuário(b) retorno de resultados e mensagens do S.O. para o usuário Essa linguagem, no caso do MVS e s.o.’s derivados é genericamente denominada JCL (Job Control Language = Linguagem de Controle de Serviços)


Conceitos5

Conceitos – Principais sistemas operacionais IBM

Conceitos

A título de curiosidade: exemplo de JCL para a linha DOS baixa plataforma (arquivos .bat ) @echo offcls:aECHO Compilando %1IF EXIST %1.OBJ DEL %1.OBJCOBOL %1; ANIM COPYLIST > %1.LSTIF ERRORLEVEL 1 ECHO *** Erro LINK %1+%COBDIR%\ADIS+%COBDIR%\ADISKEY+%COBDIR%\ADISINIT; >> %1.LSTrem TYPE %1.LSTshift if not "%1" == "" goto a@ECHO


Conceitos6

Conceitos – Principais sistemas operacionais IBM

Conceitos

A título de curiosidade: exemplo de JCL para a linha UNIX (Shell Script)#!/bin/ksh#---------------------------------------------------------------------## Rotina: rsyil02.sh - Salva arquivo de retorno do Mainframe ##---------------------------------------------------------------------#BN=` basename $0 `DN=` dirname $0 `. $DN/raet.functionsFILE=/comunicacao/bi/recebidos/rsybi02if [ -f $FILE.txt ] ; then if [ -f $FILE.txt ] ; then salvacopia $FILE.txt || exit $? expurga $FILE.txt 12 || exit $? else echo " Erro. Arquivo $FILE.txt nao existe" exit 1 fi \mv -f $FILE.txt $FILEelse echo " Movimento Inexistente para o dia." exit 0fi


Conceitos7

Conceitos – Principais sistemas operacionais IBM

Conceitos

A título de curiosidade: exemplo de JCL para a linha VSE>SUB,R,N >* BKPD047 - BACKUP D047 TO T047 * $$ JOB JNM=BKPD047,CLASS=8,USER='44-R.WALKO' * $$ PRT CLASS=B,DISP=H // JOB BKPD047 BACKUP D047 TO T047 // DLBL D047,'D047.ADPDCS.INPUT ',,VSAM,CAT=PRODCAT,BUFSP=40960 // TLBL FILEB,'T047,U' // EXEC EASYTREV INCLUDE EZBKVSES D047 VS VB 750 8352 UNLOAD /* /& * $$ EOJhttp://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml


Conceitos8

Conceitos – Principais sistemas operacionais IBM

Conceitos

A título de curiosidade: o equivalente para a linha MVS//BKPD047 JOB (BKPD047),' ',CLASS=A,MSGCLASS=X, // MSGLEVEL=(1,1),REGION=6M //* //JOBLIB INCLUDE MEMBER=JOBLIB //STEP0010 EXEC PGM=SORT //* MODULE EASYTREV PROCESSED BY PLUG-IN LCPEZT //* VS VS I PRODCAT D047 'D047.ADPDCS.INPUT' //SORTIN DD DSN=MVS.D047.ADPDCS.INPUT,DISP=SHR //* MT O FILEB 'T047,U' //SORTOUT DD DSN=MVS.T047, // DISP=(NEW,CATLG,DELETE), // UNIT=TAPE //* PR O //SYSOUT DD SYSOUT=* //* CD I //SYSIN DD * *INCLUDE EZBKVSES D047 VS VB 750 8352 UNLOAD SORT FIELDS=COPY RECORD TYPE=V,LENGTH=750 /* //http://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml


Linha mvs execu o da demanda de servi os
Linha MVS – execução da demanda de serviços

Execução da demanda de serviços


Linha mvs principais componentes para servi os
Linha MVS – principais componentes para serviços

CUIDADO! ACHTUNG!Tudo o que você ver/ler/escutar é válido para aplicações BATCH !


Linha mvs principais componentes para servi os1
Linha MVS – principais componentes para serviços

CUIDADO! ACHTUNG!Tudo o que você ver/ler/escutar é válido para aplicações BATCH !


Linha mvs principais componentes para servi os2
Linha MVS – principais componentes para serviços

Fluxo geral

SISTEMA

Entrada (pedido de execução) de serviços

Saída dos resultados

(basicamente: impressão em papel ou “em terminal”)


Linha mvs principais componentes para servi os3

?

Como entram

os serviços?

Linha MVS – principais componentes para serviços

Fluxo geral

SISTEMA

Entrada (pedido de execução) de serviços


Linha mvs principais componentes para servi os4

?

Como saem

os resultados?

Linha MVS – principais componentes para serviços

Fluxo geral

SISTEMA

Saída dos resultados

(basicamente: impressão em papel ou “em terminal”)


Linha mvs principais componentes para servi os5
Linha MVS – principais componentes para serviços

Fluxo geral

Existe um software específico para executar essas funções de entrada das demandas e saída de resultados.

É o JES2.

(Job Entry Subsystem)


Conceitos jcl mvs

JES2

Componentes do JES2 que recebem as “entradas”

Componentes do JES2 que dão saída aos resultados

JES2

Portanto:

Entrada (pedido de execução) de serviços

Saída dos resultados

(basicamente: impressão em papel ou “em terminal”)


Conceitos jcl mvs
JES2

Em outras palavras:

Sistema Operacional z/OS

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Entrada (pedido de execução) de serviços

Saída dos resultados

(basicamente: impressão em papel ou “em terminal”)

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...


Conceitos jcl mvs
JES2

Por exemplo:

Sistema Operacional z/OS

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Entrada de serviços via terminal (sub)

Saída dos resultados via terminal (browse de sysout de job)

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...


Conceitos jcl mvs
JES2

Mas... Devemos lembrar que:

Sistema Operacional z/OS

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Terminais para SUB

(PRECISAM estar associados a um aplicativo !!!)

Terminais para BROWSE

(PRECISAM estar associados a um aplicativo !!!)

Aplicativo z ...


Conceitos jcl mvs
JES2

Mas... Devemos lembrar que:

Sistema Operacional z/OS

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Qual aplicativo é responsável por este terminal?

Qual aplicativo é responsável por este terminal?

Aplicativo z ...


Conceitos jcl mvs
JES2

Pode ser o Roscoe...

JES2

ROSCOE

O Roscoe é quem submete serviços para o JES2

O Roscoe é quem trata os resultados, “pegando-os” do JES2


Conceitos jcl mvs
JES2

Ou o TSO...

JES2

TSO

O TSO é quem submete serviços para o JES2

O TSO é quem trata os resultados, “pegando-os” do JES2


Conceitos jcl mvs
JES2

Mas, seja um ou seja outro...

JES2

Roscoe ou TSO

O terminal é só a interface visual

O terminal é só a interface visual


Conceitos jcl mvs
JES2

Os dados, na verdade, estão onde?

JES2

Roscoe ou TSO

Onde está a sysout que acessamos para ver?

Onde está o stream que preparamos e submetemos?


Conceitos jcl mvs
JES2

Em disco ! Nas áreas de spool !

JES2

Roscoe ou TSO

Área de spool

de saída

Área de spool

de entrada


Entrada de servi os
Entrada de serviços

Vamos ver inicialmente alguns detalhes do processo de spool de entrada

JES2

Área de spool

de entrada

Roscoe ou TSO


Entrada de servi os roscoe
Entrada de serviços - ROSCOE

OBS.: usando o ROSCOE (as coisas acontecem desta forma)

Área de manipulação

do Roscoe (AWS)

(criação / FETCH/ATTACH)

Roscoe

LIB’s do Roscoe

(organização

de dados proprietária)

(quando for dado

SAVE or UPDATE)


Entrada de servi os roscoe1
Entrada de serviços - ROSCOE

OBS.: ou o TSO (os dados são manipulados diretamente nos arquivos “normais”)

Membro de um PDS

TSO

Arquivo sequencial


Entrada de servi os roscoe2
Entrada de serviços - ROSCOE

OBS.: nós nos referiremos à manipulação dos dados a submeter usando esta figura

Dados editados

a submeter

TSO/Roscoe


Entrada de servi os roscoe3
Entrada de serviços - ROSCOE

Passo 1 = edição dados a submeter

Dados editados

a submeter

TSO/Roscoe


Entrada de servi os roscoe4
Entrada de serviços - ROSCOE

Passo 1 = edição dados a submeter

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*

TSO/Roscoe


Entrada de servi os roscoe5
Entrada de serviços - ROSCOE

Vendo de outro jeito...

TSO/Roscoe


Entrada de servi os roscoe6
Entrada de serviços - ROSCOE

Analisando c-u-i-d-a-d-o-s-a-m-e-n-t-e os dados a submeter...

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*

TSO/Roscoe


Entrada de servi os roscoe7
Entrada de serviços - ROSCOE

Por outro “ângulo”, vendo o stream como um todo ...

TSO/Roscoe

//PSTARS3T JOB (1234),'ALBERTO',

// CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

Dados do dataset SYSIN do step C

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

Dados do dataset AGENCIAS do step G

Em vermelho = JCL

Em azul = dados


Entrada de servi os roscoe8
Entrada de serviços - ROSCOE

Por outro “prisma”, vendo por tipo de dados ...

TSO/Roscoe

//PSTARS3T JOB (1234),‘ALBERTO',

// CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

Dados do arquivo SYSIN do Step C

Dados do arquivo AGENCIAS do Step G

Em vermelho = JCL

Em azul = dados


Entrada de servi os roscoe9

//PSTARS3T JOB (9526),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA

FLAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*

Entrada de serviços - ROSCOE

Voltando à relação entre o Roscoe e o JES...

TSO/Roscoe


Entrada de servi os roscoe10
Entrada de serviços - ROSCOE

O Roscoe submete (entrega) o stream vindo da AWS para o JES...

JES2

Área de spool

de entrada

Dados editados

a submeter

TSO/Roscoe

SUB


Entrada de servi os roscoe11
Entrada de serviços - ROSCOE

O componente do JES que “lê” o que alguém (por ex. o Roscoe) submete é (são) a(s) READER(s) / INTERPRETER(s)

JES2

Área de spool

de entrada

Reader

TSO/Roscoe

AWS

SUB


Entrada de servi os roscoe12

SUB

SUB

Entrada de serviços - ROSCOE

Tem diversas readers, que atendem a todos os componentes que submetem JOBs; ao ler, elas já fazem uma validaçãozinha antes de gravar na área de spool (por isso o interpreter)

JES2

Área de spool

de entrada

Readers

Datasets “normais”

AWS

TSO

Roscoe


Entrada de servi os1

SUB

SUB

Entrada de serviços

Vamos ver melhor essa tal de área de spool de entrada

JES2

Área de spool

de entrada

Readers

Datasets “normais”

AWS

TSO

Roscoe


Entrada de servi os2

JOB0001

JOB0002

JOB0003

JOB0004

JOB0005

JOB0008

Etc...

JOB0007

JOB0006

Entrada de serviços

Área de spool de entrada : a unidade de “arquivamento” é o JOB


Entrada de servi os3

JOB0001

JOB0002

JOB0003

JOB0004

JOB0005

JOB0008

Etc...

JOB0007

JOB0006

Entrada de serviços

Os JOBS são enfileirados na ordem de chegada; cada um recebe um número identificador, que vai acompanhá-lo até o fim de sua vida


Entrada de servi os4

JOB0001

JOB0002

JOB0003

JOB0004

JOB0005

JOB0008

Etc...

JOB0007

JOB0006

Entrada de serviços

Os JOBS ficam na fila aguardando execução.


Entrada de servi os5
Entrada de serviços

Vamos ver um pouquinho mais detalhadamente como eles ficam armazenados. Detalhemos um deles (JOB0001):

JOB0001

TODOS os registros (statements) de JCL

(um único arquivo)

Para cada arquivo in-stream contido no que foi submetido, é criado um arquivo identificado por meio do nome do step + nome do DD


Entrada de servi os6
Entrada de serviços

Exemplo: se for submetido o stream (ref. JOB0001)

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES'

//STEP2 EXEC PGM=PGTST02


Entrada de servi os7
Entrada de serviços

O spool de entrada referente ao JOB0001 vai ficar assim:

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES'

//STEP2 EXEC PGM=PGTST02

JOB0001

//PSTARS3T JOB (123),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES‘

//STEP2 EXEC PGM=PGTST02

Não vai ter arquivos referente a dados in-stream pois não há nenhum dado in-stream


Entrada de servi os8
Entrada de serviços

Exemplo: se for submetido o stream (ref. JOB0002)

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES'

//STEP2 EXEC PGM=PGTST02

//STEP3 EXEC PGM=IDCAMS

//SYSOUT DD SYSOUT=*

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

DELETE DES.ALB.A001 PURGE /* DELETA DATASET */


Entrada de servi os9
Entrada de serviços

O spool de entrada referente ao JOB0002 vai ficar assim:

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES'

//STEP2 EXEC PGM=PGTST02

//STEP3 EXEC PGM=IDCAMS

//SYSOUT DD SYSOUT=*

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

DELETE DES.ALB.A001 PURGE /* DELETA DATASET */

JOB0002

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES'

//STEP2 EXEC PGM=PGTST02

//STEP3 EXEC PGM=IDCAMS

//SYSOUT DD SYSOUT=*

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

Step=STEP3 ; DD=SYSIN

DELETE DES.ALB.A001 PURGE /* DELETA DATASET */


Entrada de servi os10
Entrada de serviços

Voltemos ao nosso JOB original, aquele com os 3 steps (compilação, linkedição e execução de um programa em Assembler); supor que seu número seja JOB1234

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*


Entrada de servi os11
Entrada de serviços

Ele tem JCL e dados in-stream

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*


Entrada de servi os12
Entrada de serviços

O spool de entrada referente ao JOB1234 vai ficar (quase...) assim:

JOB1234

//PSTARS3T JOB (1234),‘ALBERTO',CLASS=T,MSGCLASS=O

//STEP1 EXEC ASMACLG

//C.SYSIN DD *

//G.SYSPRINT DD SYSOUT=*

//G.SYSOUT DD SYSOUT=*

//G.AGENCIAS DD *

Step=C ; DD=SYSIN

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

Step=G ; DD=AGENCIAS

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*


Entrada de servi os13
Entrada de serviços

Na verdade, a parte de JCL já fica EXPANDIDA (detalhes ao vermos PROCs)

JOB1234

1 //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

2 //STEP1 EXEC ASMACLG

3 XXASMACLG PROC

4 XXC EXEC PGM=ASMA90

5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR

6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

7 XXSYSPRINT DD SYSOUT=*

8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND),

XX UNIT=SYSALLDA,DISP=(MOD,PASS),

XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1)

9 //C.SYSIN DD *

10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C)

11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)

12 XX DD DDNAME=SYSIN

13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)),

XX DSN=&&GOSET(GO)

14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

15 XXSYSPRINT DD SYSOUT=*

16 XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))

17 //G.SYSPRINT DD SYSOUT=*

18 //G.SYSOUT DD SYSOUT=*

19 //G.AGENCIAS DD *


Entrada de servi os14
Entrada de serviços

FINALMENTE !!! O JOB1234 fica deste jeitinho:

JOB1234

1 //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

2 //STEP1 EXEC ASMACLG

3 XXASMACLG PROC

4 XXC EXEC PGM=ASMA90

5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR

6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

7 XXSYSPRINT DD SYSOUT=*

8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND),

XX UNIT=SYSALLDA,DISP=(MOD,PASS),

XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1)

9 //C.SYSIN DD *

10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C)

11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)

12 XX DD DDNAME=SYSIN

13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)),

XX DSN=&&GOSET(GO)

14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

15 XXSYSPRINT DD SYSOUT=*

16 XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))

17 //G.SYSPRINT DD SYSOUT=*

18 //G.SYSOUT DD SYSOUT=*

19 //G.AGENCIAS DD *

Step=C ; DD=SYSIN

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

Step=G ; DD=AGENCIAS

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*


Entrada de servi os15

JOB1234

1 dataset com todo o JCL, já expandido

Step=ssssssss ; DD=dddddddd

1 dataset para cada arquivo in-stream

Entrada de serviços

OK? Decore direitinho esse formato! Vamos voltar a falar sobre isso.


Entrada de servi os16

JOB0001

JOB0002

JOB0003

JOB0004

JOB0005

JOB0008

Etc...

JOB0007

JOB0006

Entrada de serviços

Voltando ao que interessa, havia uma fila de JOBS esperando para execução...


Execu o de servi os
Execução de serviços

Para que os jobs sejam executados, entram em ação outros componentes do sistema: os INITIATOR’s

Sistema Operacional z/OS

JOBS da área

de

spool

de entrada

Componente 1 ...

Seleção para execução

Initiator’s

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...


Execu o de servi os1
Execução de serviços

Eles (os INITIATOR’s) tem por função selecionar o(s) job(s) que estão em espera e iniciar sua execução.

JOBS da área

de

spool

de entrada

Initiator’s

Seleção para execução

Qual o critério que eles usam para selecionar?A CLASSE do job.


Execu o de servi os2
Execução de serviços

Cada initiator atende algumas classes pré-definidas. Ex. INIT 1 = atende jobs de classes A, B e CINIT 2 = atende jobs de classes D, E e F

INIT 1 : atende jobs de classes A, B e C; no exemplo, é ele quem irá selecionar os jobs 0001 e 0002.

INIT 2 : atende jobs de classes D, E e F; no exemplo, é ele quem irá selecionar os jobs 0004 e 0005.

Enquanto não houver INIT que atenda às classes R e/ou T, os jobs 0003 e 0006 não serão executados (selecionados para execução)


Execu o de servi os3
Execução de serviços

Exemplo: veja a lista de INITs conforme exibida pelo DIS INIT do Roscoe:

> APPLID(EMPROSCD) USER(OB3,ARS243)

>

....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8

INIT 1 ACTIVE JOB00716 ADP#6IA (1) PVAG1 0:17:13 C=12345

INIT 2 ACTIVE JOB01873 NDVJD000 (1) COPYDIR 0:05:04 C=21345

INIT 3 ACTIVE JOB00809 SCO#END (1) NDVRBAT 0:01:15 C=32154

INIT 4 INACTIVE C=0

INIT 5 INACTIVE C=85

INIT 6 ACTIVE JOB00789 OCC#SCL (9) NDVRBAT 0:05:05 C=9

INIT 7 INACTIVE C=QP

INIT 8 ACTIVE JOB00812 FIN#T305 (S) STEP002 0:01:00 C=QS

INIT 9 INACTIVE C=QR

INIT 10 ACTIVE JOB00605 CPC#BUS (A) NDVRBAT 0:28:38 C=YA

INIT 11 ACTIVE JOB00771 SCO#ALB (Y) NDVRBAT 0:08:08 C=YU

INIT 12 ACTIVE JOB00819 NDVJPKPR (Z) BC1JPCKG 0:00:05 C=ZB

INIT 13 INACTIVE C=CT

INIT 14 INACTIVE C=ZN

INIT 15 ACTIVE JOB00782 SCO#A005 (W) STEP1 0:06:13 C=W


Execu o de servi os4
Execução de serviços

Ex.: INIT 1 = atende jobs de classes A, B e C.A PRIORIDADE DE SELEÇÃO é, em princípio, FIFO.Neste caso, será selecionado primeiro o JOB0001 e depois o JOB0002

INIT 1 : atende jobs de classes A, B e C; no exemplo, é ele quem irá selecionar os jobs 0001 e 0002.

Prioridade de seleção: em princípio = FIFO


Execu o de servi os5
Execução de serviços

INIT 1 escolheu (selecionou) o JOB0001

INIT 1 : selecionou o JOB0001 para execução


Execu o de servi os6
Execução de serviços

Ele vai pegar as informações referentes a cada step (pedido de execução de um programa [EXEC] + informações sobre os arquivos usados pelo programa [DD] )e fazer algumas coisinhas.

Tratar CADA STEP


Execu o de servi os7
Execução de serviços

1º. step : - Identificar qual o programa a executar (pega do PGM=xxxxxxxx)- Verificar o DISP de cada DD:-- Se for DISP=OLD ou DISP=SHR ou DISP=MOD, verificar se ele existe, se não está reservado para outro usuário, etc...- Se for DISP=NEW, criá-lo (já existe? cabe? Etc...) - Pede para o LOADER carregar o programa da biblioteca adequada (tem STEPLIB? Tem JOBLIB?)Deixa tudo preparadinho para o OPEN do programa... (*)(*) a não ser que o programa use DYNALLOC... É o caso do CICS...


Execu o de servi os8

(

Execução de serviços

Abrindo parênteses...


Execu o de servi os9
Execução de serviços

Alocação de arquivos: (a) fora do programa, antes do início de sua execução (pelo initiator); a base é o statement DD (b) no programa (dinamicamente); neste caso: - não deve ter DD - a alocação é feita por um serviço (macro / SVC) solicitado ao sistema, denominado DYNALLOC (dynamic allocation = alocação dinâmica); o programa deve efetuar o tratamento caso a alocação não consiga ser feita


Execu o de servi os10

)

Execução de serviços

Fechando parênteses...


Execu o de servi os11
Execução de serviços

1º. step : Tudo OK?Então pode chamar o programa para ser executado.Pede para o LOADER carregar o programa e transfere o controle (lembra da PSW? do entry-point?) para a primeira instrução do programa.Ou seja (falando em Assemblês): é o init quem dá o BALR 14,15 para o início de nosso programa.


Execu o de servi os12
Execução de serviços

1º. step : Nosso programa é executado.Ele ser executado significa que a CPU executará instruções dele.Mas...Tem dezenas de outros que estão também brigando para que suas instruções sejam executadas pela CPU.Aí entra em jogo a PRIORIDADE DE EXECUÇÃO ou PRIORIDADE DE DESPACHO (dispatching priority).Ela determina quais as “mordomias” de prioridade que meu programa terá no algoritmo que determina quanto a CPU vai dedicar para cada programa concorrente pelo seu uso.


Execu o de servi os13
Execução de serviços

1º. step : E se ele ler um arquivo que foi fornecido via DD * ?Quando for dado o OPEN, o método de acesso recebe a informação (preparada pelo JES2) de que o arquivo está “aguardando” no spool de entrada do job (identificado pelo nome do step e nome do DD).Portanto, nosso programa, nesse caso, vai ler direto da área de spool de entrada.


Execu o de servi os14
Execução de serviços

1º. step :

JOB1234

1 //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O

2 //STEP1 EXEC ASMACLG

3 XXASMACLG PROC

4 XXC EXEC PGM=ASMA90

5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR

6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

7 XXSYSPRINT DD SYSOUT=*

8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND),

XX UNIT=SYSALLDA,DISP=(MOD,PASS),

XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1)

9 //C.SYSIN DD *

10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C)

11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)

12 XX DD DDNAME=SYSIN

13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)),

XX DSN=&&GOSET(GO)

14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

15 XXSYSPRINT DD SYSOUT=*

16 XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))

17 //G.SYSPRINT DD SYSOUT=*

18 //G.SYSOUT DD SYSOUT=*

19 //G.AGENCIAS DD *

Step=C ; DD=SYSIN

PROGRAMA START 0

ENTRAR

BAL R14,ROTMAIN PROG PROPRIAMENTE DITO

SAIR

DC A(0) SAVEAREA DO ENDERECO VOLTA

ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA

OPEN (AGENCIAS,INPUT) ABRE ARQUIVO

LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE?

BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS

B LEITURA VOLTA A LER

ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

DC A(0) SAVEAREA DO ENDERECO DE VOLTA

LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA

B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU

SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA

* DECLARACAO DE ARQUIVOS E AREAS

RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM

AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA

LAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

O programa lê daqui!

Step=G ; DD=AGENCIAS

0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------*

0003NOME DA AGENCIA 0003---------*

0004NOME DA AGENCIA 0004---------*


Execu o de servi os15
Execução de serviços

1º. step : Nosso programa termina. Falando em Assemblês, quando ele der o BR 14 derradeiro, o controle volta para o initiator; especificamente para um sub-componentezinho chamado terminator (também não foi desenvolvido por Casseta & Planeta Ltda): vê como foi o término (normal, anormal), o Return Code, fecha os arquivos não fechados, etc.


Execu o de servi os16
Execução de serviços

2º. step em diante: O processo é repetido para todos os steps do JOB, acrescentando-se o teste do Return Code para saber se o step deve ou não ser executado (COND=...)


Execu o de servi os17
Execução de serviços

OK?Entrada de jobs OK?


Execu o de servi os18
Execução de serviços

Hora de ver como funciona o spool de saída


Sa da de resultados relat rios
Saída de resultados (relatórios)

“Um monte de gente” acessa dados no spool de saída

Área de spool

de saída

JES2

Roscoe(CA software) ou

TSO (IBM software)

Control

(software da BMC software)


Sa da de resultados relat rios1
Saída de resultados (relatórios)

Quem “grava” no spool de saída ?

JES2

Área de spool

de saída

Aplicativos

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios2
Saída de resultados (relatórios)

Todo mundo que “imprime” alguma coisa...Aplicativos e sistema operacional.

JES2

Área de spool

de saída

Aplicativos

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios3
Saída de resultados (relatórios)

Mas... na verdade, é só o JES quem grava. Sabe por quê?

JES2

Área de spool

de saída

Aplicativos

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios4
Saída de resultados (relatórios)

Porque todo mundo que “imprime” é interceptado pelo JES e ele redireciona para o spool de saída, do qual ele é o administrador; isso é naturalmente feito se a saída é SYSOUT=treco

JES2

Área de spool

de saída

Aplicativos

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios5
Saída de resultados (relatórios)

Para onde são direcionadas as saídas do sistema operacional?Para a classe de saída indicada em MSGCLASS=treco

JES2

Área de spool

de saída

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios6
Saída de resultados (relatórios)

Para onde são direcionadas as saídas dos aplicativos?Para a classe de saída indicada em SYSOUT=treco

JES2

Área de spool

de saída

Aplicativos


Sa da de resultados relat rios7
Saída de resultados (relatórios)

Mas o que é esse TRECO ?

JES2

?

Aplicativos

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios8
Saída de resultados (relatórios)

É a classe de saída.

JES2

Há n arquivos

por job,

cada arquivo

tem uma classe

associada

Aplicativos

Sistema Operacional e seus componentes (inclusive o JES2)


Sa da de resultados relat rios9
Saída de resultados (relatórios)

O sistema, em princípio (a não ser que especificado em contrário no MSGLEVEL), gera 3 relatórios relativos ao processamento do JCL: JES2.JESMSGLG = log dos eventos relativos ao job (início, fim, etc) JES2.JESJCL = JCL expandido JES2.JESYSMSG = mensagens do initiator e do terminator

JOB

JOB1234 , file JES2.JESMSGLG, classe R

Linha 1 file 1

...

Etc...

JOB1234 , file JES2.JESJCL, classe R

Linha 1 Relat1

...

Etc...

JOB1234 , file JES2.JESYSMSG, classe R

Linha 1 Relat2

...

Etc...


Sa da de resultados relat rios10
Saída de resultados (relatórios)

Exemplo ( truncado à direita) de JES2.JESMSGLG = log dos eventos relativos ao job

J E S 2 J O B L O G -- S Y S T E M D 1 T --

15.42.13 JOB04227 ---- FRIDAY, 28 AUG 2009 ----

15.42.13 JOB04227 IRR010I USERID D839471 IS ASSIGNED TO THIS JOB.

15.42.13 JOB04227 ******* PSTARS3T *--------------------------Sepro-41*

15.42.13 JOB04227 IEF196I ******* PSTARS3T *--------------------------Se

15.42.13 JOB04227 ******* PSTARS3T * IEFUJV PROCESSING COMPLETE *

15.42.13 JOB04227 IEF196I ******* PSTARS3T * IEFUJV PROCESSING COMPLETE

15.42.13 JOB04227 ******* PSTARS3T *--------------------------Sepro-41*

15.42.13 JOB04227 IEF196I ******* PSTARS3T *--------------------------Se

15.42.13 JOB04227 IEF677I WARNING MESSAGE(S) FOR JOB PSTARS3T ISSUED

15.42.13 JOB04227 ICH70001I D839471 LAST ACCESS AT 15:42:05 ON FRIDAY,

15.42.13 JOB04227 $HASP373 PSTARS3T STARTED - INIT 28 - CLASS T - SYS

15.42.13 JOB04227 IEF403I PSTARS3T - STARTED - TIME=15.42.13

15.42.14 JOB04227 IEF285I SYS1.MACLIB

15.42.14 JOB04227 IEF285I VOL SER NOS= D1T900.

15.42.14 JOB04227 - --TIMINGS (M

15.42.14 JOB04227 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU SRB

15.42.14 JOB04227 -PSTARS3T STEP1 C 00 63 .00 .00

15.42.14 JOB04227 -PSTARS3T STEP1 L 00 19 .00 .00

15.42.14 JOB04227 IEF285I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06

15.42.14 JOB04227 -PSTARS3T STEP1 G 00 9 .00 .00

15.42.14 JOB04227 IEF404I PSTARS3T - ENDED - TIME=15.42.14

15.42.14 JOB04227 -PSTARS3T ENDED. NAME-JAGUA #4 ALBERTO TOTAL CPU

15.42.14 JOB04227 $HASP395 PSTARS3T ENDED

------ JES2 JOB STATISTICS ------

28 AUG 2009 JOB EXECUTION DATE

116 CARDS READ

640 SYSOUT PRINT RECORDS

0 SYSOUT PUNCH RECORDS

44 SYSOUT SPOOL KBYTES

0.00 MINUTES EXECUTION TIME


Sa da de resultados relat rios11
Saída de resultados (relatórios)

Exemplo (truncado à direita) de JES2.JESJCL = JCL expandido

=============================== T O P =================================

1 //PSTARS3T JOB (9526,,,20,,1090),'JAGUA #4 ALBERTO',

// CLASS=T,TIME=3,MSGCLASS=O

2 //STEP1 EXEC ASMACLG,PARM.G='INFORMACOES VIA PARM'

3 XXASMACLG PROC

XX*

XX*************************************************************

XX* ASMACLG

XX* THIS PROCEDURE RUNS THE HIGH LEVEL ASSEMBLER, LINK-EDITS TH

XX* NEWLY ASSEMBLED PROGRAM AND RUNS THE PROGRAM AFTER

XX* THE LINK-EDIT IS ACCOMPLISHED.

XX*************************************************************

XX*

4 XXC EXEC PGM=ASMA90

5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR

6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

7 XXSYSPRINT DD SYSOUT=*

8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND),

XX UNIT=SYSALLDA,DISP=(MOD,PASS),

XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1)

9 //C.SYSIN DD *

10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C)

11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)

12 XX DD DDNAME=SYSIN

13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)),

XX DSN=&&GOSET(GO)

14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1

15 XXSYSPRINT DD SYSOUT=*

16 XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))

17 //G.SYSPRINT DD SYSOUT=*


Sa da de resultados relat rios12
Saída de resultados (relatórios)

Exemplo (truncadas à direita) de JES2.JESYSMSG = mensagens do initiator e do terminator

STMT NO. MESSAGE

2 IEFC001I PROCEDURE ASMACLG WAS EXPANDED USING SYSTEM LIBRARY JE

16 IEF686I DDNAME REFERRED TO ON DDNAME KEYWORD IN PRIOR STEP WAS

ICH70001I D839471 LAST ACCESS AT 15:42:05 ON FRIDAY, AUGUST 28, 2009

IEF236I ALLOC. FOR PSTARS3T C STEP1

IEF237I BE10 ALLOCATED TO SYSLIB

IGD101I SMS ALLOCATED TO DDNAME (SYSUT1 )

DSN (SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 )

STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( )

VOL SER NOS= VIO

IEF237I JES2 ALLOCATED TO SYSPRINT

IGD101I SMS ALLOCATED TO DDNAME (SYSLIN )

DSN (SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 )

STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( )

VOL SER NOS= VIO

IEF237I JES2 ALLOCATED TO SYSIN

IEF142I PSTARS3T C STEP1 - STEP WAS EXECUTED - COND CODE 0000

IEF285I SYS1.MACLIB KEPT

IEF285I VOL SER NOS= D1T900.

IGD105I SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 DELETED, DDNAME=SY

IEF285I D839471.PSTARS3T.JOB04227.D0000102.? SYSOUT

IGD106I SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 PASSED, DDNAME=SY

IEF285I D839471.PSTARS3T.JOB04227.D0000101.? SYSIN

IEF373I STEP/C /START 2009240.1542

IEF374I STEP/C /STOP 2009240.1542 CPU 0MIN 00.01SEC SRB 0MIN

IEF236I ALLOC. FOR PSTARS3T L STEP1

IGD103I SMS ALLOCATED TO DDNAME SYSLIN

IEF237I DMY ALLOCATED TO

IGD101I SMS ALLOCATED TO DDNAME (SYSLMOD )

DSN (SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 )

STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( )

VOL SER NOS= VIO

Continua na próxima página


Sa da de resultados relat rios13
Saída de resultados (relatórios)

Exemplo (truncadas à direita) de JES2.JESYSMSG = mensagens do initiator e do terminator

Continuação

IGD101I SMS ALLOCATED TO DDNAME (SYSUT1 )

DSN (SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 )

STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( )

VOL SER NOS= VIO

IEF237I JES2 ALLOCATED TO SYSPRINT

IEF142I PSTARS3T L STEP1 - STEP WAS EXECUTED - COND CODE 0000

IGD105I SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 DELETED, DDNAME=SY

IGD106I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 PASSED, DDNAME=SY

IGD105I SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 DELETED, DDNAME=SY

IEF285I D839471.PSTARS3T.JOB04227.D0000103.? SYSOUT

IEF373I STEP/L /START 2009240.1542

IEF374I STEP/L /STOP 2009240.1542 CPU 0MIN 00.00SEC SRB 0MIN

IEF236I ALLOC. FOR PSTARS3T G STEP1

IEF237I VIO ALLOCATED TO PGM=*.DD

IEF237I JES2 ALLOCATED TO SYSPRINT

IEF142I PSTARS3T G STEP1 - STEP WAS EXECUTED - COND CODE 0000

IEF285I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 KEPT

IEF285I D839471.PSTARS3T.JOB04227.D0000104.? SYSOUT

IEF373I STEP/G /START 2009240.1542

IEF374I STEP/G /STOP 2009240.1542 CPU 0MIN 00.00SEC SRB 0MIN

IGD105I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 DELETED, DDNAME=SY

IEF375I JOB/PSTARS3T/START 2009240.1542

IEF376I JOB/PSTARS3T/STOP 2009240.1542 CPU 0MIN 00.01SEC SRB 0MIN


Sa da de resultados relat rios14
Saída de resultados (relatórios)

Vejamos o exemplo de um aplicativo que “imprime” 2 relatórios://RELAT1 DD SYSOUT=* , //RELAT2 DD SYSOUT=Be tem no JOB o parâmetro MSGCLASS=R

JOB1234, JES2.JESMSGLG, classe R

Sistema Operacional

JOB1234, JES2.JESJCL, classe R

JOB1234, JES2.JESMSGLG, classe R

JOB1234 , STEP 1, DD RELAT1, classe R

Linha 1 Relat1

Linha 2 relat1

...

Etc...

Aplicativo

(MEU programa)

JOB1234 , STEP1, DD RELAT2, classe B

Linha 1 Relat2

Linha 2 relat2

...

Etc...


Sa da de resultados relat rios15
Saída de resultados (relatórios)

De forma semelhante à entrada, há componentes do sistema que atendem à demanda de impressão (real) dos arquivos enfileirados no spool de saída. São as WRITERS, que atendem baseadas na classe da SYSOUT. Elas são programas que lêem arquivos do spool de saída e os “imprimem” em algum dispositivo.

JOB1234, JES2.JESMSGLG, classe R

JOB1234, JES2.JESJCL, classe R

JOB1234, JES2.JESMSGLG, classe R

JOB1234 , DD RELAT1, classe R

Linha 1 Relat1

Linha 2 relat1

...

Etc...

Writer que atende classe R

Writer que atende classe B

JOB1234 , DD RELAT2, classe B

Linha 1 Relat2

Linha 2 relat2

...

Etc...


Sa da de resultados relat rios16
Saída de resultados (relatórios)

Muitas vezes a saída NÃO É uma impressora. O usuário quer ver o relatório num terminal.É o caso de SYSOUTs que acessamos via Roscoe, TSO ou CONTROL-V.

JOB1234, JES2.JESMSGLG, classe R

JOB1234, JES2.JESJCL, classe R

JOB1234, JES2.JESMSGLG, classe R

JOB1234 , DD RELAT1, classe R

Linha 1 Relat1

Linha 2 relat1

...

Etc...

Writer que atende classe R

Writer que atende classe B

JOB1234 , DD RELAT2, classe B

Linha 1 Relat2

Linha 2 relat2

...

Etc...


Conceitos jcl mvs
JCL

Hora de ver de fato o JCL


Conceitos jcl mvs
JCL

JCL = Job Control Language = Linguagem de controle de serviços = linguagem para pedir ao sistema operacional a execução de serviços


Conceitos jcl mvs
JCL

Como toda linguagem decente, o JCL tem comandos.Há 3 principais: JOB, EXEC e DDAntes de ve-los, vamos ver algumas coisas básicas


Jcl sintaxe b sica
JCL – Sintaxe básica

Sintaxe básica


Jcl sintaxe b sica1
JCL – Sintaxe básica

Sempre: // nas posições 1 e 2Comentários: //* nas posições 1 a 3


Jcl sintaxe b sica2
JCL – Sintaxe básica

Continuação de statements

·statement a ser continuado : deve terminar com uma vírgula (para indicar que vai haver mais parâmetros)· no statement seguinte (onde é feita a continuação) o início da continuação pode ser feito em qualquer posição desde a 4 até a 16 (não pode continuar desde a 3 nem depois da 16)


Jcl sintaxe b sica3
JCL – Sintaxe básica

Continuação de statements

Exemplo (as duas primeiras linhas são réguas para referência da posição dos caracteres nos statements) :

. 1 2 3 4 5 6 7..

123456789012345678901234567890123456789012345678901234567890123456789012

//ENTRADA DD DSN=SYS5.LINKLIB,

// DISP=SHR BIBLIOTECA DE UTILITARIOS HOME MADE

//ENTRADA DD DSN=SYS5.LINKLIB,

// DISP=SHR COMENTARIO

//ENTRADA DD DSN=SYS5.LINKLIB,

// DISP=SHR COMENTARIO

//ENTRADA DD DSN=SYS5.LINKLIB,

// DISP=SHR


Jcl sintaxe b sica4
JCL – Sintaxe básica

Continuação de statements

Problemas mais comuns

. 1 2 3 4 5 6 7..

123456789012345678901234567890123456789012345678901234567890123456789012

//ENTRADA DD DSN=SYS5.LINKLIB

// DISP=SHR BIBLIOTECA DE UTILITARIOS HOME MADE

Neste caso faltou a virgula após o DSN; portanto o DISP=SHR não foi considerado como fazendo parte do statement DD e sim um statement separado ; observar que apesar de não acusar erro de jcl no DD ENTRADA, o sistema vai entender que o arquivo SYS5.LINKLIB deve ser criado, pois faltou o DISP para ele; vai entender também que o statement seguinte está errado pois a operação é inválida (DISP=SHR).


Jcl sintaxe b sica5
JCL – Sintaxe básica

Continuação de statements

Problemas mais comuns

. 1 2 3 4 5 6 7..

123456789012345678901234567890123456789012345678901234567890123456789012

//ENTRADA DD DSN=SYS5.LINKLIB,

// DISP=SHR COMENTARIO

Neste caso a continuação está na col 17 (depois da 16)


Jcl sintaxe b sica6
JCL – Sintaxe básica

Continuação de statements

Problemas mais comuns

. 1 2 3 4 5 6 7..

123456789012345678901234567890123456789012345678901234567890123456789012

//ENTRADA DD DSN=SYS5.LINKLIB,

//DISP=SHR COMENTARIO

Neste caso a continuação está na col 3


Jcl sintaxe b sica7
JCL – Sintaxe básica

Continuação de statements

Problemas mais comuns

. 1 2 3 4 5 6 7..

123456789012345678901234567890123456789012345678901234567890123456789012

//ENTRADA DD DSN=SYS5.LINKLIB,

DISP=SHR

Neste caso, o statement de continuação não tem o // nas colunas 1 e 2 : o sistema entende que o statement DD de nome ENTRADA irá continuar na linha seguinte (pois termina com um parâmetro seguido de vírgula) , mas a linha seguinte nem é de jcl (é considerada uma linha de dados de um arquivo de ddname SYSIN)


Jcl sintaxe b sica8
JCL – Sintaxe básica

Conteúdo dos statements

qIdentificação = // nas colunas 1 e 2

qNome = mínimo 1 e máximo 8 posições; início na posição 3;

precisa ter pelo menos um espaço em branco depois

qOperação = JOB ou EXEC ou DD (ou PROC ou PEND ou IF ou END-IF);

precisa ter pelo menos um espaço em branco depois

qParâmetros; podem ser:

üposicionais : dependem da posição ou

ükeyword : palavra chave seguida do sinal de =

vSe tiver só posicionais, colocá-los na ordem (posição) adequada

vSe tiver só keyword, colocar em qualquer ordem

vSe tiver ambos, colocar primeiro os posicionais (na ordem adequada)

e depois os keyword (em qualquer ordem)

qComentários; precisa ter pelo menos um espaço em branco

após os operandos, antes dos comentários


O job como um todo vis o geral
O JOB como um todo – visão geral

O JOB como um todo – visão geral


Job vis o geral
JOB – Visão geral

Visão geral


Job vis o geral1
JOB – Visão geral

JOBEXEC do primeiro stepDD 1 do primeiro step..DD n do primeiro stepEXEC do segundo stepDD 1 do segundo step..DD n do segundo stepEXEC do terceiro stepDD 1 do terceiro step..DD n do terceiro step

Delimitador de início do JOB

Primeiro Step

JOB

Segundo Step

Terceiro Step

O delimitador de fim do JOB é o início do outro JOB

(antigamente precisava de um statement com // nas posições 1 e 2, seguido de brancos)


Job vis o geral2
JOB – Visão geral

Para os steps:

Lembrar que, em princípio, os DDs são opcionais

(se o programa não usar arquivos ou

se usar só arquivos alocados com alocação dinâmica)

Mas o EXEC é obrigatório; é ele quem define o step.


Job vis o geral3
JOB – Visão geral

Isso significa, por exemplo, que, se o EXEC do segundo step tiver algum erro e não for identificado como EXEC, os DD’s do segundo step vão ficar valendo para o primeiro step...

//ABCARS01 JOB ...//STEP1 EXEC PGM=PGM01//DDA1 DD ...//DDB1 DD ...//DDC1 DD ...//STEP2 ESEC PGM=PGM02//DDA2 DD ...//DDB2 DD ...//DDC2 DD ...//STEP3 EXEC PGM=PGM03//DDA3 DD ...//DDB3 DD ...//DDC3 DD ...

Como o segundo EXEC está errado, ele não “marca” o início de um segundo step


Job vis o geral4
JOB – Visão geral

Exemplo de JOB batch solicitando SELECT de uma base de dados e respectiva saída

//ARSARS01 JOB (1234),’ALBERTO’,MSGCLASS=X,CLASS=R

//STEP001 EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=6M

//STEPLIB DD DSN=SYS1.DSNDB1D.SDSNLOAD,DISP=SHR

// DD DSN=SYS1.DSNDB1D.RUNLIB.LOAD,DISP=SHR

//DBRMLIB DD DSN=SYS1.DSNDB1D.DBRMLIB.DATA,DISP=SHR

//SYSTSPRT DD SYSOUT=*

//SYSPRINT DD SYSOUT=*

//SYSUDUMP DD SYSOUT=*

//SYSTSIN DD *

DSN SYSTEM(DB1D)

RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2) -

LIB('SYS1.DSNDB1D.RUNLIB.LOAD') –

PARMS('/ALIGN(MID)')

END

//SYSIN DD *

SELECT CD_AGE, NM_AGE

FROM DB2T.ZZZ100_CADAGE

WHERE CD_AGE > 20 AND CD_AGE < 100;

PAGE 1

***INPUT STATEMENT:

SELECT CD_AGE, NM_AGE

FROM DB2T.ZZZ100_CADAGE

WHERE CD_AGE > 20 AND CD_AGE < 100;

+----------------------------------+

| CD_AGE | NM_AGE |

+----------------------------------+

1_| 30 | BARUERI |

2_| 40 | S.JOSE R.PRETO |

3_| 50 | SAO CARLOS |

4_| 60 | PINHEIROS |

5_| 70 | PERDIZES |

6_| 80 | MARAMBAIA |

7_| 90 | JAGUARETE |

+----------------------------------+


Jcl comandos
JCL - Comandos

Comandos


Jcl comandos1
JCL - Comandos

Como toda linguagem decente, o JCL tem comandos.Há 3 principais: JOB, EXEC e DDVejamos inicialmente esses 3 comandos


Conceitos jcl mvs
JOB

JOB


Conceitos jcl mvs
JOB

Sintaxe : //nomejob JOB parâmetros_posicionais,parâmetros_keyword


Conceitos jcl mvs
JOB

Exemplo : //PDR001P2 JOB (B281),ALBERTO,MSGCLASS=X,CLASS=R

2 parâmetros keyword

2 parâmetros posicionais


Conceitos jcl mvs
JOB

Parâmetros posicionaisNormalmente tem informações a respeito do responsável pelo job e para contabilização.Obrigatório a ordem exata de especificação.Consultar padrões da instalação. //PDR001P2 JOB (B281),ALBERTO,MSGCLASS=X,CLASS=R

2 parâmetros keyword

2 parâmetros posicionais


Conceitos jcl mvs
JOB

Parâmetros keywordInformações a respeito do job, fornecidas por meio de palavras-chave; isso permite que possam estar em qualquer ordem.//PDR001P2 JOB (B281),ALBERTO,MSGCLASS=X,CLASS=R

2 parâmetros keyword

2 parâmetros posicionais


Conceitos jcl mvs

CLASS=

indica a classe de execução do job; cada classe é atendida por 1 (ou mais) initiators;

a quantidade de init’s, quais as classes que cada um atende, quais ficam “abertos” atendendo à demanda de jobs, é determinada pelo pessoal de suporte e de produção.

JOB

Parâmetros keyword


Conceitos jcl mvs

TIME=

indica o tempo máximo de CPU do JOB;

1440 = indica que não há tempo máximo

JOB

Parâmetros keyword


Conceitos jcl mvs

MSGCLASS=

indica a classe da sysout das mensagens exibidas

(conforme solicitado pelo MSGLEVEL)

JOB

Parâmetros keyword


Conceitos jcl mvs

MSGVEVEL=

indica o que deve ser listado.

Especifica-se MSGLEVEL=(a,b) sendo

a : mensagens de JCL

0 = somente o statement JOB

1 = exibir tudo: statements JCL submetidos +

statements JCL gerados pelo sistema

2 = exibir somente statements JCL submetidos

b : mensagens de alocação

0 = não exibir

1 = exibir

JOB

Parâmetros keyword


Conceitos jcl mvs

NOTIFY=

indica o id do usuário de TSO que deve ser notificado quando o job terminar

REGION=

indica o tamanho da REGION que deve ser atribuida ao JOB

RESTART=

Indica o nome do step a partir do qual o JOB deve (re)iniciar

TYPRUN=

indica o tipo de submissão desejada :

SCAN = valida se o JCL está OK mas não executa nenhum programa

HOLD = deixa o job em espera até ser liberado para execução

JOB

Parâmetros keyword


Conceitos jcl mvs
EXEC

EXEC


Conceitos jcl mvs
EXEC

Sintaxe : //nomestep EXEC parâmetro_posicional,parâmetros_keyword


Conceitos jcl mvs
EXEC

Exemplo : //VALIDAR EXEC P756,COND=EVEN,PARM.S1=‘T=YES’

2 parâmetros keyword

1 parâmetro posicional


Conceitos jcl mvs
EXEC

Parâmetro posicionalSó há 1; é opcional.É um nome, que indica o nome de PROC a executar.Se for usado, os parâmetros keywor PROC= e PGM= não podem ser usados.//STPR1 EXEC PD001

1 parâmetro posicional


Conceitos jcl mvs
EXEC

Parâmetros keywordInformações a respeito do step, fornecidas por meio de palavras-chave; isso permite que possam estar em qualquer ordem.//ST01 EXEC PGM=LISTABND,COND=ONLY

2 parâmetros keyword


Conceitos jcl mvs

COND=

indica a(s) condição(ões) de execução ou não do step

COND=EVEN executa o step MESMO QUE algum anterior tenha cancelado

COND=ONLY executa o step SOMENTE SE algum anterior tenha cancelado

COND=(n,cond) NÃO EXECUTA o step se n satisfizer a condição especificada em qualquer step anterior

COND=(n,cond,step) NÃO EXECUTA o step se n satisfizer a condição especificada no step cujo nome foi indicado

Cond pode ser : LT ou GT ou EQ ou NE

Exemplos.:

COND=(4,LT)

se 4 for menor que o return code de qualquer step anterior, NÃO EXECUTA

ou seja :

se algum step anterior emitiu return code maior que 4, NÃO EXECUTA

COND=((4,LT,COMP),(4,LT,LKED))

(se 4 for menor que o return code do step COMP E

se 4 for menor que o return code do step LKED) NÃO EXECUTA

ou seja :

(se o step COMP emitiu return code maior que 4 OU

se o step LKED emitiu return code maior que 4) NÃO EXECUTA

EXEC


Conceitos jcl mvs

PARM=

indica os dados que devem ser passados como parâmetro(s) para o programa chamado para executar

Ex.:

PARM='NOSEQ,QUOTE,OFFSET,LIB'

PARM='30/12/2003'

EXEC


Conceitos jcl mvs

PGM=

indica o nome do programa a ser executado

PROC=

indica o nome da proc a ser executada.

Se não especificado nem PGM= nem PROC= assume PROC=

Exemplos :

//STEP1 EXEC TST01executa a PROC denominada TST01

//STEP2 EXEC PROC=TST01executa a PROC denominada TST01

//STEP1 EXEC PGM=TST01executa programa denominado TST01

EXEC


Conceitos jcl mvs
DD

DD (Data Definition)


Conceitos jcl mvs
DD

Sintaxe : //nomearq DD parâmetros_posicionais,parâmetros_keyword


Conceitos jcl mvs
DD

Exemplo : //ENTRADA DD *,DCB=(LRECL=80)

1 parâmetro posicional

1 parâmetro keyword


Conceitos jcl mvs
DD

Parâmetros posicionaisHá 3, e são exclusivos entre si.Ou seja, pode-se especificar apenas 1 parâmetro posicional)//ARQ1 DD *//ARQ2 DD DATA//ARQ3 DD DUMMY

1 parâmetro posicional


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Indica que o(s) registro(s) a partir do proximo (seguinte) forma(m) um arquivo que está in-stream. O último registro do arquivo é o anterior àquele próximo que tenha // nas posições 1 e 2. //ARQ1 DD *REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ2 DD DSN=ARQUIVO.TESTEX,DISP=SHR

Arquivo in-stream com ddname ARQ1


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Mais exemplos://ARQ1 DD *REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ2 DD *REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ2 DD *REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3

Arquivo in-stream com ddname ARQ1

Arquivo in-stream com ddname ARQ2

Arquivo in-stream com ddname ARQ3


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Mais exemplos://* ARQUIVO A SEGUIR = MOVIMENTO DO DIA//ARQ4 DD *REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//* ARQUIVO A SEGUIR = CONTROLE//ARQ5 DD *22/07/2009

Arquivo in-stream com ddname ARQ4

Arquivo in-stream com ddname ARQ5


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Mais exemplos://ARQ4 DD *//* ARQUIVO A SEGUIR = MOVIMENTOREGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ5 DD *//* ARQUIVO A SEGUIR = CONTROLE22/07/2009

Não dá erro,

mas é Erro!!!


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Mais exemplos://ARQ4 DD *//* ARQUIVO A SEGUIR = MOVIMENTOREGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ5 DD *//* ARQUIVO A SEGUIR = CONTROLE22/07/2009


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Mais exemplos://ARQ4 DD *//* ARQUIVO A SEGUIR = MOVIMENTO REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ5 DD *//* ARQUIVO A SEGUIR = CONTROLE22/07/2009

Este (por ter //) é entendido pelo sistema como fim de dados do arquivo in-stream ARQ4 (o qual fica com zero registros); e é um statement “normal” de JCL

Vai começar um arquivo in-stream...

Aqui o sistema encontra um registro que NÃO É JCL; ele assume que é o primeiro registro de um arquivo in-stream e assume que o DDNAME é SYSIN.

Este (por ter //) é entendido pelo sistema como fim de dados do arquivo in-stream ARQ5 (o qual fica com zero registros); e é um statement “normal” de JCL

Vai começar um arquivo in-stream...

Aqui o sistema encontra um registro que NÃO É JCL; ele assume que é o primeiro registro de um arquivo in-stream e assume que o DDNAME é SYSIN (e sobrepõe o anterior) .


Conceitos jcl mvs
DD

Parâmetros posicionais: DD *Ou seja: isto//ARQ4 DD *//* ARQUIVO A SEGUIR = MOVIMENTO REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3//ARQ5 DD *//* ARQUIVO A SEGUIR = CONTROLE22/07/2009é entendido assim:ARQ4 = (arquivo com zero registros)ARQ5 = (arquivo com zero registros)SYSIN = arquivo com 1 registro ( 22/07/2009)


Conceitos jcl mvs
DD

Parâmetros posicionais: DD DATASimilar ao DD *.Indica que o(s) registro(s) a partir do proximo (seguinte) forma(m) um arquivo que está in-stream. O último registro do arquivo é aquele que contém o delimitador declarado no parâmetro keyword DLM. //ARQ1 DD DATA,DLM=‘EOF*’REGISTRO DE DADOS 1REGISTRO DE DADOS 2REGISTRO DE DADOS 3// ESTE NÃO EH JCL !EOF*//ARQ2 DD DSN=ARQUIVO.TESTEX,DISP=SHR

Registros do arquivo in-stream com ddname ARQ1


Conceitos jcl mvs
DD

Parâmetros posicionais: DD DUMMYSó para arquivos de entrada; que vão ser lidos no programa.Indica que o arquivo não existe.O sistema “finge” para o método de acesso, quando for feita a abertura/leitura/fechamento do arquivo, que é um arquivo vazio (com zero registros).Ou seja: abre normalmente, na primeira leitura já é disparada a condição de EOF, fecha normalmente. Bom nos casos em que o programa exige o arquivo (abre, lê, fecha), mas na execução em específico não vai usar os dados.//ARQ1 DD DUMMY//ARQ2 DD DSN=ARQUIVO.TESTEX,DISP=SHR


Conceitos jcl mvs
DD

Parâmetros keywordInformações a respeito do step, fornecidas por meio de palavras-chave; isso permite que possam estar em qualquer ordem.//ST01 EXEC PGM=LISTABND,COND=ONLY

2 parâmetros keyword


Conceitos jcl mvs

DSN

Data Set Name = indica o nome externo (para o sistema operacional) do arquivo Ex.:

//SYSIN DD DSN=DESENV.TST.ALBERTO,DISP=SHR

DD


Conceitos jcl mvs

DCB

indica as características do arquivo

Sub-parâmetros :

DSORG= (Data Set ORGanization) indica a organização do arquivo.

Principais opções :

PO (Partitioned Organization = Particionado = PDS)

PS (Physical Sequential = Sequencial)

EXPDT= (EXPiration DaTe = data de expiração) = indica a data a partir da qual o arquivo pode ser deletado

RETPD= (RETention PerioD = período de retenção ) indica o período de tempo durante o qual o arquivo não está expirado, não podendo ser deletado

LRECL= (Logical RECord Length) indica o tamanho, em bytes, do registro lógico

RECFM= (RECord ForMat) indica o formato dos registros do arquivo.

Principais opções :

FB = Fixed Blocked

F = Fixed (Unblocked)

FBA = Fixed Blocked Asa

FA = Fixed (Unblocked) Asa

V = Variable (Unblocked)

VB = Variable blocked

U = Undefined

BLKSIZE= (BLocKSIZE) indica o tamanho, em bytes, do registro físico

Ex.:

//SYSIN DD DUMMY,DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)

DD


Conceitos jcl mvs

LRECL

Indica o tamanho do registro lógico

RECFM

Indica o formato dos registros : F, FB, V, VB

BLKSIZE

Indica o tamnaho dos blocos (registros físicos)

DSORG

Indica a organização do arquivo : PS, PO

EXPDT

Indica a data de expiração do arquivo

RETPD

Indica o período durante o qual o arquivo não está expirado

DD


Conceitos jcl mvs

DISP

Disposition

DISP=(a,b,c) indica a ação a ser tomada referente ao arquivo

a = NEW (arquivo será criado) ou

OLD (arquivo já existe e será manipulado com exclusividade) ou

SHR (shared - arquivo já existe e será compartilhada) ou

MOD (arquivo já existe e será estendido)

b = CATLG (arquivo será catalogado ao final, se final normal) ou

UNCATLG (arquivo será descatalogado ao final, se normal) ou

DELETE (arquivo será deletado ao final, se normal)

KEEP (arquivo será mantido ao final, se normal)

PASS (arquivo temporário será passado para steps

subsequentes)

c = CATLG (arquivo será catalogado ao final, se final anormal) ou

UNCATLG (arquivo será descatalogado ao final, se anormal) ou

DELETE (arquivo será deletado ao final, se anormal)

KEEP (arquivo será mantido ao final, se anormal)

DD


Conceitos jcl mvs

UNIT

Indica onde o arquivo deve ser alocado. Em geral : SYSDA, 3390

SYSOUT

SYSOUT=class

SYSOUT=(class,,formsname)

SYSOUT=(class,writername,formsname)

SYSOUT=(class,writername)

SYSOUT=(class,INTRDR)

Ex.:

//SYSOUT DD SYSOUT=*

DD


Conceitos jcl mvs

SPACE

SPACE= (a,(b,c),RLSE) ou

SPACE= (d,(b,c),RLSE)

indica a quantidade de espaço em disco a ser alocada para o arquivo .

a = TRK ou CYL ou ABSTR unidade de alocação : trilhas, cilindros, ou

a = TRK ou CYL ou ABSTR ou rec_len unidade de alocação; trilhas, cilindros, ou tamanho do registro lógico

b = quantidade da área primária

c = quantidade da área secundária (opcional)

d = tamanho do registro lógico

RLSE = (ReLeaSE) (opcional) se sobrar espaço, liberar

DD


Conceitos jcl mvs

KEYOFF=

KEY OFFset = indica o deslocamento do campo chave dentro do registro lógico para arquivos VSAM KSDS

KEYLEN=

KEY LENgth = indica o tamanho do campo chave no registro lógico para arquivos VSAM KSDS

RECORG=

RECord ORGanization = indica qual a organização do arquivo VSAM :

KS (KSDS), ES (ESDS), RR (RRDS) ou LS (Linear Space)

DD


Conceitos jcl mvs
DD

Exemplos :

//SAIDA DD DSN=ATAAABPS.EPC.SE62,

// DISP=(NEW,CATLG,DELETE),SPACE=(TRK,(100,50)),

// UNIT=SYSDA,DCB=LRECL=83

//ENTRADA DD DSN=ATAAABPS.EPC.SLB005,DISP=SHR

//EPCASLBS DD DSN=ATAAABPS.EPC.SE64(+1),

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

// SPACE=(TRK,(100,50)),

// UNIT=SYSDA,

// DCB=LRECL=83

//EPCASLBS DD DSN=ATAAABPS.EPC.SE64(+1),

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

// SPACE=(TRK,(100,50)),

// UNIT=SYSDA,

// DCB=(LRECL=83,BLKSIZE=830)

//VKSDS1 DD DSN=DSVAABVS.LSG.A889.ALBERTO,DISP=(,CATLG,DELETE),

// SPACE=(CYL,(10,10)),LRECL=100,KEYOFF=10,

// KEYLEN=12,RECORG=KS


Busca em bibliotecas
Busca em bibliotecas

Busca em bibliotecas


Busca em bibliotecas1
Busca em bibliotecas

Existem no sistema listas de bibliotecas (libraries) que devem ser pesquisadas quando algum membro precisa ser localizado.

Basicamente essas listas são:

 Programas executáveis

 JCL


Busca de programas execut veis
Busca de programas executáveis

  • Busca de programas executáveis

    Bibliotecas do sistema operacional

    SYS1.LINKLIB etc

    Bibliotecas do usuário

    Ex.: SYS9.LINKLIB

    SYS9.EMPLK01

    SYS8.USRRHLIB

    SYS7.EASYLIB

    etc


Busca de programas execut veis1
Busca de programas executáveis

  • Busca de programas executáveis

    Normalmente, as bibliotecas do sistema operacional são buscadas automaticamente

    SYS1.LINKLIB etc

    As bibliotecas do usuário são buscadas se:

  • Estiverem na lista de busca automática (tempo de busca...)

  • Forem especificadas no JOBLIB ou STEPLIB


Busca de programas execut veis2
Busca de programas executáveis

  • Busca de programas executáveis

    JOBLIB / STEPLIB

    São DD’s especiais que indicam que deve haver busca de executáveis nas bibliotecas neles indicadas.

    O JOBLIB deve ser especificado no início do JOB, e vale para todos os EXEC’s do JOB (a busca do executável nessa biblioteca deve ser feita apenas para esse step).

    O STEPLIB deve ser especificado logo após o EXEC de um programa, e vale para esse step (a busca do executável nessa biblioteca deve ser feita para esse step).


Busca de programas execut veis3
Busca de programas executáveis

  • Busca de programas executáveis

    JOBLIB exemplo

    • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=A

    • //JOBLIB DD DSN=SYS9.MYLIB,DISP=SHR

    • //STEPX1 EXEC PGM=PGTST01

    • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

    • //SAIDA DD SYSOUT=A

    • //STEPX2 EXEC PGM=PGTST02

    • //DD1 DD DSN=ARQUIVOX,DISP=SHR

    • //SYSOUT DD SYSOUT=A

    • //STEPX3 EXEC PGM=PGTST03

    • //SYSIN DD DSN=ARQUIVOX,DISP=SHR

    • //RELAT DD SYSOUT=A

- Os programas PGTST01, PGTST02 e PGTST03 serão buscados em SYS9.MYLIB


Busca de programas execut veis4
Busca de programas executáveis

  • Busca de programas executáveis

    STEPLIB exemplo

    • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=A

    • //STEPX1 EXEC PGM=PGTST01

    • //STEPLIB DD DSN=SYS8.MYLIBX,DISP=SHR

    • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

    • //SAIDA DD SYSOUT=A

    • //STEPX2 EXEC PGM=PGTST02

    • //STEPLIB DD DSN=SYS8.MYLIBY,DISP=SHR

    • //DD1 DD DSN=ARQUIVOX,DISP=SHR

    • //SYSOUT DD SYSOUT=A

    • //STEPX3 EXEC PGM=PGTST03

    • //STEPLIB DD DSN=SYS8.MYLIBZ,DISP=SHR

    • //SYSIN DD DSN=ARQUIVOX,DISP=SHR

    • //RELAT DD SYSOUT=A

  • - O programa PGTST01 será buscado em SYS8.MYLIBX

  • O programa PGTST02 será buscado em SYS8.MYLIBY

  • O programa PGTST03 será buscado em SYS8.MYLIBZ


Busca de jcl
Busca de JCL

  • Busca de JCL

    Bibliotecas do sistema operacional

    SYS1.PROCLIB etc

    Bibliotecas do usuário

    Ex.: SYS9.PROCLIB

    SYS9.EMPROC1

    SYS8.USRPROCL

    SYS7.PRODPROC

    etc


Busca de jcl1
Busca de JCL

  • Busca de JCL

    Normalmente, as bibliotecas do sistema operacional são buscadas automaticamente

    SYS1.PROCLIB etc

    As bibliotecas do usuário são buscadas se:

  • Estiverem na lista de busca automática

  • Forem especificadas no JCLLIB


Busca de jcl2
Busca de JCL

  • Busca de JCL (procedures – PROCS)

    JCLLIB / INCLUDE

    É um DD especial que indica que deve haver busca de PROCs nas bibliotecas nele indicadas.

    O JCLLIB deve ser especificado no início do JOB.

    Para incluir no JCL os statements (de JCL) de um membro da biblioteca indicada no JCLLIB, usar o INCLUDE.

    Ver exemplo a seguir.


Busca de jcl3
Busca de JCL

  • Busca de JCL (procedures)

    JCLLIB / INCLUDE: exemplo

    • //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X

    • // JCLLIB ORDER=(JCL.SIST.SRC)

    • // INCLUDE MEMBER=BIBPROD

    • //*-------------------------------------

    • //STEP1 EXEC PGM=P001

    • //STEP2 EXEC PGM=P003

    • //STEP3 EXEC PGM=P004

    • Se o membro BIBPROD do arquivo JCL.SIST.SRC tiver o statement //STEPAUX EXEC PGM=EXIBHORA o JCL efetivamente submetido será:

    • //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X

    • //* JCLLIB ORDER=(JCL.SIST.SRC)

    • //STEPAUX EXEC PGM=EXIBHORA

    • //*-------------------------------------

    • //STEP1 EXEC PGM=P001

    • //STEP2 EXEC PGM=P003

    • //STEP3 EXEC PGM=P004


Busca de jcl4
Busca de JCL

  • Busca de JCL (procedures)

    JCLLIB / INCLUDE: outro exemplo

    • //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X

    • // JCLLIB ORDER=(JCL.SIST.SRC)

    • // INCLUDE MEMBER=BIBDESEN

    • //*-------------------------------------

    • //STEP1 EXEC PGM=P001

    • //STEP2 EXEC PGM=P003

    • //STEP3 EXEC PGM=P004

    • Se o membro BIBDESEN do arquivo JCL.SIST.SRC tiver o statement //STEPAUX EXEC PGM=IEFBR14 o JCL efetivamente submetido será:

    • //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X

    • //* JCLLIB ORDER=(JCL.SIST.SRC)

    • //STEPAUX EXEC PGM=IEFBR14

    • //*-------------------------------------

    • //STEP1 EXEC PGM=P001

    • //STEP2 EXEC PGM=P003

    • //STEP3 EXEC PGM=P004


Procs
PROCS

PROCS


Procs1
PROCS

  • Procs = procedimentos = conjunto de statements não-JOB e não-dados. Podem ser:

  • q       CATALOGADAS

  • q       IN-STREAM


Procs2
PROCS

  • q       Procs CATALOGADAS


Procs3
PROCS

  • São aquelas que são

  • preparadas

  • catalogadas numa PROCLIB

  • chamadas para execução nos jobs

  • - Não pode ter statement JOB

  • Precisa iniciar com PROC

  • Precisa terminar com PEND

  • Não pode ter dados in-stream


Procs4
PROCS

  • Procs catalogadas: são aquelas que são

  • preparadas

  • catalogadas numa PROCLIB

  • chamadas para execução nos jobs

  • Preparando: editar no Roscoe ou TSO e salvar. Ex.

  • //PROCDEMO PROC

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • // PEND

  • - É um JCL (quase) normal!

  • - Não pode ter statement JOB

  • Precisa iniciar com PROC

  • Precisa terminar com PEND

  • Não pode ter dados in-stream

  • Este tem 3 steps

  • (STEPX1, STEPX2 e STEPX3)


Procs5
PROCS

  • Procs catalogadas: são aquelas que são

  • preparadas

  • catalogadas numa PROCLIB

  • chamadas para execução nos jobs

  • Catalogando: copiar para uma proclib. Ex.

  • //CATAL EXEC PGM=IEBCOPY

  • //SAIDA DD DSN=SYS9.PROCLIB(PROCDEMO)

  • //ENTRA DD DATA,DLM=‘FINAL’

  • //PROCDEMO PROC

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • // PEND

  • FINAL

- Cópia simples para um membro da proclib desejada


Procs6
PROCS

  • Procs catalogadas: são aquelas que são

  • preparadas

  • catalogadas numa PROCLIB

  • chamadas para execução nos jobs

  • Chamando para execução. Ex.

  • //ARSARS01 JOB (1234),’ALBERTO’,CLASS=T,MSGCLASS=R

  • //S1 EXEC PROC=PROCDEMO PRIMEIRA CHAMADA

  • //S2 EXEC PROCDEMO SEGUNDA CHAMADA

  • //STEPX1.ENTRADA DD *

  • dados in-stream para o arquivo ENTRADA do

  • step STEPX1 da proc PROCDEMO

  • //S3 EXEC PROCDEMO TERCEIRA CHAMADA

- A reader / interpreter vai até a PROCLIB para saber como EXPANDIR a PROC


Procs7
PROCS

  • q       Procs IN-STREAM


Procs8
PROCS

  • São aquelas que são

  • declaradas no início de um JOB

  • chamadas para execução nesse mesmo JOB

  • - Não pode ter statement JOB

  • Precisa iniciar com PROC

  • Precisa terminar com PEND

  • Não pode ter dados in-stream


Procs9
PROCS

  • Procs catalogadas: são aquelas que são

  • declaradas no início de um JOB

  • chamadas para execução nesse mesmo JOB

  • Declaradas no início de um JOB. Ex.

  • //ARSARS01 JOB (1234),’ALBERTO’,CLASS=T,MSGCLASS=R

  • //PROCDEMO PROC

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • // PEND

  • //S1 EXEC PROC=PROCDEMO

  • //* PRIMEIRA CHAMADA

  • //S2 EXEC PROCDEMO

  • //* SEGUNDA CHAMADA

  • //STEPX1.ENTRADA DD *

  • dados in-stream para o arquivo ENTRADA do

  • step STEPX1 da proc PROCDEMO

  • //S3 EXEC PROCDEMO

  • //* TERCEIRA CHAMADA

- PROC declarada logo no início do JOB


Procs10
PROCS

  • Procs catalogadas: são aquelas que são

  • declaradas no início de um JOB

  • chamadas para execução nesse mesmo JOB

  • Chamadas para execução nesse mesmo JOB. Ex.

  • //ARSARS01 JOB (1234),’ALBERTO’,CLASS=T,MSGCLASS=R

  • //PROCDEMO PROC

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • //STEPX1 EXEC PGM=PGTST01

  • //ENTRADA DD DSN=ARQUIVOX,DISP=SHR

  • //SAIDA DD SYSOUT=A

  • // PEND

  • //S1 EXEC PROC=PROCDEMO

  • //* PRIMEIRA CHAMADA

  • //S2 EXEC PROCDEMO

  • //* SEGUNDA CHAMADA

  • //STEPX1.ENTRADA DD *

  • dados in-stream para o arquivo ENTRADA do

  • step STEPX1 da proc PROCDEMO

  • //S3 EXEC PROCDEMO

  • //* TERCEIRA CHAMADA

  • A reader / interpreter NÃO VAI até a PROCLIB para saber como EXPANDIR a PROC;

  • A expansão é feita “consultando” a PROC-PEND no mesmo JOB

- PROC chamada para execução nesse mesmo JOB


Procs par metros simb licos
PROCS – parâmetros simbólicos

  • Procs – parâmetros simbólicos


Procs par metros simb licos1
PROCS – parâmetros simbólicos

  • Na PROC a seguir :

  • //SSSPRO1 PROC

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=A

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=A

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=A

  • // PEND

  • Toda vez que ela for chamada, os relatórios de ddname

  • RELAT1, RELAT2 e RELAT3 terão saída em classe A.


Procs par metros simb licos2
PROCS – parâmetros simbólicos

  • Para haver flexibilidade quanto a isso, pode-se deixar a classe passível de ser modificada quando a PROC for chamada.

  • Para isso, usa-se os parâmetros simbólicos:

  • //SSSPRO1 PROC

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=&RELCLA

  • // PEND

  • Isso significa que a classe não está indicada.

  • - Ela deve ter um valor default ou

  • - Ela deve ser especificada na chamada da proc (se não, o valor default será assumido)


Procs par metros simb licos3
PROCS – parâmetros simbólicos

  • Se não houver valor default: erro de JCL.

  • Supor essa proc in-stream:

  • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=B

  • //SSSPRO1 PROC

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=&RELCLA

  • // PEND

  • //*

  • //S1 EXEC SSSPR01

  • Na expansão da PROC, na sua chamada para o STEP S1, vai dar erro pois na expansão da PROC, o sistema não irá saber qual classe deve atribuir ao arquivo dos DD’s RELAT1, RELAT2 e RELAT3


Procs par metros simb licos4
PROCS – parâmetros simbólicos

  • Uma forma de estabelecer o valor default é indicá-lo na declaração da PROC, no statement PROC

  • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=B

  • //SSSPRO1 PROC RELCLA=*

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=&RELCLA

  • // PEND

  • //*

  • //S1 EXEC SSSPR01

  • O sistema entende que os 3 DD’s serão de SYSOUT=*


Procs par metros simb licos5
PROCS – parâmetros simbólicos

  • Para alterar o valor default (override):

  • deve-se indicar o valor desejado na chamada da PROC.

  • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=B

  • //SSSPRO1 PROC RELCLA=*

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=&RELCLA

  • // PEND

  • //*

  • //S1 EXEC SSSPR01,RELCLA=A

  • O sistema entende que os 3 DD’s serão de SYSOUT=A


Procs par metros simb licos6
PROCS – parâmetros simbólicos

  • Para alterar o valor default (override)

  • deve-se indicar o valor desejado na chamada da PROC.

  • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=B

  • //SSSPRO1 PROC RELCLA=*

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=&RELCLA

  • // PEND

  • //*

  • //S1 EXEC SSSPR01,RELCLA=A

  • //S2 EXEC SSSPR01

  • O sistema entende que os 3 DD’s do step S1 serão de SYSOUT=A

  • e que os 3 DD’s do step S2 serão de SYSOUT=*


Procs par metros simb licos7
PROCS – parâmetros simbólicos

  • Para alterar o valor default (override)

  • A indicação do valor desejado pode ser aplicada somente ao(s) DD(s) desejado(s):

  • //JOBEXEMP JOB (1234),’ALBERTO’,CLASS=B

  • //SSSPRO1 PROC RELCLA=*

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=ARQALB.DATA.DISP=SHR

  • //RELAT1 DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //RELAT2 DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //RELAT3 DD SYSOUT=&RELCLA

  • // PEND

  • //*

  • //S1 EXEC SSSPR01,RELCLA.STEPA=A,RELCLA.STEPC=R

  • //S2 EXEC SSSPR01,RELCLA.STEPB=X

  • O sistema entende que:

  • RELAT1 do STEPA de S1 : SYSOUT=A

  • RELAT1 do STEPB de S1 : SYSOUT=*

  • RELAT1 do STEPC de S1 : SYSOUT=R

  • RELAT1 do STEPA de S2 : SYSOUT=*

  • RELAT1 do STEPB de S2 : SYSOUT=X

  • RELAT1 do STEPC de S2 : SYSOUT=*


Procs par metros simb licos8
PROCS – parâmetros simbólicos

  • Portanto: para efetuar override de valores default de parâmetros simbólicos, deve-se especificar na chamada da PROC:

  • ddname.stepname=xxx


Procs par metros simb licos9
PROCS – parâmetros simbólicos

  • Outra forma de alterar o default, válida num trecho do (ou em todo) JOB, é via comando SET:

  • Sintaxe : //[nome] SET variavel_simbolica=[valor]

  • //SSSPRO1 PROC

  • //STEPA EXEC PGM=PPPX1

  • //DD1 DD DSN=...

  • //SYSPRINT DD SYSOUT=&RELCLA

  • //STEPB EXEC PGM=PPPX2

  • //SYSPRINT DD SYSOUT=&RELCLA

  • //STEPC EXEC PGM=PPPX3

  • //SYSPRINT DD SYSOUT=&RELCLA

  • // PEND

  • // SET RELCLA=A

  • //STEP1 EXEC SSSPR01

  • //STEP2 EXEC SSSPR01

  • //STEP3 EXEC SSSPR01

  • //STEP4 EXEC SSSPR01

  • //STEP5 EXEC SSSPR01

  • // SET RELCLA=B

  • //STEP6 EXEC SSSPR01

  • //STEP7 EXEC SSSPR01

  • //STEP8 EXEC SSSPR01

  • //STEP9 EXEC SSSPR01

  • //STEP10 EXEC SSSPR01

  • Os steps 01, 02, 03, 04 e 05 terão RELCLA valendo A

  • Os steps 06, 07, 08, 09 e 10 terão RELCLA valendo B


Procs inclus o dd na proc
PROCS – inclusão DD na PROC

  • Inclusão de DD numa PROC


Procs inclus o dd na proc1
PROCS – inclusão DD na PROC

  • Se for para incluir um DD (na proc não existe um DD, e ele precisa ser adicionado ao step):

  • //nome_step.ddname DD parâmetros

  • Ex.:

  • //S2 EXEC SSSPR01,RELCLA.STEPB=X

  • //STEPB.RELOUTRO DD SYSOUT=*


Procs inclus o de arquivos
PROCS – inclusão de arquivos

  • Inclusão de arquivos


Procs inclus o de arquivos1
PROCS – inclusão de arquivos

  • Arquivo adicional:

  • Se for para incluir um arquivo adicional (na proc não existe um DD, e ele precisa ser adicionado ao step):

  • //nome_step.ddname DD parâmetros

  • Ex.:

  • //S2 EXEC SSSPR01,RELCLA.STEPB=X

  • //STEPB.RELOUTRO DD SYSOUT=*


Procs inclus o de arquivos2
PROCS – inclusão de arquivos

  • Mais um arquivo numa sequência de concatenação:

  • Se for para incluir um arquivo adicional (concatenar) num DD que já exista: especificar um DD para cada DD existente, sem parâmetros, e acrescentar o DD desejado .

  • //nome_stepddname DD

  • // DD

  • // DD nova_concatenacao_desejada

  • Exemplo :

  • //STEP1 EXEC PROCX1

  • //STEPA.DD2 DD

  • // DD

  • // DD DSN=TST.ARQUIVOX...


Procs altera o par metros exec
PROCS – alteração parâmetros EXEC

  • Alteração parâmetros EXEC


Procs altera o par metros exec1
PROCS – alteração parâmetros EXEC

  • Na chamada da PROC, indicar o parâmetro e o nome do step desejados:

  • //stepname EXEC PROC=xxx,parâmetro.nome_step=valor

  • Ex.:

  • //S2 EXEC SSSPR01,RELCLA.STEPB=X,PARM.STEPB=‘YES’

  • //STEPB.RELOUTRO DD SYSOUT=*


Jcl if then else endif
JCL – IF / THEN / ELSE / ENDIF

  • Comandos IF / THEN / ELSE / ENDIF


Jcl if then else endif1
JCL – IF / THEN / ELSE / ENDIF

  • Podem ser usados em substituição ao COND (com a vantagem de ser mais fácil de entender...).

  • Sintaxe :

  • // IF (condicao) THEN

  • statements a executar se a condição for satisfeita

  • // ENDIF

  • ou

  • // IF (condicao) THEN

  • statements a executar se a condição for satisfeita

  • // ELSE

  • statements a executar se a condição não for satisfeita

  • // ENDIF


Jcl if then else endif2
JCL – IF / THEN / ELSE / ENDIF

  • Condição = especificação da condição que, se satisfeita, indica que o conjunto de statements que seguem o THEN deve ser executado.

  • As condições que podem ser testadas são as que seguem:


Jcl if then else endif3
JCL – IF / THEN / ELSE / ENDIF

  • Testando o return code de um step anterior

  • [stepname.]RC EQ return_code ou

  • [stepname.]RC GT return_code ou

  • [stepname.]RC LT return_code ou

  • [stepname.]RC NE return_code ou

  • [stepname.]RC NL return_code ou

  • [stepname.]RC NG return_code ou

  • [stepname.]RC GE return_code ou

  • [stepname.]RC LE return_code


Jcl if then else endif4
JCL – IF / THEN / ELSE / ENDIF

  • Testando se um (programa de um) step anterior

  • iniciou a execução ou não (flushed) :

  • [stepname.]RUN EQ TRUE ou

  • [stepname.]RUN EQ FALSE

  • [stepname.]RUN EQ TRUE ou

  • [stepname.]RUN EQ FALSE


Jcl if then else endif5
JCL – IF / THEN / ELSE / ENDIF

  • Testando se um (programa de um) step anterior abendou ou não :

  • [stepname.]ABEND EQ TRUE ou

  • [stepname.]ABEND EQ FALSE

  • [stepname.]ABEND EQ TRUE ou

  • [stepname.]ABEND EQ FALSE


Jcl if then else endif6
JCL – IF / THEN / ELSE / ENDIF

  • Testando o Completion Code (sistema ou user) de um (programa de um) step anterior :

  • [stepname.]ABENDCC EQ Snnn ou

  • [stepname.]ABENDCC EQ Unnnn

  • [stepname.]ABENDCC EQ Snnn ou

  • [stepname.]ABENDCC EQ Unnnn


Jcl if then else endif7
JCL – IF / THEN / ELSE / ENDIF

  • Condições múltiplas =

  • Utilizar parênteses para indicar a prioridade e sequência de análise

  • Utilizar & para E (and) e | para OU (or)


Jcl if then else endif8
JCL – IF / THEN / ELSE / ENDIF

  • ENDIF é obrigatório para indicar o fim da abrangência do que deve ser executado se a condição for satisfeita.

  • ELSE é opcional.

  • IMPORTANTE : Usar COND e IF / THEN / ELSE / ENDIF juntos pode ser extremamente confuso. NÃO FAÇA ISSO.


Jcl if then else endif9
JCL – IF / THEN / ELSE / ENDIF

  • Exemplo :

  • //ARSARS01 JOB (1234),'ROMANO',CLASS=1,MSGCLASS=X

  • //*------------------------------------------------------------

  • //STEP01 EXEC PGM=IEFBR14

  • //STEP02 EXEC PGM=IEFBR14

  • // IF (STEP01.RC NG 0) THEN

  • //STEP03 EXEC PGM=IEFBR14

  • // ENDIF

  • //*------------------------------------------------------------

  • //STEP04 EXEC PGM=IEFBR14

  • // IF ((STEP01.RC EQ 0)) THEN

  • //STEP05 EXEC PGM=IEFBR14

  • // ELSE

  • //STEP06 EXEC PGM=IEFBR14

  • // ENDIF

  • //*------------------------------------------------------------

  • //STEP07 EXEC PGM=IEFBR14

  • // IF ((STEP01.RUN EQ TRUE)) THEN

  • //STEP08 EXEC PGM=IEFBR14

  • // ENDIF

  • // IF ((STEP01.RUN EQ FALSE)) THEN

  • //STEP09 EXEC PGM=IEFBR14

  • // ENDIF

  • Esse JCL, ao ser executado, gerará :


Jcl if then else endif10
JCL – IF / THEN / ELSE / ENDIF

  • Exemplo :

  • $HASP373 LSG#@ARS STARTED - INIT 2 IEF403I LSG#@ARS - STARTED - TIME=14.52.18

  • #

  • # JOBNAME STEPNAME PROCSTEP PROGRAM RC

  • # LSG#@ARS STEP01 IEFBR14 00

  • # LSG#@ARS STEP02 IEFBR14 00

  • # LSG#@ARS STEP03 IEFBR14 00

  • # LSG#@ARS STEP04 IEFBR14 00

  • # LSG#@ARS STEP05 IEFBR14 00

  • # LSG#@ARS STEP06 IEFBR14 FLUSH

  • # LSG#@ARS STEP07 IEFBR14 00

  • # LSG#@ARS STEP08 IEFBR14 00

  • # LSG#@ARS STEP09 IEFBR14 FLUSH

  • IEF404I LSG#@ARS - ENDED - TIME=14.52.19


Control s bmc software
CONTROL’s – BMC Software


Control s bmc software1
CONTROL’s – BMC Software