Você está na página 1de 25

Manual Prtico 05/11/2011

Data:

JCL

Introduo atravs dos JOBs que se executam os programas e utilitrios BATCH. Eles podem ser executados manualmente (atravs do comando SUB) ou automaticamente (atravs de um sistema de disparo de JOBs). Os JOBs so compostos por STEPs, ou seja, etapas que so necessarias para que uma rotina se complete. Um JOB composto pelos seguintes tipos de carto: Especificao dos Elementos Carto JOB O carto JOB indica ao sistema o incio de uma unidade de trabalho. atravs dele que o sistema operacional faz o controle de segurana. Formato: //servio JOB comentrio,MSGCLASS=X,NOTIFY=userid, // CLASS=A,MSGLEVEL=(1,1),REGION=2M,TYPRUN=HOLD Onde: servio - o nome com o qual o JOB reconhecido, podendo ter at 8 bytes. Comentrio - uma pequena descrio do job Obs: Quando qualquer tipo de carto se estenda por mais de uma linha, termina a linha anterior com o carcter , (vrgula) e usa-se o carto de continuao. Este carto comea com // e seguido do restante da codificao, devendo iniciar entre as colunas 2 e 16, inclusive. Parmetros: MSGCLASS=classe produzidas pelo JOB. NOTIFY=userid o JOB terminar. Especificao de JCL Pgina: 1 Permite designar uma classe de sada para as mensagens Indica ao sistema que avise o utilizador (userid) quando Pag. 1 / 25

Manual Prtico Data: 05/11/2011 Se userid = &SYSUID, avisado o utilizador TSO que submeteu o JOB. CLASS=classe Permite designar uma classe para execuo do JOB.

MSGLEVEL=(m,n) Estabelece o nvel de detalhe das informaes sobre o JOB que o sistema listar. Se m=0 => S lista carto JOB, m=1 => Lista JCL e procedimentos m=2 => Lista apenas JCL de entrada Se n=0 => No saem mensagens de alocao n=1 => Saem todas as mensagens REGION=memsize Estabelece a dimenso mxima (512K, 2M, 4M, 8M, etc) da memria virtual que o JOB poder utilizar. TYPRUN=HOLD/SCAN Pede um tratamento especial ao JES. HOLD => Espera uma indicao do operador (comando RELEASE) para fazer executar o JOB: SCAN => Pede uma anlise sintxica do JCL, sem execuo do JOB. Carto JOBLIB, JOBCAT, STEPLIB, STEPCAT, JCLLIB e SYSPROC Basicamente na JOBLIB e STEPLIB, esto indicadas as bibliotecas onde se encontram os loads dos programs, modulos ou rotinas que so refernciadas no JCL. Quanto ao JCLLIB est indicada a biblioteca onde se encontram as PROCs de JCL. Exemplo JOBLIB versus STEPLIB. - Quando no for especificado JOBLIB ou STEPLIB a procura dos programas feita na biblioteca de sistema (SYS1.LINKLIB).
//TSOIDX JOB ........ //JOBLIB DD DSN=---.---.---,DISP=SHR // DD DSN=---.---.---,DISP=SHR //STEP01 EXEC PGM=PGM1,... //* Executa Load nas bibliotecas JOBLIB //............ //* //STEP02 EXEC PGM=PGM2,... //* Executa Load nas bibliotecas STEPLIB //STEPLIB DD DSN=---.---.---,DISP=SHR //............ //* //STEP03 EXEC PGM=PGM3,... //* Executa Load nas bibliotecas JOBLIB //............

Exemplo JCLLIB.
//TSOIDX JOB ........ //LIBS JCLLIB ORDER=(---.---.---,---.---.---,.....) //* //STEP01 EXEC PROC=START,... //* Executa proc definida na(s) //............ //* biblioteca(s) da JCLLIB

Especificao de JCL Pgina: 2

Pag. 2 / 25

Manual Prtico 05/11/2011


OU //............ //LIBS JCLLIB ORDER=(---.---.---,---.---.---,.....) //* //STEP01 EXEC START,... //* Executa proc definida na(s) //............ //* biblioteca(s) da JCLLIB

Data:

Exemplo JOBCAT.
//JOBCAT //

- Os catlogos VSAM so determinados pelos JOBCAT e STEPCAT.. DD DSN=---.---.---,DISP=SHR DD DSN=---.---.---,DISP=SHR

//............ //* //STEP02 EXEC PGM=PGM2,... //STEPCAT DD DSN=---.---.---,DISP=SHR //............ //*

Exemplo SYSPROC.

- Utilizado para definir as bibliotecas das CLIST. //............ //* //STEP2 EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=10,COND=(0,LT) //SYSPROC DD DSN=ISP.SISPEXEC,DISP=SHR // DD DSN=CPAC.USR.CMDPROC,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //ISPPROF DD DSN=FIC.ISPF.ISPPROF,DISP=SHR //ISPPLIB DD DSN=ISP.SISPPENU,DISP=SHR //ISPMLIB DD DSN=ISP.SISPMENU,DISP=SHR //ISPSLIB DD DSN=ISP.SISPSLIB,DISP=SHR // DD DSN=ISP.SISPSENU,DISP=SHR //ISPTLIB DD DSN=ISP.SISPTENU,DISP=SHR //ISPTABL DD DSN=FIC.ISPF.ISPPROF,DISP=SHR //SYSTSIN DD * ISPSTART CMD(%COBMAP1 PMEEY14 YK0023 ADEV YK) BDISPMAX(100000) /*

Carto EXEC O carto EXEC usado para executar programas e utilitrios, e para chamar procedimentos catalogados. O formato deste carto depende de cada intalao, ele pode ser compretamente diferente de um ambiente para outro, portanto abaixo estar a definio generica e alguns exemplos. Formato:
//stepname EXEC tipo=nome,MEM=member,PARM=parmetro,COND=(0,LT,STEP01)

Especificao de JCL Pgina: 3

Pag. 3 / 25

Manual Prtico Data: 05/11/2011 Onde: stepname - o nome com o qual o STEP reconhecido, podendo ter at 8 bytes. tipo - Identifica o que ser executado: PROC - Procedimento catalogado PGM - Programa ou utilitrio nome - Identifica o procedimento/programa/utilitrio a ser executado. Parmetros: MEM=member Especifica o nome do programa a ser executado numa PROC.

PARM=parmetro Permite passar uma informao a um programa que tenha previsto essa possibilidade COND=(valor,operador,stepname) Estabelece as condies de execuo do STEP. Caso a condio satisfeita o STEP no executado. valor => 0,,4095 operador => GT, LT, EQ, NE, GE, LE stepname =>nome do STEP a ser validado. Caso omitido considerado o STEP anterior

COND=EVEN O MVS executa o step mesmo que o step anterior no mesmo job abend. COND=ONLY Diz para o MVS executar este step s se um step anterior no mesmo JOB abend.

Carto DD O carto DD usado a seguir ao carto EXEC para descrever um ficheiro que vai ser usado, e para fazer a ligao entre os ficheiros lgicos (referenciados nos programas) e os ficheiros fsico. Formato:
//DDname DD DSN=ficheiro,DISP=(sit_inicial,fim_normal,fim_anormal), // DCB=(RECFM=tipo_reg,LRECL=num_bytes_reg,BLKSIZE=num_bytes_bloco), // SPACES=(unidade,(tam_inicial,tam_adicional),RLSE), // UNIT=perifrico,VOL=SER=id_perifrico ou //DDname DD DUMMY ou //DDname DD * ou //DDname DD SYSOUT=(classe,xxxxx,xxxxx),OUTPUT=classe

Definio de um ficheiro vazio em JCL: //FICHEIRO DD DUMMY,DSN=END.OF.FILE,DISP=SHR Definio de um ficheiro temporrio em JCL: //FICHEIRO DD DSN=&&DESATRIB, // DISP=(NEW,PASS), // UNIT=(SYSDA,10),SPACE=(TRK,(900,500),RLSE), // DCB=*.SORTIN Especificao de JCL Pgina: 4 Pag. 4 / 25

Manual Prtico 05/11/2011

Data:

Onde: DDname - o nome lgico do ficheiro. Est especificado na clusula ASSIGN num programa COBOL DUMMY - um parmetro especial do carto DD e significa inexistncia do fiheiro * - um parmetro especial do carto DD e significa que o ficheiro contem as informaes existentes aps o cartao DD at prximo carto // ou /*. Parmetros: DSN=ficheiro Especifica o nome fsico do ficheiro. Este nome pode ter vrias formas. ficheiro=> NomeDataSet - at 5 qualificadores de 8 posies cada, separados por .(ponto). ficheiro=> NomeFichParticionado(NomeMembro) - at 5 qualificadores de 8 posies cada, separados por .(ponto), seguido, entre parenteses do nome do membro. ficheiro=> &&NomeFichTemp - O sinal && significa que o ficheiro s existe durante a execuo do JOB. DISP=(sit_inicial,fim_normal,fim_anormal) Especifica as aes a executar sobre o ficheiro em trs momentos: Quando o JOB se inicia, quando o STEP termina normalmente, e quando o STEP termina anormal. NEW - Cria o ficheiro OLD - Abre ficheiro j existente, sem compartilhar o acesso com outros JOBs. No caso de ficheiro de sada o contedo anterior apagado ficando somente o contedo adicionado. SHR - Abre ficheiro j existente, compartilha o acesso com outros JOBs. No caso de ficheiro de sada mantm o contedo anterior ao contedo adicionado. MOD - Abre ficheiro j existente, compartilha o acesso com outros JOBs. No caso de ficheiro de sada mantm o contedo anterior ao contedo adicionado. Caso omitido assume =NEW fim_normal: o ao final do JOB. KEEP - Mantm o ficheiro CATLG - Cataloga o ficheiro PASS - Passa o ficheiro para outros STEPs e eliminaDELETE - Elimina o ficheiro UNCATLG - Descataloga o ficheiro Especificao de JCL Pgina: 5 Pag. 5 / 25 Sit_inicial:

Manual Prtico 05/11/2011 KEEP p/ outros

Data: Caso omitido assume= NEW se sit_inicial=NEW ou

DELETE - Elimina o ficheiro KEEP - Mantm o ficheiro CATLG - Cataloga o ficheiro UNCATLG - Descataloga o ficheiro Caso omitido assume= Caso fim_normal PASS, fim_anormal=fim_normal, caso contrrio proceder como na omisso de fim_normal. DCB=(RECFM=tipo_reg,LRECL=num_bytes_reg,BLKSIZE=num_bytes_bloco) Define a caracterstica fsica do ficheiro. tipo_reg FB - Registo de tamanho fixo VB - Registo de tamanho varivel UB - Registo de tamanho indefinido num_bytes_bloco = n * num_bytes_reg SPACES=(unidade,(tam_inicial,tam_adicional),RLSE) Estabelece o tamanho mximo (tam_inicial + 15 * tam_adicional) de espao em disco a ser alocado para o ficheiro. unidade CYL - Medio em cilindros TRK - Medio em trilhas num_bytes_bloco => tam_inicial e tam_adicional medidos em blocos. tam_inicial o nmero de unidades a alocar inicialmente para o ficheiro tam_adicional o nmero de unidades a alocar secundriamente para o ficheiro RLSE UNIT=perifrico uma indicao para libertar o espao que sobrar

fim_anormal

Especifica o tipo de perifrico onde ser gravado o ficheiro. Perifrico O seu contedo varia de acordo com a instalao do sistema operacional. E devem ser identificados junto a uma pessoa da empresa. Alguns exemplos: 3390 - Identifica uma unidade de disco srie 3390 SYSDA - O sistema disponibiliza um disco de trabalho temporrio. PRDSEQ- O sistema disponibiliza um disco da produo permanente. PRDTEMP- O sistema disponibiliza um disco da produo temporrio. Especificao de JCL Pgina: 6 Pag. 6 / 25

Manual Prtico 05/11/2011 TAPE magntica cartridige.

Data: - O sistema disponibiliza uma unidade de banda

RCART - O sistema disponibiliza uma unidade de

VOL=SER=id_perifrico Identifica fsicamente o perifrico. O seu contedo varia de acordo com a instalao do sistema operacional. E devem ser identificados junto a uma pessoa da empresa. Alguns exemplos: MVS207 MVS437 Utilitrio SORT Comandos INCLUDE COND=(57,8,CH,EQ,C'20000624',OR,57,8,CH,EQ,C'20000625') INCLUDE COND=(9,3,CH,EQ,C'291',AND,116,2,CH,EQ,C'TK') INCLUDE COND=(1,5,BI,EQ,X'039100376F',AND,31,5,BI,EQ,X'019990726 F', AND,40,5,BI,EQ,X'019990727F') INCLUDE COND=(3,6,CH,GE,C'981201',AND,3,6,CH,LE,C'981231') SORT FIELDS=(1,27,A,32,8,A),FORMAT=BI,EQUALS SORT FIELDS=(8,8,CH,A) RECORD TYPE=F END MERGE FIELDS=COPY SORT FIELDS=(12,8,A),FORMAT=BI,EQUALS INCLUDE COND=(12,8,CH,NE,C'19991230') SUM FIELDS=(31,8),FORMAT=PD

Especificao de JCL Pgina: 7

Pag. 7 / 25

Manual Prtico 05/11/2011 SORT FIELDS=(1,3,A),FORMAT=BI,EQUALS INCLUDE COND=(1,1,CH,EQ,C'0') SUM FIELDS=(23,8,31,8),FORMAT=PD

Data:

JCL //SORT1 EXEC PGM=SORT,REGION=720K,RD=NC,COND=(0,LT) //SORTIN DD DSN=TSTM.TEMP.NC.BNC80P,DISP=OLD //SORTOUT DD DSN=NBAN.TSTC.NC.BNC80P.LEIRIA.P7V,UNIT=SYSDA, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(300,100),RLSE), // DCB=*.SORTIN //SYSIN DD * SORT FIELDS=(4,7,A,74,5,A),FORMAT=BI,EQUALS INCLUDE COND=(4,5,BI,EQ,X'036215004F') /* //SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,00005) //SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,00005) //SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,00005) //SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,00005) //SYSOUT DD SYSOUT=A,FREE=CLOSE

//*------------------------------------------------------------------//SORT01 EXEC PGM=SORT,REGION=720K,COND=(0,LT) //SORTIN DD DSN=POSI.TEMP.NC.FIC05NC2,DISP=OLD //SORTOUT DD DSN=NBAN.TSTC.NC.TESTE.SORTSUM.P7V, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(100,100),RLSE), // UNIT=SYSDA, // DCB=*.SORTIN //SYSIN DD * SORT FIELDS=(1,3,A),FORMAT=BI,EQUALS SUM FIELDS=(23,8,31,8),FORMAT=PD /* //SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE) //SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE) //SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE) //SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE) //SYSOUT DD SYSOUT=* Especificao de JCL Pgina: 8 Pag. 8 / 25

Manual Prtico 05/11/2011 /*

Data:

Obs: Ficheiro de sada tem o mesmo formato do ficheiro de entrada, o sort acumula o campo definido no SUM para cada repeticao da chave definida no SORT FIELDS. So gravadas no ficheiros o numero de linha que encontre com o SORT FIELDS diferente. Os campos que no esto definidos no SUM correspondem ao 1 registo lido para o SORT FIELDS.

EXEMPLO: BROWSE NBAN.TSTC.NC.TESTE.SORTSUM.P7V Line 00000001 Col Command ===> Scroll ----+----1----+----2----+----3----+----4----+----5---+----6----+----7 0NC20010306 890............g...NCI2001030600001 FDCFFFFFFFF44444444FFF0000000000009800DCCFFFFFFFFFFFFF44 4444444444444 05320010306000000008900000000C0002070C539200103060000100 0000000000000 -------------------------------------------------------------------2NC2001030620010307890...e.q....b...NCI2001030600001 FDCFFFFFFFFFFFFFFFFFFF0018298000183180DCCFFFFFFFFFFFFF44 4444444444444 25320010306200103078900095680C0092610C539200103060000100 0000000000000 -------------------------------------------------------Utilitrio IDCAMS O utilitrio IDCAMS muito util para trabalhar com ficheiros, analise os exemplos seguintes. JCL

//TSOIDX JOB ........ //IDCAMS EXEC PGM=IDCAMS,REGION=512K //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * ==> {Nas Procs //SYSIN DD DDNAME=SYSIN <Parametros para Idcams> //DELETE.SYSIN DD *} /*

Exemplo 1

//SYSIN DD * DELETE <-----.-----.-----> PRG CL /*

/* DELETE DE FICHEIRO */

Exemplo 2

//............. //INPUT1 DD DSN=-----.-----.-----,DISP=SHR //............. //SYSIN DD *

Especificao de JCL Pgina: 9

Pag. 9 / 25

Manual Prtico 05/11/2011


/* VERIFY FILE(INPUT1)

Data:

Exemplo 3

//............. //SYSIN DD * REPRO INDATASET(-----.-----.-----) OUTDATASET(-----.-----.-----) REPLACE /*

Exemplo 4

//............. //SYSIN DD * ALTER -----.-----.----NEWNAME(-----.-----.-----) /*

/* RENAME DE FICHEIRO */

Exemplo 5 //............. //SYSIN DD * ALTER -----.-----.----SHR(3 3) /*

SHAREOPTIONS(region system) (Abbreviation=SHR) - specifies the crossregion and cross-system sharing options for a VSAM data set. 'region' and 'system' are both numbers in the range 1 thru 4. 'region' values and their meanings are: 1 - all users read, only 1 can read & write to data set concurrently 2 - all users read and 1 user writes concurrently 3 - all users read and write concurrently 4 - all users read and write concurrently, user program must use ENQ/DEQ 'system' values and their meanings are: 1 & 2 - reserved 3 - all users read and write concurrently 4 - all users read and write concurrently, user program must use ENQ/DEQ

Exemplo 6

//............. //SYSIN DD * DEFINE CLUSTER (NAME (-----.-----.-----) RECORDS(6000) VOLUME(XXXXX) CONTROLINTERVALSIZE(4096) NUMBERED RECORDSIZE(4089 4089) RECOVERY UNIQUE SHAREOPTIONS(3 3)) DATA (NAME (-----.-----.-----) INDEX

Especificao de JCL Pgina: 10

Pag. 10 / 25

Manual Prtico 05/11/2011


/*

Data:

Exemplo 7 - Print do ficheiro em Hexa, RC = 12 se o ficheiro no est no catlogo.


//............. //SYSIN DD * PRINT INDATASET(YKADEV.SEQ.ALOI.AT.SACO.COIV10) COUNT(1) /*

Exemplo 8 - Print do ficheiro em Hexa, RC = 12 se o ficheiro no est no catlogo.


//............. //SYSIN DD * PRINT INDATASET(YKADEV.KSDS.EMIGRANT) COUNT(25) CHARACTER /*

Exemplo 9 -.

//............. //SYSIN DD * LISTCAT ENTRIES(CPWR.CPPD.FARDX.V2R0M2.RELATE) IF LASTCC > 0 THEN DO SET MAXCC = 0 DEFINE CLUSTER (NAME(CPWR.CPPD.FARDX.V2R0M2.RELATE) + TRACKS(200 20) + VOL(COSSY2) + KEYS(74 0) + RECSZ(403 4765) + CISZ(4096) + SHR(3 3) + UNIQUE) + INDEX (NAME(CPWR.CPPD.FARDX.V2R0M2.RELATE.INDEX)) + DATA (NAME(CPWR.CPPD.FARDX.V2R0M2.RELATE.DATA)) END ELSE DO SET MAXCC = 4 END /*

Exemplo 10 Definio de um GDG.

//............. //SYSIN DD * DEFINE GENERATIONDATAGROUP (NAME(XXXTST.GDG.YYYY) NOEMPTY SCRATCH LIMIT(20)) /*

PARM DO JCL Definio no JCL. //:::::::::::::::::::::::::::::::::: //STEP01 EXEC PGM=<PROGRAMA>,PARM=00003 Definio no COBOL. Especificao de JCL Pgina: 11 Pag. 11 / 25

Manual Prtico Data: 05/11/2011 LINKAGE SECTION. 01 PARMINFO. 03 PARM-LTH PIC S9(4) COMP. * Informao nr.bytes passados, neste exemplo fica c/ valor 5 03 PARM-DATA PIC X(5). * Informao passada ao programa, neste caso fica com 00003. :::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::: DATA DIVISION USING PARMINFO. Entrada de dados(Input-Stream) no JCL- SYSIN. A entrada de dados Input-Stream no JCL faz-se utilizando. Sintaxe //SYSIN DD * ou //SYSIN DD DATA ,DLM=xx Exemplos 1
//TSOIDX JOB ........ //............ //SYSIN DD * .. (DADOS) .. /*

Exemplos 2
//TSOIDX JOB ........ //............ //SYSIN DD DATA .. (DADOS) .. /*

Exemplos 3
Neste exemplo os caracteres que indicam o final da entrada dos dados so os que esto definidos no parametro DLM=??. Isto permite que sejam aceites como entrada de dados a sintaxe do proprio JCL (Exemplo 4). //TSOIDX JOB ........ //............ //SYSIN DD *,DLM=XX ..

Especificao de JCL Pgina: 12

Pag. 12 / 25

Manual Prtico 05/11/2011


(DADOS) .. XX //*

Data:

Exemplos 4
//TSOIDX JOB Y2K JCL,CLASS=A,NOTIFY=TSOID //CONTROL1 EXEC PGM=IEBGENER,COND=EVEN //SYSUT1 DD *,DLM=XX //TSOIDY JOB ANO 2000,CLASS=A,NOTIFY=TSOID <-- ENTRADA DE DADOS //CONTROL1 EXEC PGM=IEBGENER,COND=(8,LT) //SYSUT1 DD DSN=TSOID.CNTL(JCL),DISP=SHR //SYSUT2 DD SYSOUT=(,INTRDR),DCB=(RECFM=FB,LRECL=80,BLKSIZE=23200) //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //* <-- FINAL DA ENTRADA DE DADOS XX //* //SYSUT2 DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY /*

Exemplos 5
//STEPA EXEC PGM=PROGRAM1 //SYSIN DD DATA,DLM=MY data record 1 data record 2 ... data record n MY end of data

A utilizao da intruo IF/THEN/ELSE/ENDIF no jcl:


//[nome] IF [(] condio [)] THEN [comentario] // ... Aco(es) quando a condio for verdadeira //[nome] ELSE [comentario] // ... Aco(es) caso contrrio //[nome] ENDIF [comentario] Exemplos:
1) 2) 3) 4) 5) //TESTA //TESTA //TESTA //TESTA //TESTA IF IF IF IF IF one or more JCL statements to execute if expression is TRUE

one or more JCL statements to execute if expression is FALSE

(RC = 8 | RC = 10 | RC (RC > 8 ) (RC <= 8 ) (RC = 8 | RC > 10 ) (RC = 8 & RC <= 10 )

= 12 | RC = 14) THEN THEN THEN THEN THEN

Especificao de JCL Pgina: 13

Pag. 13 / 25

Manual Prtico 05/11/2011


//............ //STEP01 EXEC ..... //............ //TESTARC IF (STEP01.RC < 8) THEN //STEP02 EXEC ..... //............ //SENAO ELSE //STEP03 EXEC ..... //............ // ENDIF //NEXTSTEP EXEC ..... //............

Data:

COMPARAO:
GT LT NG NL EQ LE GE NE ou ou ou ou ou ou ou ou > < > < = <= >= = Maior que Menor que No Maior que No Menor que Igual a Menor ou Igual a Maior ou Igual a No Igual a

LOGICOS:
AND OR NOT Exemplo: ou ou ou & | -E - Ou - Negao

// IF (ABEND | RC > 8) THEN //SUPERC EXEC PGM=SUPERC,TIME=1 //SYSPRINT DD SYSOUT=* //OLD DD DSN=TEST.MACLIB,DISP=SHR //NEW DD DSN=TEST.PHASE.MACLIB,DISP=SHR // ELSE // ENDIF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: // IF (ABEND OR RC < 999 OR // ABENDCC=S001 OR ABENDCC=S013 OR ABENDCC=SB37) THEN //CONTROL1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=YKADEV.PDS.ALOI.JCL.OLD(COID0061),DISP=SHR //SYSUT2 DD SYSOUT=(A,INTRDR),DCB=(RECFM=F,BLKSIZE=80) //SYSIN DD DUMMY // ELSE ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Operadores:
RC highest return code from any prior job step stepname.RC - return code from the named job step stepname.procstepname.RC

Especificao de JCL Pgina: 14

Pag. 14 / 25

Manual Prtico 05/11/2011


ABEND=TRUE or ABEND - any abend condition in an prior job step stepname.ABEND or stepname.ABEND=TRUE - any abend condition in the named job step

Data:

- return code from the named proc step invoked by the named job step

stepname.procstepname.ABEND or stepname.procstepname.ABEND=TRUE - any abend condition in the named proc step called by the job step ABEND=FALSE or |ABEND - a lack of an abend condition in any prior job step stepname.ABEND or stepname.ABEND=FALSE - lack of an abend (i.e., normal completion) in the named job step stepname.procstepname.ABEND or stepname.procstepname.ABEND=FALSE - lack of an abend condition in the proc step called by the named job step ABENDCC=Sxxx or ABENDCC=Unnnn - a specific system abend code in hexadecimal as 'Sxxx' or a specific user abend code in decimal as 'Unnnn'; the abend code checked or is that from the most recent abend codethat occurred in the job stepname.ABENDCC=Sxxx or stepname.ABENDCC=Unnnn - a specific system abend code in hexadecimal as 'Sxxx' or a specific user abend code in decimal as 'Unnnn'; the abend code checked for is that from the job step identified by 'stepname' stepname.procstepname.ABENDCC=Sxxx or stepname.procstepname.ABENDCC=Unnnn - a specific system abend code in hexadecimal as 'Sxxx' or a specific user abend code in decimal as 'Unnnn'; the abend code checked for is that from the proc step identified by 'procstepname' invoked by the job step named 'stepname' stepname.RUN - tests whether the job step identified by stepname.procstepname.RUN - tests whether the proc step identified by 'procstepname' invoked by the job step identified by 'stepname' executed stepname.RUN=FALSE or |stepname.RUN - tests whether the job step identified by 'stepname' did not execute pname.procstepname.RUN=FALSE or stepname.procstepname.RUN - tests whether the proc step identified by 'procstepname' invoked by the job step identified by 'stepname' did not execute comments - comments are optional and should follow the last subparameter on the SET statement by at least 1 blank

Especificao de JCL Pgina: 15

Pag. 15 / 25

Manual Prtico Data: 05/11/2011 Efectuar Submit de um JOB a partir de outro. Pode ser feito o copy de um job para o INTERNAL READER, de modo a que este seja executado, a partir de outro job que se encontra a correr:
//............ //CONTROL1 EXEC PGM=IEBGENER,COND=(...) //* Verificar a COND=() //SYSUT1 DD DSN=---.---(JCL),DISP=SHR //* Biblioteca e membro JCL //SYSUT2 DD SYSOUT=(,INTRDR),DCB=(RECFM=FB,LRECL=80,BLKSIZE=23200) //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //* //............

Pool de Discos Versus Disco(VOL=SER=XXXX,UNIT=3380/3390) No JCL frequente encontrar a referncia UNIT=?????, em que ????? o nome atribuido a uma serie de discos(POOL), no sendo necessrio saber o nome individual de cada um deles. Ao referir no JCL o nome da POOL est a apontar para todos os discos que fazem parte desta, deste modo ser o sistema encarregado de procurar, allocar, apagar ou alterar os ficheiros referidos no JCL nos discos da POOL. Deste modo no necessito de identificar se o ficheiro est no disco A, B ou C. Ver exemplo 1. Por outro lados se pretender que seja criado um ficheiro num disco especfico necessrio identificar o seu nome e tipo, exemplo 2. Exemplos 1 Catalogar o ficheiro TSOID.FICH1 na POOL chamada SYSDA.
//TSOIDX JOB ........ //COPIA EXEC PGM=IEFBR14 //FICH1 DD DSN=TSOID.FICH1,DISP=(,CATLG,DELETE), // SPACE=(TRK,(10,10),RLSE),UNIT=SYSDA /*

Exemplos 2 Catalogar o ficheiro TSOID.FICH1 no ficheiro MVS205. Neste exemplo implica que necessrio conhecer o nome do disco e tipo de disco, se por alguma razo o disco estiver offline o jcl j no executado e d erro, na pool o ficheiro catalogado no disco que est mais disponvel, espao versus tempo de acesso, pelo que sempre que possvel aconcelho a utilizao mostrada no exemplo 1.
//TSOIDX JOB ........ //COPIA EXEC PGM=IEFBR14 //FICH1 DD DSN=TSOID.FICH1,DISP=(,CATLG,DELETE), // SPACE=(TRK,(10,10),RLSE),VOL=SER=MVS205,UNIT=3390 /*

*** The UNIT Parameter **


Syntax: UNIT=({device-number | device-type | group-name},

Especificao de JCL Pgina: 16

Pag. 16 / 25

Manual Prtico 05/11/2011


{unit-count | P},DEFER) or UNIT=AFF=ddname

Data:

Subparameter Definition device-number = (UNIT=3390) device-type: 3330 3330-1 3350 3375 3380 3400-6 3400-9 3330 Model 1 3330 Model 11 3350 DASD 3375 DASD 3380 DASD 3420 Tape Drive (Reel Type) 3480 Tape Cartridge

group-name: TAPE, SYSDA, or SYSALLDA unit-count specifies the number of devices for the data set, from 1 (the default) through 59. You should use this subparameter for DASD files being created when VOL= is not specified, so that multiple units will be searched if more DASD space is needed. Use of this technique can help eliminate B37, D37, & E37 abends. P asks the system to allocate the same number of devices as requested by the volume count or SER subparameters of the VOLUME parameter, whichever is higher - the effect is that all volumes for the data set are mounted at the same time DEFER asks the system to assign device(s) to the data set but not to mount the volume(s) until the data set is opened - if the data set is not opened, no mount occurs - do not code DEFER on a SYSCKEOV DD statement AFF=ddname requests that the system allocate data sets residing on different, removable volumes to the same device - the ddname given is an earlier ddname in the same job step; unit affinity allows one tape drive to be used for multiple volumes from several concatenated tape data sets, for example:
//DD1 DD UNIT=(3400-6,,DEFER)

Especificao de JCL Pgina: 17

Pag. 17 / 25

Manual Prtico 05/11/2011


//$$MYFILE DD //TEMP // DD DD UNIT=(3330-1,2) UNIT=TAPE,VOL=SER=TAPE01 UNIT=AFF=TEMP,VOL=SER=TAPE09

Data:

Definio de um membro dentro do JCL(INCLUDE). Definio de um membro dentro de um JCL com a instruo INCLUDE. Exemplos 1
//TSOIDX JOB ........ //IDLIB JCLLIB ORDER=(----.---.---) //INCLUDE INCLUDE MEMBER=OUTMSG //........... /*

Ordem dos comandos no JCL Os comandos devem ser colocados pela seguinte, ordem: 1. Comando JOB. Primeiro comando de controlo e indica o inicio do JOB. 2. Comando JOBLIB. 3. Comando JOBCAT ou SYSCHK. 4. Procedimentos do Fluxo de entrada(Procs definidas no JCL). 5. Primeiro comando EXEC. Indica o programa ou procedimento a ser executado. 6. Comando STEPCAT, STEPLIB ou DD para o STEP. 7. Comando EXEC e DD Correspondentes. 8. Comando Nulo (//). Indica o fim do Job.
COMANDOS

/* //* PROC PEND CNTL ENDCNTL OUTPUT

Indica o fim de dados introduzidos por JCL Comentrios da coluna 4 at a coluna 80 Inicia uma PROC catalogado ou de fluxo de entrada e indica os valores por default Indica o fim de uma PROC Indica o inicio de comandos de controle p/fluxo de entrada Indica o fim de comandos de controle p/fluxo de entrada Usado no JES2 e JES3 para especificar o processamento de ficheiros de saida

//jobname JOB (codigo-conta,info.contabeis),nome, // parametros-do-job jobname - at 8 caracteres. Especificao de JCL Pgina: 18 Pag. 18 / 25

Manual Prtico 05/11/2011 parametros-do-job

Data:

CLASS - Classe do JOB(A-Z/0-9 existe um por default) GROUP - Users compartilham ficheiros protegidos pelo RACF. MSGCLASS - Classe de saida do escalonamento dos JOBS. MSGLEVEL - Especifica se os comandos de JCL devem ou no ser listados(Todos). Primeiro Digito 0 - Imprime s comando JOB 1 - Imprime todo o JCL 2 - Imprime s JCL do fluxo de entrada Segundo Digito 0 - Imprime s alocaes com ABEND 1 - Imprime todas as alocaes Ex. MSGLEVEL=(1,0) NOTIFY - TSO user a ser informado quando a execuo do JOB for concluda. PASSWORD - Password reconhecida pelo RACF. PRTY - Especifica a prioridade do JOB na fila de entrada(0-13, onde 0 menor) RESTART- Indica o STEP onde recomea o job. TYPRUN- Retem o JOB na fila de entrada(para verificar a sintaxe) HOLD - Mantm o job na fila aps verificao da sintaxe. JCLHOLD - Mantm o job na fila antes verificar a sintaxe. SCAN - Verifica o JCL sem o executar. COPY - Imprime listagem do JCL apenas. USER - User reconhecido pelo RACF. JCL para executar o search de strings.
//YK0002E JOB ,'Y2K P-04/S-04',MSGCLASS=A,NOTIFY=&SYSUID, // TIME=1440 //* //SEARCH EXEC PGM=ISRSUPC, * // PARM=(SRCHCMP, // 'ANYC') //NEWDD DD DSN=YKADEV.PDS.ALSR.FNTCOB,DISP=SHR // DD DSN=YKADEV.PDS.ALSR.FNTCOB.CONV,DISP=SHR // DD DSN=YKADEV.PDS.ALSR.FNTCOB.V0,DISP=SHR // DD DSN=YKADEV.PDS.ALCB.FNTCOB,DISP=SHR //*::::::::::::::::::::::: --> Colocar mais bibliotecas se necessrio //OUTDD DD SYSOUT=* //SYSIN DD * SRCHFOR '_TBASICUE' SRCHFOR '_TBASICOS' :::::::::::::::::::: --> Colocar mais STRINGS se necessrio

Especificao de JCL Pgina: 19

Pag. 19 / 25

Manual Prtico 05/11/2011


/*

Data:

Calculo do BlocoSize. Actualmente j no necessrio calcular o bloco size de ficheiros porque o sistema se encarrega de efectua-los, no entanto aqui fica o cclulo. BLOCKSIZE/PISTAS E CILINDROS DE FICHEIROS Modelos dos Discos 3390-1 3390-2 3390-3 56664 15 1113 2226 3339 3380 3380-E 3380-K 47476 15 885 1770 2655

Capacidade da Pista (Bytes) Nde Pistas por Cilindro Tot.Cilindros por Disco

3375 35616 12 959

3350 19069 30 555

3340 8368 12 696

3330 13030 19 404

Clculo do blocksize de um ficheiro : Dependendo do Modelo do Disco, temos: Capacidade da Pista / 2 = X X / TAMANHO DO REGISTO = Y}INTEIRO Y * TAMANHO DO REGISTO = BLOCKSIZE Clculo do n de pistas e cilindros desse ficheiros : Dependendo do Modelo do Disco, temos: N DE REGISTOS * TAMANHO REGISTO = X X / (Capacidade da Pista / 2) = Y } N DE MEIAS PISTAS Y * 2 = Z } N TOTAL DE PISTAS Z / Nde Pistas por Cilindro = N DE CILINDROS Copiar um ficheiro para outro(IEBGENER \ ICEGENER). um utilitrio de copia. Jcl
//JS10 EXEC //SYSPRINT DD //SYSUT1 DD //SYSUT2 DD //SYSIN DD PGM=IEBGENER,REGION=1024K SYSOUT=* Mensagens DSN=...,DISP=... Ficheiro Sequencial de Input. DSN=...,DISP=... Ficheiro Sequencial de Output. * Instrues de Controlo

Especificao de JCL Pgina: 20

Pag. 20 / 25

Manual Prtico 05/11/2011


Instrues de Controlo /*

Data:

Instrues de Controlo So utilizadas as seguintes instrues de controlo: GENERATE, EXITS, LABELS, MEMBER. GENERATE
{label} GENERATE MAXNAME=n {,MAXFLDS=n} {,MAXGPS=n} {,MAXLITS=n} {,DBCS={YES NO}}

Os parmetros MAXNAME, MAXFLDS, MAXGPS, e MAXLITS determina o nmero mximo membros, campos, IDENTS, e caracteres literais e usa-se sempre DBCS=YES quando o ficheiro de input no double-byte character.
{label} RECORD {{IDENTIDENTG}=(length,'name',input-location)} {,FIELD=({length} {,input-location 'literal'} {,conversion} ->(CG,CV,GC,GV,HE,PZ,VC,VG,ZP) {output-location}),{FIELD=...} {,LABELS=n}

EXITS
{label} EXITS {INHDR=routinename} {,OUTHDR=routinename} {,INTLR=routinename} {,OUTTLR=routinename} {,KEY=routinename} {,DATA=routinename} {,IOERROR=routinename} {,TOTAL=routinename,size}

LABELS {label} MEMBER {label} EXEMPLOS Exemplos 1

LABELS {DATA=YESNOALLONLYINPUT}

MEMBER NAME=(name{,alias}...)

JCL para copiar o ficheiro TSOID.FICH1 para o TSOID.FICH2. //TSOIDX JOB ........ //COPIA EXEC PGM=ICEGENER //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSUT1 DD DSN=TSOID.FICH1,DISP=SHR

Especificao de JCL Pgina: 21

Pag. 21 / 25

Manual Prtico 05/11/2011


//* //SYSUT2 // // //SYSIN /* DD DSN=TSOID.FICH2,DISP=(,CATLG,DELETE), UNIT=DESENVOL,SPACE=(TRK,(10,10),RLSE), DCB=(RECFM=FB,LRECL=140,DSORG=PS,BLKSIZE=0) DD DUMMY

Data:

Nota: No caso em que o ficheiro definido no SYSUT1 for varivel (RECFB=V;VB) e o ficheiro no SYSUT2 e fixo(F;FB) identifique no carto do SYSIN o tamanho do registo a copiar:
//...... //SYSIN DD * GENERATE MAXFLDS=1 RECORD FIELD=(140,1,,1) /* ^ ^^ ^ | || | Tamanho Campo--+ || | Inicio do Input-----+| | Converso -----------+ | Inicio de Output ------+

Exemplos 2

JCL para converter uma FB CLIST numa VB CLIST, movendo o campo nmero de sequncia. //JS10 EXEC //SYSPRINT DD //SYSUT1 DD // //SYSUT2 DD // //SYSIN DD GENERATE RECORD MEMBER /* PGM=IEBGENER SYSOUT=* DSN=MY.FB.CLIST.LIB, DISP=SHR DSN=MY.VB.CLIST.LIB, DISP=SHR * MAXFLDS=2,MAXNAME=1 FIELD=(8,73,,1),FIELD=(72,1,,9) NAME=myclist

Exemplos 3

JCL para criar uma biblioteca(PDS) a partir de um ficheiro sequencial. //JS10 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=MY.SEQ.FILE.LIB, // DISP=SHR //SYSUT2 DD DSN=MY.PDS.FILE.LIB, // DISP=SHR //SYSIN DD * GEN1 GENERATE MAXNAME=4,MAXGPS=3 MEM1 MEMBER NAME=JOBCARD GRP1 RECORD IDENT=(8,'//* NJOB',1), MEM2 MEMBER NAME=JESCARDS GRP2 RECORD IDENT=(8,'//* NJES',1), MEM3 MEMBER NAME=JCLCARDS

Especificao de JCL Pgina: 22

Pag. 22 / 25

Manual Prtico 05/11/2011


GRP3 MEM4 GRP4 /* RECORD MEMBER RECORD IDENT=(7,'* TOP *',1), NAME=RPTDATA IDENT=(8,'*BOTTOM*',1)

Data:

Exemplos 4

JCL para copiar uma mapa de disco para o SPOOL. //JS10 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=MY.PDS.FILE(AREPORT), // DISP=SHR //SYSUT2 DD SYSOUT=*, // DCB=RECFM=FBA //SYSIN DD DUMMY

Exemplos 5

//...... //* ---------------------------------------------------------------//* RUN UTILITY MODULE TO LOAD DATASET //* ---------------------------------------------------------------//BOOKSHF EXEC PGM=IEBGENER //SYSUT1 DD * BKSHELF=XTRN BKSMDSN=----.----.-----.------.BKSHELF BKSTITLE=XXXX-ZZZ/YYY RELEASE 2.0 MANUALS BKSDATETIME=07/27/98 17:11:25 BKIDATETIME=07/27/98 17:10:57 BKSINDEX=XTRN BKSIMDSN=----.----.-----.------.BKINDEX BKSLEXIS=EIJENGL BKFLAG=I /* //SYSUT2 DD DSN=----.----.-----.------.BKSHELF, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(8000,(2,1)), // DCB=(RECFM=VB,LRECL=255,BLKSIZE=8000) //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //* ----------------------------------------------------------------

Exemplos 6

//EMDCOPY JOB ,'XX P-03/S-05',MSGCLASS=X,CLASS=A // JCLLIB ORDER=(PROD.SIMBOL) //DIARIO INCLUDE MEMBER=MMMDD //X1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=X //SYSUT1 DD DSN=EMAPRD.SEQ.FEM111,DISP=SHR //SYSUT2 DD DSN=EMAPRD.AUDITOR.FICHCONT.&MMMDD, // DISP=(,CATLG), // SPACE=(CYL,(150,100),RLSE), // UNIT=SYSDA //SYSIN DD * GENERATE MAXFLDS=10,MAXLITS=1 RECORD FIELD=(21,1,,1),FIELD=(6,22,PZ,22), X

Especificao de JCL Pgina: 23

Pag. 23 / 25

Manual Prtico 05/11/2011


X X /* FIELD=(2,27,PZ,31),FIELD=(5,28,PZ,32), FIELD=(20,32,,39),FIELD=(9,52,PZ,59), FIELD=(40,60,,74)

Data:

| | | | | | | POSICAO DE OUTPUT | | CONVERSAO (CG,CV,GC,GV,HE,PZ,VC,VG,ZP) | POSICAO INPUT COMPRIMENTO DO CAMPO

Update Strings em Bibliotecas Utilizando o File-Aid Compware.


//E813075A JOB 'UPDATE STRINGS',MSGCLASS=X,NOTIFY=&SYSUID,CLASS=A //********* USER=E813075 //* YOU ARE VIEWING JCL THAT FILE-AID 8.0 HAS GENERATED TO //* SEARCH/UPDATE DATASETS GLOBALLY. //* //* YOU CAN CHANGE THIS JCL IF DESIRED AND USE THE SUBMIT PRIMARY //* COMMAND TO SUBMIT THE JOB. THE CREATE OR REPLACE PRIMARY COMMAND //* CAN BE USED TO KEEP THIS JOBSTREAM FOR FUTURE USE. //* //* USE THE END COMMAND TO EXIT WITHOUT SUBMITTING THE JOB. //* //SPTEP01 EXEC PGM=FILEAID,REGION=4M //STEPLIB DD DSN=CPWR.FAMVS.V8R0M2.LOAD,DISP=SHR //SYSPRINT DD SYSOUT=* //DD01 DD DSN=NDIS.PRIVLIB.CNTL,DISP=SHR Biblioteca Input //DD01O DD DSN=NDIS.PRIVLIB.CNTL,DISP=SHR Biblioteca Output //SYSIN DD * $$DD01 COPYALL MEMBERS=PMBD101,FORM=JCL, Membro, (*) para todos EDIT=(1,0,C'ECADCRT', String a Procurar C'TIPO_CARTAO') String a Substituir /* Nota:

Ateno quando a biblioteca de input igual de output, no fica com os membros originais, so esmagados pelas substituies. SET Utilizao no JCL. MEMBRO: MMMAA
BROWSE XXXXX.XXXXXXXX(MMMAA) - 01.08 Command ===> ********************************* Top o //CHANGE SET MMMAA='ABR94' ******************************** Bottom

JCL que UTILIZA o MMMAA


//IRB220#B JOB 0,IRB220#B, // CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) // JCLLIB ORDER=(PROD.PROC.CNTL,MAST.SIMBOL) <= Biblioteca on

Especificao de JCL Pgina: 24

Pag. 24 / 25

Manual Prtico 05/11/2011


//CHANGE

Data:
esta o membro MMMMAA *SUBSTITUI O SIMBOLICO &&MMMAA*

//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

INCLUDE MEMBER=MMMAA

//IRD600C DD DSN=DIAA.QDIVR.AIRD6022.M060.&MMMAA,LABEL=(1,SL), // DISP=(,CATLG,DELETE),UNIT=ROBOT, // SPACE=(TRK,(0000090,0000110),RLSE), ==> IRB700 // DCB=(RECFM=FB,LRECL=00080,BLKSIZE=0) //*IRD600A DD SYSOUT=(,),OUTPUT=(*.DD1),SEGMENT=5000 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Especificao de JCL Pgina: 25

Pag. 25 / 25

Você também pode gostar