2.14k likes | 2.34k Views
Conceitos JCL MVS. Apresentação. Obrigado por usar esta apresentação. Você está livre para fazer isso. Eu agradeço se fizer referência ao autor ao utilizá-la. Agradeço se você me enviar qualquer correção que ache necessária para otimizar a compreensão do leitor.
E N D
Apresentação Obrigado por usar esta apresentação. Você está livre para fazer isso. Eu agradeço se fizer referência ao autor ao utilizá-la. Agradeço se você me enviar qualquer correção que ache necessária para otimizar a compreensão do leitor. O mesmo se aplica a erros técnicos que você encontrar; por favor me ajude a deixar este material sem erros. Alberto Romano Schiesari – São Paulo - Brasil www.profars.com arschiesari@yahoo.com
Sumário Principais sistemas operacionais IBM Linha MVS Execução da demanda de serviços Fluxo geral JES2 Spool de entrada e spool de saída Spool de entrada Submissão de jobs - Roscoe Enfileiramento de jobs no spool de entrada Conteúdo de cada job no spool de entrada Initiators Spool de saída JCL JOB EXEC DD Busca em bibliotecas PROCS Apêndice - Mainframes IBM Apêndice - CONTROL’s
Conceitos Principais sistemas operacionais IBM(as datas citadas são aproximadas)verhttp://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp
Conceitos – Principais sistemas operacionais IBM Linha “DOS” ou “VSE”DOS (1966)DOS/VS (1972)DOS/VSE (80’s)VSE/ESA (1991)z/VSE (2005)
Conceitos – Principais sistemas operacionais IBM • Principais sistemas operacionais IBMLinha “VM”VM/370 (1972)VM/SP (1980)VM/XA (1988)VM/ESA (1990)z/VM (2000)
Conceitos – Principais sistemas operacionais IBM Conceitos • Principais sistemas operacionais IBMLinha “real-time” (transacionais)ACP (1969)TPF (1979)z/TPF (2005)
Conceitos – Principais sistemas operacionais IBM Conceitos • Principais sistemas operacionais IBMLinha Unix-likeUTS (1981)AIX/370 (1990)AIX/ESA (1991)LINUX (1999)Open Solaris (2008)
Conceitos – Principais sistemas operacionais IBM Conceitos • Principais sistemas operacionais IBM Linha MVSMFT (1966) ; OS/VS1 (1972) (fim)MVT (1967) OS/VS2 R1 (SVS) (1972) 24-bit addressing; Single Address SpaceMVS (OSVS2 R2) (1974) 24-bit addressing; Múltiplos Address SpacesMVS/370 (1981) .MVS/XA (83) Extended ArchitectureMVS/ESA (1988) Enterprise System Architeture; 31-bit addressingOS/390 (1995) . z/OS (2000) ; 24-,31- 64-bit addressingz/OS 1.10 (Sep 2008) (aqui = 1.09)
Conceitos – Principais sistemas operacionais IBM Conceitos Cada sistema operacional tem sua linguagem para elaborar “scripts” e para ser instrumento formal de (a) solicitação de serviços ao S.O. pelo usuário(b) retorno de resultados e mensagens do S.O. para o usuário Essa linguagem, no caso do MVS e s.o.’s derivados é genericamente denominada JCL (Job Control Language = Linguagem de Controle de Serviços)
Conceitos – Principais sistemas operacionais IBM Conceitos A título de curiosidade: exemplo de JCL para a linha DOS baixa plataforma (arquivos .bat ) @echo offcls:aECHO Compilando %1IF EXIST %1.OBJ DEL %1.OBJCOBOL %1; ANIM COPYLIST > %1.LSTIF ERRORLEVEL 1 ECHO *** Erro LINK %1+%COBDIR%\ADIS+%COBDIR%\ADISKEY+%COBDIR%\ADISINIT; >> %1.LSTrem TYPE %1.LSTshift if not "%1" == "" goto a@ECHO
Conceitos – Principais sistemas operacionais IBM Conceitos A título de curiosidade: exemplo de JCL para a linha UNIX (Shell Script)#!/bin/ksh#---------------------------------------------------------------------## Rotina: rsyil02.sh - Salva arquivo de retorno do Mainframe ##---------------------------------------------------------------------#BN=` basename $0 `DN=` dirname $0 `. $DN/raet.functionsFILE=/comunicacao/bi/recebidos/rsybi02if [ -f $FILE.txt ] ; then if [ -f $FILE.txt ] ; then salvacopia $FILE.txt || exit $? expurga $FILE.txt 12 || exit $? else echo " Erro. Arquivo $FILE.txt nao existe" exit 1 fi \mv -f $FILE.txt $FILEelse echo " Movimento Inexistente para o dia." exit 0fi
Conceitos – Principais sistemas operacionais IBM Conceitos A título de curiosidade: exemplo de JCL para a linha VSE>SUB,R,N >* BKPD047 - BACKUP D047 TO T047 * $$ JOB JNM=BKPD047,CLASS=8,USER='44-R.WALKO' * $$ PRT CLASS=B,DISP=H // JOB BKPD047 BACKUP D047 TO T047 // DLBL D047,'D047.ADPDCS.INPUT ',,VSAM,CAT=PRODCAT,BUFSP=40960 // TLBL FILEB,'T047,U' // EXEC EASYTREV INCLUDE EZBKVSES D047 VS VB 750 8352 UNLOAD /* /& * $$ EOJhttp://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml
Conceitos – Principais sistemas operacionais IBM Conceitos A título de curiosidade: o equivalente para a linha MVS//BKPD047 JOB (BKPD047),' ',CLASS=A,MSGCLASS=X, // MSGLEVEL=(1,1),REGION=6M //* //JOBLIB INCLUDE MEMBER=JOBLIB //STEP0010 EXEC PGM=SORT //* MODULE EASYTREV PROCESSED BY PLUG-IN LCPEZT //* VS VS I PRODCAT D047 'D047.ADPDCS.INPUT' //SORTIN DD DSN=MVS.D047.ADPDCS.INPUT,DISP=SHR //* MT O FILEB 'T047,U' //SORTOUT DD DSN=MVS.T047, // DISP=(NEW,CATLG,DELETE), // UNIT=TAPE //* PR O //SYSOUT DD SYSOUT=* //* CD I //SYSIN DD * *INCLUDE EZBKVSES D047 VS VB 750 8352 UNLOAD SORT FIELDS=COPY RECORD TYPE=V,LENGTH=750 /* //http://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml
Linha MVS – execução da demanda de serviços Execução da demanda de serviços
Linha MVS – principais componentes para serviços CUIDADO! ACHTUNG!Tudo o que você ver/ler/escutar é válido para aplicações BATCH !
Linha MVS – principais componentes para serviços CUIDADO! ACHTUNG!Tudo o que você ver/ler/escutar é válido para aplicações BATCH !
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”)
? Como entram os serviços? Linha MVS – principais componentes para serviços Fluxo geral SISTEMA Entrada (pedido de execução) de serviços
? Como saem os resultados? Linha MVS – principais componentes para serviços Fluxo geral SISTEMA Saída dos resultados (basicamente: impressão em papel ou “em terminal”)
Linha MVS – principais componentes para serviç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)
JES2 Componentes do JES2 que recebem as “entradas” Componentes do JES2 que dão saída aos resultados JES2 Portanto: Entrada (pedido de execução) de serviços Saída dos resultados (basicamente: impressão em papel ou “em terminal”)
JES2 Em outras palavras: Sistema Operacional z/OS Componente 1 ... Componente 2 ... JES2 Componente n ... Aplicativo 1 Entrada (pedido de execução) de serviços Saída dos resultados (basicamente: impressão em papel ou “em terminal”) Aplicativo 2 ... Aplicativo n (ex.:CICS) ... Aplicativo x (ex.: DB2) ... Aplicativo z ...
JES2 Por exemplo: Sistema Operacional z/OS Componente 1 ... Componente 2 ... JES2 Componente n ... Aplicativo 1 Entrada de serviços via terminal (sub) Saída dos resultados via terminal (browse de sysout de job) Aplicativo 2 ... Aplicativo n (ex.:CICS) ... Aplicativo x (ex.: DB2) ... Aplicativo z ...
JES2 Mas... Devemos lembrar que: Sistema Operacional z/OS Componente 1 ... Componente 2 ... JES2 Componente n ... Aplicativo 1 Aplicativo 2 ... Aplicativo n (ex.:CICS) ... Aplicativo x (ex.: DB2) ... Terminais para SUB (PRECISAM estar associados a um aplicativo !!!) Terminais para BROWSE (PRECISAM estar associados a um aplicativo !!!) Aplicativo z ...
JES2 Mas... Devemos lembrar que: Sistema Operacional z/OS Componente 1 ... Componente 2 ... JES2 Componente n ... Aplicativo 1 Aplicativo 2 ... Aplicativo n (ex.:CICS) ... Aplicativo x (ex.: DB2) ... Qual aplicativo é responsável por este terminal? Qual aplicativo é responsável por este terminal? Aplicativo z ...
JES2 Pode ser o Roscoe... JES2 ROSCOE O Roscoe é quem submete serviços para o JES2 O Roscoe é quem trata os resultados, “pegando-os” do JES2
JES2 Ou o TSO... JES2 TSO O TSO é quem submete serviços para o JES2 O TSO é quem trata os resultados, “pegando-os” do JES2
JES2 Mas, seja um ou seja outro... JES2 Roscoe ou TSO O terminal é só a interface visual O terminal é só a interface visual
JES2 Os dados, na verdade, estão onde? JES2 Roscoe ou TSO Onde está a sysout que acessamos para ver? Onde está o stream que preparamos e submetemos?
JES2 Em disco ! Nas áreas de spool ! JES2 Roscoe ou TSO Área de spool de saída Área de spool de entrada
Entrada de serviços Vamos ver inicialmente alguns detalhes do processo de spool de entrada JES2 Área de spool de entrada Roscoe ou TSO
Entrada de serviços - ROSCOE OBS.: usando o ROSCOE (as coisas acontecem desta forma) Área de manipulação do Roscoe (AWS) (criação / FETCH/ATTACH) Roscoe LIB’s do Roscoe (organização de dados proprietária) (quando for dado SAVE or UPDATE)
Entrada de serviços - ROSCOE OBS.: ou o TSO (os dados são manipulados diretamente nos arquivos “normais”) Membro de um PDS TSO Arquivo sequencial
Entrada de serviços - ROSCOE OBS.: nós nos referiremos à manipulação dos dados a submeter usando esta figura Dados editados a submeter TSO/Roscoe
Entrada de serviços - ROSCOE Passo 1 = edição dados a submeter Dados editados a submeter TSO/Roscoe
Entrada de serviços - ROSCOE Passo 1 = edição dados a submeter //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------* 0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* TSO/Roscoe
Entrada de serviços - ROSCOE Vendo de outro jeito... TSO/Roscoe
Entrada de serviços - ROSCOE Analisando c-u-i-d-a-d-o-s-a-m-e-n-t-e os dados a submeter... //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------* 0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* TSO/Roscoe
Entrada de serviços - ROSCOE Por outro “ângulo”, vendo o stream como um todo ... TSO/Roscoe //PSTARS3T JOB (1234),'ALBERTO', // CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * Dados do dataset SYSIN do step C //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * Dados do dataset AGENCIAS do step G Em vermelho = JCL Em azul = dados
Entrada de serviços - ROSCOE Por outro “prisma”, vendo por tipo de dados ... TSO/Roscoe //PSTARS3T JOB (1234),‘ALBERTO', // CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * Dados do arquivo SYSIN do Step C Dados do arquivo AGENCIAS do Step G Em vermelho = JCL Em azul = dados
//PSTARS3T JOB (9526),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA FLAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------* 0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* Entrada de serviços - ROSCOE Voltando à relação entre o Roscoe e o JES... TSO/Roscoe
Entrada de serviços - ROSCOE O Roscoe submete (entrega) o stream vindo da AWS para o JES... JES2 Área de spool de entrada Dados editados a submeter TSO/Roscoe SUB
Entrada de serviços - ROSCOE O componente do JES que “lê” o que alguém (por ex. o Roscoe) submete é (são) a(s) READER(s) / INTERPRETER(s) JES2 Área de spool de entrada Reader TSO/Roscoe AWS SUB
SUB SUB Entrada de serviços - ROSCOE Tem diversas readers, que atendem a todos os componentes que submetem JOBs; ao ler, elas já fazem uma validaçãozinha antes de gravar na área de spool (por isso o interpreter) JES2 Área de spool de entrada Readers Datasets “normais” AWS TSO Roscoe
SUB SUB Entrada de serviços Vamos ver melhor essa tal de área de spool de entrada JES2 Área de spool de entrada Readers Datasets “normais” AWS TSO Roscoe
JOB0001 JOB0002 JOB0003 JOB0004 JOB0005 JOB0008 Etc... JOB0007 JOB0006 Entrada de serviços Área de spool de entrada : a unidade de “arquivamento” é o JOB
JOB0001 JOB0002 JOB0003 JOB0004 JOB0005 JOB0008 Etc... JOB0007 JOB0006 Entrada de serviços Os JOBS são enfileirados na ordem de chegada; cada um recebe um número identificador, que vai acompanhá-lo até o fim de sua vida
JOB0001 JOB0002 JOB0003 JOB0004 JOB0005 JOB0008 Etc... JOB0007 JOB0006 Entrada de serviços Os JOBS ficam na fila aguardando execução.
Entrada de serviços Vamos ver um pouquinho mais detalhadamente como eles ficam armazenados. Detalhemos um deles (JOB0001): JOB0001 TODOS os registros (statements) de JCL (um único arquivo) Para cada arquivo in-stream contido no que foi submetido, é criado um arquivo identificado por meio do nome do step + nome do DD