1 sumário pag.ant. alberto romano schiesari – conceitos jcl mvs

211
www.profars.com Conceitos JCL MVS

Upload: internet

Post on 21-Apr-2015

126 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

1Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos JCL MVS

Page 2: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

2Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

[email protected]

Page 3: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

3Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

SumárioPrincipais sistemas operacionais IBMLinha MVSExecução da demanda de serviçosFluxo geralJES2Spool de entrada e spool de saídaSpool de entradaSubmissão de jobs - RoscoeEnfileiramento de jobs no spool de entradaConteúdo de cada job no spool de entrada InitiatorsSpool de saídaJCLJOBEXECDDBusca em bibliotecasPROCSApêndice - Mainframes IBMApêndice - CONTROL’s

Page 4: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

4Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos

Principais sistemas operacionais IBM

(as datas citadas são aproximadas)

ver

http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp

Page 5: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

5Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos – Principais sistemas operacionais IBM

Linha “DOS” ou “VSE”

DOS (1966)

DOS/VS (1972)

DOS/VSE (80’s)

VSE/ESA (1991)

z/VSE (2005)

Page 6: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

6Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Principais sistemas operacionais IBM

Linha “VM”

VM/370 (1972)

VM/SP (1980)

VM/XA (1988)

VM/ESA (1990)

z/VM (2000)

Conceitos – Principais sistemas operacionais IBM

Page 7: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

7Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos

Principais sistemas operacionais IBM

Linha “real-time” (transacionais)

ACP (1969)

TPF (1979)

z/TPF (2005)

Conceitos – Principais sistemas operacionais IBM

Page 8: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

8Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos

Principais sistemas operacionais IBM

Linha Unix-like

UTS (1981)

AIX/370 (1990)

AIX/ESA (1991)

LINUX (1999)

Open Solaris (2008)

Conceitos – Principais sistemas operacionais IBM

Page 9: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

9Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos

Linha MVS

MFT (1966) ; OS/VS1 (1972) (fim)

MVT (1967)

Conceitos – Principais sistemas operacionais IBM

OS/VS2 R1 (SVS) (1972) 24-bit addressing; Single Address Space

MVS (OSVS2 R2) (1974) 24-bit addressing; Múltiplos Address Spaces

MVS/370 (1981) .

MVS/XA (83) Extended Architecture

MVS/ESA (1988) Enterprise System Architeture; 31-bit addressing

OS/390 (1995) .

z/OS (2000) ; 24-,31- 64-bit addressing

z/OS 1.10 (Sep 2008)

(aqui = 1.09)

Principais sistemas operacionais IBM

Page 10: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

10Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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)

Conceitos – Principais sistemas operacionais IBM

Page 11: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

11Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Conceitos

A título de curiosidade: exemplo de JCL para a linha DOS

baixa plataforma (arquivos .bat )

@echo off

cls

:a

ECHO Compilando %1

IF EXIST %1.OBJ DEL %1.OBJ

COBOL %1; ANIM COPYLIST > %1.LST

IF ERRORLEVEL 1 ECHO *** Erro

LINK %1+%COBDIR%\ADIS+%COBDIR%\ADISKEY+%COBDIR%\ADISINIT; >> %1.LST

rem TYPE %1.LST

shift

if not "%1" == "" goto a

@ECHO

Conceitos – Principais sistemas operacionais IBM

Page 12: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

12Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.functions

FILE=/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

Conceitos – Principais sistemas operacionais IBM

Page 13: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

13Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 /* /& * $$ EOJ

http://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml

Conceitos – Principais sistemas operacionais IBM

Page 14: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

14Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Conceitos – Principais sistemas operacionais IBM

Page 15: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

15Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Execução da demanda de serviços

Page 16: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

16Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Linha MVS – principais componentes para serviços

CUIDADO! ACHTUNG!

Tudo o que você ver/ler/escutar é válido

para aplicações BATCH !

Page 17: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

17Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Linha MVS – principais componentes para serviços

CUIDADO! ACHTUNG!

Tudo o que você ver/ler/escutar é válido

para aplicações BATCH !

Page 18: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

18Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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”)

Page 19: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

19Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Linha MVS – principais componentes para serviços

Fluxo geral

SISTEMA

Entrada (pedido de execução) de

serviços

?Como entram os serviços?

Page 20: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

20Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Linha MVS – principais componentes para serviços

Fluxo geral

SISTEMA

Saída dos resultados

(basicamente: impressão em papel ou “em

terminal”)

?Como saem os resultados?

Page 21: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

21Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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)

Page 22: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

22Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Portanto:

Entrada (pedido de execução) de

serviços

Saída dos resultados

(basicamente: impressão em papel ou “em

terminal”)

JES2

Componentes do JES2 que recebem as “entradas”

Componentes do JES2 que dão

saída aos resultados

Page 23: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

23Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Sistema Operacional z/OS

JES2

Em outras palavras:

Entrada (pedido de execução) de

serviços

Saída dos resultados

(basicamente: impressão em papel ou “em

terminal”)

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...

Page 24: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

24Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Sistema Operacional z/OS

JES2

Por exemplo:

Entrada de serviços via

terminal (sub)

Saída dos resultados via

terminal (browse de sysout de job)

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...

Page 25: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

25Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Sistema Operacional z/OS

JES2

Mas... Devemos lembrar que:

Terminais para SUB

(PRECISAM estar associados a um

aplicativo !!!)

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...

Terminais para BROWSE

(PRECISAM estar associados a um

aplicativo !!!)

Page 26: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

26Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Sistema Operacional z/OS

JES2

Mas... Devemos lembrar que:

Qual aplicativo é responsável por este

terminal?

Componente 1 ...

Componente 2 ...

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...

Qual aplicativo é

responsável por este terminal?

Page 27: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

27Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

JES2

Pode ser o Roscoe...

O Roscoe é quem submete serviços para o

JES2

ROSCOE

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

do JES2

Page 28: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

28Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

JES2

Ou o TSO...

O TSO é quem submete serviços para o JES2

TSO

O TSO é quem trata os

resultados, “pegando-os” do JES2

Page 29: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

29Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

JES2

Mas, seja um ou seja outro...

O terminal é só a interface visual

Roscoe ou TSO

O terminal é só a interface

visual

Page 30: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

30Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

JES2

Os dados, na verdade, estão onde?

Onde está o stream que preparamos e submetemos?

Roscoe ou TSO

Onde está a sysout que acessamos para ver?

Page 31: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

31Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

JES2

Em disco ! Nas áreas de spool !

Roscoe ou TSO Área de spool

de entrada

Área de spool de saída

Page 32: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

32Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Entrada de serviços

Vamos ver inicialmente alguns detalhes do processo

de spool de entrada

Roscoe ou TSOÁrea de spool

de entrada

Page 33: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

33Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

LIB’s do Roscoe(organização

de dados proprietária)(quando for dado SAVE or UPDATE)

Entrada de serviços - ROSCOE

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

Roscoe

Área de manipulação

do Roscoe (AWS)(criação / FETCH/ATTACH)

Page 34: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

34Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Arquivo sequencial

Entrada de serviços - ROSCOEOBS.: ou o TSO

(os dados são manipulados diretamente nos arquivos “normais”)

TSO

Membro de um PDS

Page 35: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

35Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Dados editadosa submeter

Entrada de serviços - ROSCOEOBS.: nós nos referiremos à manipulação dos dados a submeter usando

esta figura

TSO/Roscoe

Page 36: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

36Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços - ROSCOE

Passo 1 = edição dados a submeter

TSO/Roscoe

Dados editados

a submeter

Page 37: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

37Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços - ROSCOE

Passo 1 = edição dados a submeter

TSO/Roscoe

//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 ENTRADALAG 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---------*

Page 38: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

38Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços - ROSCOE

Vendo de outro jeito...

TSO/Roscoe

Statement JOB

Componentes do primeiro step (compilação = execução do programa montador Assembler)

Componentes do segundo step (linkedição = execução do programa linkeditor)

Componentes do terceiro step (meu programa)

Page 39: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

39Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços - ROSCOE

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

TSO/Roscoe

//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 ENTRADALAG 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---------*

Page 40: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

40Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 41: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

41Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 *

Em vermelho = JCL

Em azul = dados

Dados do arquivo SYSIN do Step C

Dados do arquivo AGENCIAS do Step G

Page 42: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

42Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços - ROSCOE

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

TSO/Roscoe

//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 ENTRADAFLAG 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---------*

Page 43: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

43Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Entrada de serviços - ROSCOE

TSO/Roscoe

Área de spool de entrada

Dados editadosa submeter

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

SUB

Page 44: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

44Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Entrada de serviços - ROSCOE

TSO/Roscoe

Área de spool de entrada

AWS

O componente do JES que “lê” o que alguém (por ex. o Roscoe) submete

é (são) a(s) READER(s) / INTERPRETER(s)

SUB

Reader

Page 45: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

45Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

AWS

JES2

Entrada de serviços - ROSCOE

Área de spool de entrada

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)

Readers

TSO Roscoe

SUBSUBDatasets “normais”

Page 46: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

46Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

AWS

JES2

Entrada de serviços

Área de spool de entrada

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

Readers

TSO Roscoe

SUBSUBDatasets “normais”

Page 47: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

47Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços

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

JOB0001 JOB0002 JOB0003 JOB0004 JOB0005

JOB0006 JOB0007 JOB0008 Etc...

Page 48: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

48Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

JOB0001 JOB0002 JOB0003 JOB0004 JOB0005

JOB0006 JOB0007 JOB0008 Etc...

Page 49: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

49Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços

Os JOBS ficam na fila aguardando execução.

JOB0001 JOB0002 JOB0003 JOB0004 JOB0005

JOB0006 JOB0007 JOB0008 Etc...

Page 50: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

50Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços

Vamos ver um pouquinho mais detalhadamente como eles ficam

armazenados. Detalhemos um deles (JOB0001):

JOB0001TODOS 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

Page 51: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

51Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 52: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

52Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços

O spool de entrada referente ao JOB0001 vai ficar assim:

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

//PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC PGM=PGTST01,PARM=‘TOT=YES' //STEP2 EXEC PGM=PGTST02

Page 53: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

53Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 */

Page 54: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

54Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços

O spool de entrada referente ao JOB0002 vai ficar assim:

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 */

//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 */

Page 55: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

55Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 ENTRADALAG 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---------*

Page 56: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

56Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 ENTRADALAG 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---------*

Page 57: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

57Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviçosO 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=G ; DD=AGENCIAS0001NOME DA AGENCIA 0001---------*0002NOME DA AGENCIA 0002---------*0003NOME DA AGENCIA 0003---------*0004NOME DA AGENCIA 0004---------*

Step=C ; DD=SYSINPROGRAMA 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 ENTRADALAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

Page 58: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

58Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviçosNa 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 *

Page 59: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

59Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviçosFINALMENTE !!! 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=G ; DD=AGENCIAS0001NOME DA AGENCIA 0001---------*0002NOME DA AGENCIA 0002---------*0003NOME DA AGENCIA 0003---------*0004NOME DA AGENCIA 0004---------*

Step=C ; DD=SYSINPROGRAMA 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 ENTRADALAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

Page 60: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

60Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviçosOK? Decore direitinho esse formato! Vamos voltar a falar sobre isso.

JOB1234

1 dataset com todo o JCL, já expandido

Step=ssssssss ; DD=dddddddd

1 dataset para cada arquivo in-stream

Page 61: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

61Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Entrada de serviços

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

JOB0001 JOB0002 JOB0003 JOB0004 JOB0005

JOB0006 JOB0007 JOB0008 Etc...

Page 62: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

62Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Sistema Operacional z/OS

Execução de serviços

Para que os jobs sejam executados, entram em ação outros

componentes do sistema: os INITIATOR’s

Componente 1 ...

Initiator’s

JES2

Componente n ...

Aplicativo 1

Aplicativo 2 ...

Aplicativo n (ex.:CICS) ...

Aplicativo x (ex.: DB2) ...

Aplicativo z ...

JOBS da área de

spool de entrada

Seleção para execução

Page 63: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

63Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Initiator’sJOBS da área de

spool de entrada

Seleção para execução

Qual o critério que eles usam para selecionar?

A CLASSE do job.

Page 64: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

64Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

Cada initiator atende algumas classes pré-definidas. Ex.

INIT 1 = atende jobs de classes A, B e C

INIT 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.

Spool de entrada: fila de jobs à espera para execução

JOB0001 (classe A)

JOB0002 (classe B)

JOB0003 (classe R)

JOB0004 (classe D)

JOB0005 (classe E)

JOB0006 (classe T)

Etc...

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)

Page 65: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

65Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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....+....8INIT 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

 

Page 66: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

66Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviçosEx.: 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

Spool de entrada: fila de jobs à espera para execução

JOB0001 (classe A)

JOB0002 (classe B)

JOB0003 (classe R)

JOB0004 (classe D)

JOB0005 (classe E)

JOB0006 (classe T)

Etc...

Page 67: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

67Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

INIT 1 escolheu (selecionou) o JOB0001

INIT 1 : selecionou o JOB0001 para execução

Spool de entrada: fila de jobs à espera para execução

JOB0001 (classe A)JOB0002 (classe B)

JOB0003 (classe R)

JOB0004 (classe D)

JOB0005 (classe E)

JOB0006 (classe T)

Etc...

Page 68: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

68Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Spool de entrada: fila de jobs à espera para execução

JOB0001 (classe A)JOB0002 (classe B)

JOB0003 (classe R)

JOB0004 (classe D)

JOB0005 (classe E)

JOB0006 (classe T)

Etc...

Page 69: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

69Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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...

Page 70: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

70Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

( Abrindo parênteses...

Page 71: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

71Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 72: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

72Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

) Fechando parênteses...

Page 73: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

73Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 74: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

74Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 75: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

75Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 76: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

76Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

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=G ; DD=AGENCIAS0001NOME DA AGENCIA 0001---------*0002NOME DA AGENCIA 0002---------*0003NOME DA AGENCIA 0003---------*0004NOME DA AGENCIA 0004---------*

Step=C ; DD=SYSINPROGRAMA 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 ENTRADALAG DS CL80 AREA PARA LEITURA ARQUIVO

END , ULTIMO STMT FONTE

O programa lê daqui!

1º. step :

Page 77: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

77Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 78: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

78Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=...)

Page 79: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

79Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

OK?Entrada de jobs OK?

Page 80: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

80Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Execução de serviços

Hora de ver como funciona o

spool de saída

Page 81: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

81Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Saída de resultados (relatórios)

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

Roscoe(CA software) ou

TSO (IBM software)

Área de spool

de saída

Control

(software da BMC software)

Page 82: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

82Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Saída de resultados (relatórios)

Quem “grava” no spool de saída ?

Aplicativos

Área de spool de saída

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 83: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

83Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Saída de resultados (relatórios)Todo mundo que “imprime” alguma coisa...

Aplicativos e sistema operacional.

Aplicativos

Área de spool de saída

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 84: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

84Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Saída de resultados (relatórios)

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

Aplicativos

Área de spool de saída

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 85: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

85Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

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

Aplicativos

Área de spool de saída

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 86: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

86Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

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

Área de spool de saída

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 87: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

87Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

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

Área de spool de saída

Aplicativos

Page 88: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

88Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Saída de resultados (relatórios)

Mas o que é esse TRECO ?

Aplicativos

?

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 89: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

89Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JES2

Saída de resultados (relatórios)

É a classe de saída.

Aplicativos

Há n arquivos por job,

cada arquivo tem uma classe

associada

Sistema Operacional e seus componentes (inclusive o

JES2)

Page 90: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

90Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

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

JOB1234 , file JES2.JESJCL, classe RLinha 1 Relat1...Etc...

JOB1234 , file JES2.JESYSMSG, classe RLinha 1 Relat2...Etc...

JOB1234 , file JES2.JESMSGLG, classe RLinha 1 file 1...Etc...

Page 91: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

91Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 *--------------------------Se15.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 *--------------------------Se15.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 (M15.42.14 JOB04227 -JOBNAME STEPNAME PROCSTEP RC EXCP CPU SRB15.42.14 JOB04227 -PSTARS3T STEP1 C 00 63 .00 .0015.42.14 JOB04227 -PSTARS3T STEP1 L 00 19 .00 .0015.42.14 JOB04227 IEF285I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 15.42.14 JOB04227 -PSTARS3T STEP1 G 00 9 .00 .0015.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

Page 92: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

92Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=*

Page 93: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

93Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=SYIEF285I D839471.PSTARS3T.JOB04227.D0000102.? SYSOUT IGD106I SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 PASSED, DDNAME=SYIEF285I D839471.PSTARS3T.JOB04227.D0000101.? SYSIN IEF373I STEP/C /START 2009240.1542 IEF374I STEP/C /STOP 2009240.1542 CPU 0MIN 00.01SEC SRB 0MINIEF236I 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

Page 94: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

94Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Saída de resultados (relatórios)Exemplo (truncadas à direita) de JES2.JESYSMSG =

mensagens do initiator e do terminator

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=SYIGD106I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 PASSED, DDNAME=SYIGD105I SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 DELETED, DDNAME=SYIEF285I D839471.PSTARS3T.JOB04227.D0000103.? SYSOUT IEF373I STEP/L /START 2009240.1542 IEF374I STEP/L /STOP 2009240.1542 CPU 0MIN 00.00SEC SRB 0MINIEF236I 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 0MINIGD105I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 DELETED, DDNAME=SYIEF375I JOB/PSTARS3T/START 2009240.1542 IEF376I JOB/PSTARS3T/STOP 2009240.1542 CPU 0MIN 00.01SEC SRB 0MIN

Continuação

Page 95: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

95Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Aplicativo

(MEU programa)

Saída de resultados (relatórios)Vejamos o exemplo de um aplicativo que “imprime” 2 relatórios:

//RELAT1 DD SYSOUT=* , //RELAT2 DD SYSOUT=B

e tem no JOB o parâmetro MSGCLASS=R

JOB1234 , STEP 1, DD RELAT1, classe RLinha 1 Relat1Linha 2 relat1...Etc...

JOB1234 , STEP1, DD RELAT2, classe BLinha 1 Relat2Linha 2 relat2...Etc...

JOB1234, JES2.JESMSGLG, classe R

JOB1234, JES2.JESJCL, classe R

JOB1234, JES2.JESMSGLG, classe R

Sistema Operacional

Page 96: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

96Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Writer que atende classe

B

Writer que atende classe

R

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 , DD RELAT1, classe RLinha 1 Relat1Linha 2 relat1...Etc...

JOB1234 , DD RELAT2, classe BLinha 1 Relat2Linha 2 relat2...Etc...

JOB1234, JES2.JESMSGLG, classe R

JOB1234, JES2.JESJCL, classe R

JOB1234, JES2.JESMSGLG, classe R

Page 97: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

97Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Writer que atende classe

B

Writer que atende classe

R

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 , DD RELAT1, classe RLinha 1 Relat1Linha 2 relat1...Etc...

JOB1234 , DD RELAT2, classe BLinha 1 Relat2Linha 2 relat2...Etc...

JOB1234, JES2.JESMSGLG, classe R

JOB1234, JES2.JESJCL, classe R

JOB1234, JES2.JESMSGLG, classe R

Page 98: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

98Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL

Hora de ver de fato o JCL

Page 99: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

99Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL

JCL = Job Control Language =

Linguagem de controle de serviços =

linguagem para pedir ao sistema

operacional a execução de serviços

Page 100: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

100Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL

Como toda linguagem decente, o JCL

tem comandos.

Há 3 principais: JOB, EXEC e DD

Antes de ve-los, vamos ver algumas

coisas básicas

Page 101: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

101Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Sintaxe básica

Page 102: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

102Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Sempre: // nas posições 1 e 2

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

Page 103: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

103Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

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)

Continuação de statements

Page 104: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

104Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Exemplo (as duas primeiras linhas são réguas para referência da

posição dos caracteres nos statements) :

Continuação de 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

Page 105: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

105Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Problemas mais comuns

Continuação de statements

. 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).

Page 106: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

106Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Problemas mais comuns

Continuação de statements

. 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)

Page 107: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

107Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Problemas mais comuns

Continuação de statements

. 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

Page 108: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

108Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Problemas mais comuns

Continuação de statements

. 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)

Page 109: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

109Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – Sintaxe básica

Conteúdo dos statements

       Identificação = // nas colunas 1 e 2       Nome = 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       Operaçã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       Parâmetros; podem ser:       posicionais : dependem da posição ou       keyword : palavra chave seguida do sinal de =      Se tiver só posicionais, colocá-los na ordem (posição) adequada      Se tiver só keyword, colocar em qualquer ordem      Se tiver ambos, colocar primeiro os posicionais (na ordem adequada)e depois os keyword (em qualquer ordem)       Comentários; precisa ter pelo menos um espaço em branco após os operandos, antes dos comentários

Page 110: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

110Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

O JOB como um todo – visão geral

O JOB como um todo – visão geral

Page 111: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

111Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB – Visão geral

Visão geral

Page 112: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

112Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB – Visão geral

JOB

EXEC do primeiro step

DD 1 do primeiro step

.

.

DD n do primeiro step

EXEC do segundo step

DD 1 do segundo step

.

.

DD n do segundo step

EXEC do terceiro step

DD 1 do terceiro step

.

.

DD n do terceiro step

JOB

Primeiro Step

Segundo Step

Terceiro Step

Delimitador de início do JOB

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)

Page 113: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

113Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 114: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

114Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB – Visão geral

//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 ...

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...

Como o segundo EXEC está errado, ele não

“marca” o início de um segundo step

Page 115: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

115Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB – Visão geralExemplo 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 | +----------------------------------+

Page 116: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

116Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL - Comandos

Comandos

Page 117: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

117Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL - Comandos

Como toda linguagem decente, o JCL

tem comandos.

Há 3 principais: JOB, EXEC e DD

Vejamos inicialmente esses 3 comandos

Page 118: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

118Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

JOB

Page 119: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

119Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Sintaxe :

//nomejob JOB parâmetros_posicionais,parâmetros_keyword

Page 120: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

120Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Exemplo :

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

2 parâmetros posicionais 2 parâmetros keyword

Page 121: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

121Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 posicionais 2 parâmetros keyword

Page 122: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

122Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 posicionais 2 parâmetros keyword

Page 123: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

123Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Parâmetros keyword

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.

Page 124: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

124Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Parâmetros keyword

TIME= indica o tempo máximo de CPU do JOB; 1440 = indica que não há tempo máximo

Page 125: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

125Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Parâmetros keyword

MSGCLASS= indica a classe da sysout das mensagens exibidas

(conforme solicitado pelo MSGLEVEL)

Page 126: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

126Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Parâmetros keyword

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

Page 127: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

127Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JOB

Parâmetros keyword

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 programaHOLD = deixa o job em espera até ser liberado para execução

Page 128: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

128Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

EXEC

Page 129: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

129Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

Sintaxe :

//nomestep EXEC parâmetro_posicional,parâmetros_keyword

Page 130: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

130Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

Exemplo :

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

1 parâmetro posicional 2 parâmetros keyword

Page 131: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

131Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

Parâmetro posicional

Só 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

Page 132: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

132Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 133: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

133Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

COND= indica a(s) condição(ões) de execução ou não do stepCOND=EVEN executa o step MESMO QUE algum anterior tenha canceladoCOND=ONLY executa o step SOMENTE SE algum anterior tenha canceladoCOND=(n,cond) NÃO EXECUTA o step se n satisfizer a condição especificada em qualquer step anteriorCOND=(n,cond,step) NÃO EXECUTA o step se n satisfizer a condição especificada no step cujo nome foi indicadoCond 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 EXECUTAou 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 EXECUTAou 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

Page 134: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

134Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

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'

Page 135: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

135Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

EXEC

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 TST01 executa a PROC denominada TST01

//STEP2 EXEC PROC=TST01 executa a PROC denominada TST01

//STEP1 EXEC PGM=TST01 executa programa denominado TST01

Page 136: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

136Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

DD (Data Definition)

Page 137: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

137Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Sintaxe :

//nomearq DD parâmetros_posicionais,parâmetros_keyword

Page 138: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

138Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Exemplo :

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

1 parâmetro posicional 1 parâmetro keyword

Page 139: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

139Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Parâmetros posicionais

Há 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

Page 140: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

140Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//ARQ2 DD DSN=ARQUIVO.TESTEX,DISP=SHR

Arquivo in-stream com ddname ARQ1

Page 141: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

141Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Parâmetros posicionais: DD *Mais exemplos:

//ARQ1 DD *

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//ARQ2 DD *

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//ARQ2 DD *

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

Arquivo in-stream com ddname ARQ1

Arquivo in-stream com ddname ARQ2

Arquivo in-stream com ddname ARQ3

Page 142: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

142Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Parâmetros posicionais: DD *Mais exemplos:

//* ARQUIVO A SEGUIR = MOVIMENTO DO DIA

//ARQ4 DD *

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//* ARQUIVO A SEGUIR = CONTROLE

//ARQ5 DD *

22/07/2009

Arquivo in-stream com ddname ARQ4

Arquivo in-stream com ddname ARQ5

Page 143: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

143Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Parâmetros posicionais: DD *Mais exemplos:

//ARQ4 DD *

//* ARQUIVO A SEGUIR = MOVIMENTO

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//ARQ5 DD *

//* ARQUIVO A SEGUIR = CONTROLE

22/07/2009

Não dá erro, mas é Erro!!!

Page 144: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

144Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Parâmetros posicionais: DD *Mais exemplos:

//ARQ4 DD *

//* ARQUIVO A SEGUIR = MOVIMENTO

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//ARQ5 DD *

//* ARQUIVO A SEGUIR = CONTROLE

22/07/2009

Page 145: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

145Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

Parâmetros posicionais: DD *Mais exemplos:

//ARQ4 DD *

//* ARQUIVO A SEGUIR = MOVIMENTO

REGISTRO DE DADOS 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

//ARQ5 DD *

//* ARQUIVO A SEGUIR = CONTROLE

22/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

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.

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

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

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

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) .

Page 146: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

146Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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)

Page 147: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

147Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 1

REGISTRO DE DADOS 2

REGISTRO DE DADOS 3

// ESTE NÃO EH JCL !

EOF*

//ARQ2 DD DSN=ARQUIVO.TESTEX,DISP=SHR

Registros do arquivo in-stream com ddname ARQ1

Page 148: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

148Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 149: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

149Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 150: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

150Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

DSN Data Set Name = indica o nome externo (para o sistema operacional) do arquivo Ex.://SYSIN DD DSN=DESENV.TST.ALBERTO,DISP=SHR

Page 151: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

151Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

DCB indica as características do arquivoSub-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 deletadoRETPD= (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 deletadoLRECL= (Logical RECord Length) indica o tamanho, em bytes, do registro lógicoRECFM= (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 = UndefinedBLKSIZE= (BLocKSIZE) indica o tamanho, em bytes, do registro físicoEx.://SYSIN DD DUMMY,DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)

Page 152: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

152Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

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

Page 153: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

153Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

DISP DispositionDISP=(a,b,c) indica a ação a ser tomada referente ao arquivoa = 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)

Page 154: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

154Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

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

SYSOUT SYSOUT=classSYSOUT=(class,,formsname)SYSOUT=(class,writername,formsname)SYSOUT=(class,writername)SYSOUT=(class,INTRDR)Ex.://SYSOUT DD SYSOUT=*

Page 155: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

155Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

SPACE SPACE= (a,(b,c),RLSE) ouSPACE= (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ógicob = quantidade da área primáriac = quantidade da área secundária (opcional)d = tamanho do registro lógicoRLSE = (ReLeaSE) (opcional) se sobrar espaço, liberar

Page 156: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

156Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

DD

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)

Page 157: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

157Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 158: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

158Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Busca em bibliotecas

Busca em bibliotecas

Page 159: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

159Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 160: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

160Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Busca de programas executáveis

Busca de programas executáveis

Bibliotecas do sistema operacional SYS1.LINKLIB etc

Bibliotecas do usuárioEx.: SYS9.LINKLIB

SYS9.EMPLK01 SYS8.USRRHLIB SYS7.EASYLIB etc

Page 161: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

161Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Busca de programas executáveis

Busca de programas executáveis

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

SYS1.LINKLIB etcAs bibliotecas do usuário são buscadas se:- Estiverem na lista de busca automática (tempo de busca...)- Forem especificadas no JOBLIB ou STEPLIB

Page 162: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

162Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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).

Page 163: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

163Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 164: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

164Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 165: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

165Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Busca de JCL

Busca de JCL

Bibliotecas do sistema operacional SYS1.PROCLIB etc

Bibliotecas do usuárioEx.: SYS9.PROCLIB

SYS9.EMPROC1 SYS8.USRPROCL SYS7.PRODPROC etc

Page 166: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

166Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

Busca de JCL

Busca de JCL

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

SYS1.PROCLIB etcAs bibliotecas do usuário são buscadas se:- Estiverem na lista de busca automática - Forem especificadas no JCLLIB

Page 167: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

167Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 168: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

168Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 169: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

169Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 170: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

170Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS

PROCS

Page 171: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

171Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS

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

Page 172: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

172Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS

       Procs CATALOGADAS

Page 173: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

173Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 174: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

174Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCSProcs 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)

Page 175: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

175Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCSProcs 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// PENDFINAL

- Cópia simples para um membro da proclib desejada

Page 176: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

176Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCSProcs 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

Page 177: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

177Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS

       Procs IN-STREAM

Page 178: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

178Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 179: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

179Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS

- 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

Procs catalogadas: são aquelas que são - declaradas no início de um JOB- chamadas para execução nesse mesmo JOB

- PROC declarada logo no início do JOB

Page 180: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

180Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS

- 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

Procs catalogadas: são aquelas que são - declaradas no início de um JOB- chamadas para execução nesse mesmo JOB

- PROC chamada para execução nesse mesmo JOB

- 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

Page 181: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

181Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS – parâmetros simbólicos

Procs – parâmetros simbólicos

Page 182: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

182Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 183: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

183Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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)

Page 184: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

184Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 185: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

185Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=*

Page 186: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

186Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 187: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

187Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=Ae que os 3 DD’s do step S2 serão de SYSOUT=*

Page 188: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

188Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=*

Page 189: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

189Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 190: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

190Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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 AOs steps 06, 07, 08, 09 e 10 terão RELCLA valendo B

Page 191: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

191Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS – inclusão DD na PROC

Inclusão de DD numa PROC

Page 192: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

192Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=*

Page 193: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

193Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS – inclusão de arquivos

Inclusão de arquivos

Page 194: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

194Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=*

Page 195: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

195Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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_stepddname DD // DD// DD nova_concatenacao_desejadaExemplo : //STEP1 EXEC PROCX1//STEPA.DD2 DD // DD // DD DSN=TST.ARQUIVOX...

Page 196: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

196Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

PROCS – alteração parâmetros EXEC

Alteração parâmetros EXEC

Page 197: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

197Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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=*

Page 198: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

198Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

JCL – IF / THEN / ELSE / ENDIF

Comandos IF / THEN / ELSE / ENDIF

Page 199: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

199Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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// ELSEstatements a executar se a condição não for satisfeita// ENDIF

Page 200: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

200Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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:

Page 201: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

201Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 202: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

202Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 203: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

203Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 204: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

204Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 205: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

205Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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)

Page 206: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

206Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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.

Page 207: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

207Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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á :

Page 208: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

208Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

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

Page 209: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

209Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

CONTROL’s – BMC SoftwareProduto Função

Control-M Automated Production Control and Scheduling System

Manages and automates the setup, scheduling and execution of jobs in the data center.

Control-M / Restart Restart Management System

Automates the activities that must be performed when restarting failed jobs, including the scratching and uncataloging of datasets created by failed jobs.

Control-M / Tape Removable Media Management System

Increases utilization of removable media and controls retention periods. Prevents misuse of media, and provides tape library and vault control.

Control-M / Analyser

Automated Information Integrity System

Performs in-stream validation, accuracy, and reasonability checks on information used by data center production tasks (for example, reports, databases).

Control-D Output Management System Automatically schedules

and controls every aspect of report processing and distribution, including report decollating, bundling, printing, online viewing, and archiving.

Control-V Quick Access Archive Viewing System

Provides online access to archived reports and documents by indexed data retrieval

Page 210: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

210Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

CONTROL’s – BMC SoftwareProduto Função

Control-D / Page on demand

Report Retrieval and Display System

Enables end users to retrieve and view pages of reports that reside on mainframe storage in real time. Indexed reports can be retrieved by index name and value. AFP and XEROX reports can also be retrieved and displayed

using CONTROL-D/Web Access Server or CONTROL-D/Page On Demand API.

Control-D / Image Image Output Management System

Enables output from commercial imaging equipment to be imported into either CONTROL-D or CONTROL-V for decollation, distribution and viewing, and into

CONTROL-V for archiving and indexed retrieval.

Control-O Console Automation System and Desired State

Monitoring System

Monitors and automatically responds to messages, commands, and dataset events, as well as various other system events.

The CONTROL-O/COSMOS feature allows for status monitoring while maintaining all critical system objects in a desired and ideal status.

Page 211: 1 Sumário Pag.Ant. Alberto Romano Schiesari –  Conceitos JCL MVS

211Sumário Pag.Ant. Alberto Romano Schiesari – www.profars.com

THE END