jcl if and else

25
Manual Prático Data: 24/06/2013 Especificação de JCL Pag. 1 / 25 JCL 1 Introdução .......................................................................................................... 2 2 Especificação dos Elementos ............................................................................. 2 2.1 Cartão JOB ................................................................................................. 2 2.2 Cartão JOBLIB, JOBCAT, STEPLIB, STEPCAT, JCLLIB e SYSPROC 3 2.3 Cartão EXEC .............................................................................................. 4 2.4 Cartão DD .................................................................................................. 5 3 Utilitário SORT .................................................................................................. 8 3.1 Comandos ................................................................................................... 8 3.2 JCL ............................................................................................................. 8 4 Utilitário IDCAMS ........................................................................................... 10 5 PARM DO JCL ................................................................................................ 12 6 Entrada de dados(Input-Stream) no JCL- SYSIN. ........................................... 12 7 A utilização da intrução IF/THEN/ELSE/ENDIF no jcl: ................................. 13 7.1 COMPARAÇÃO: ..................................................................................... 14 7.2 LOGICOS: ............................................................................................... 14 7.3 Operadores: .............................................................................................. 15 8 Efectuar Submit de um JOB a partir de outro. .................................................. 16 9 Pool de Discos Versus Disco(VOL=SER=XXXX,UNIT=3380/3390) ............ 16 10 Definição de um membro dentro do JCL(INCLUDE). ................................. 18 11 Ordem dos comandos no JCL ....................................................................... 18 12 JCL para executar o search de string’s. ........................................................ 19 13 Calculo do BlocoSize. .................................................................................. 20 13.1 Cálculo do blocksize de um ficheiro : ...................................................... 20 13.2 Cálculo do nº de pistas e cilindros desse ficheiros : ................................. 20 14 Copiar um ficheiro para outro(IEBGENER \ ICEGENER). ........................ 20 14.1 Jcl ............................................................................................................. 20 14.2 Instruções de Controlo .............................................................................. 21 14.2.1 GENERATE ..................................................................................... 21 14.2.2 EXITS .............................................................................................. 21 14.2.3 LABELS ........................................................................................... 21 14.2.4 MEMBER ......................................................................................... 21 14.3 EXEMPLOS ............................................................................................. 21 15 Update String’s em Bibliotecas Utilizando o File-Aid Compware. ............. 24 16 SET Utilização no JCL. ............................................................................. 24 16.1 MEMBRO: MMMAA .............................................................................. 24 16.2 JCL que UTILIZA o MMMAA ................................................................ 24

Upload: aa-victorugo

Post on 22-Oct-2015

96 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 1 / 25 Página: 1

JCL

1 Introdução .......................................................................................................... 2 2 Especificação dos Elementos ............................................................................. 2

2.1 Cartão JOB ................................................................................................. 2 2.2 Cartão JOBLIB, JOBCAT, STEPLIB, STEPCAT, JCLLIB e SYSPROC 3 2.3 Cartão EXEC .............................................................................................. 4 2.4 Cartão DD .................................................................................................. 5

3 Utilitário SORT .................................................................................................. 8 3.1 Comandos ................................................................................................... 8 3.2 JCL ............................................................................................................. 8

4 Utilitário IDCAMS ........................................................................................... 10 5 PARM DO JCL ................................................................................................ 12 6 Entrada de dados(Input-Stream) no JCL- SYSIN............................................ 12 7 A utilização da intrução IF/THEN/ELSE/ENDIF no jcl: ................................. 13

7.1 COMPARAÇÃO: ..................................................................................... 14 7.2 LOGICOS: ............................................................................................... 14 7.3 Operadores: .............................................................................................. 15

8 Efectuar Submit de um JOB a partir de outro................................................... 16 9 Pool de Discos Versus Disco(VOL=SER=XXXX,UNIT=3380/3390) ............ 16 10 Definição de um membro dentro do JCL(INCLUDE).................................. 18 11 Ordem dos comandos no JCL ....................................................................... 18 12 JCL para executar o search de string’s. ........................................................ 19 13 Calculo do BlocoSize. .................................................................................. 20

13.1 Cálculo do blocksize de um ficheiro : ...................................................... 20 13.2 Cálculo do nº de pistas e cilindros desse ficheiros : ................................. 20

14 Copiar um ficheiro para outro(IEBGENER \ ICEGENER). ........................ 20 14.1 Jcl ............................................................................................................. 20 14.2 Instruções de Controlo .............................................................................. 21

14.2.1 GENERATE ..................................................................................... 21 14.2.2 EXITS .............................................................................................. 21 14.2.3 LABELS ........................................................................................... 21 14.2.4 MEMBER......................................................................................... 21

14.3 EXEMPLOS ............................................................................................. 21 15 Update String’s em Bibliotecas Utilizando o File-Aid Compware. ............. 24 16 SET – Utilização no JCL. ............................................................................. 24

16.1 MEMBRO: MMMAA .............................................................................. 24 16.2 JCL que UTILIZA o MMMAA ................................................................ 24

Page 2: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 2 / 25 Página: 2

1 Introdução

É através dos JOB’s que se executam os programas e utilitários BATCH. Eles

podem ser executados manualmente (através do comando SUB) ou automaticamente

(através de um sistema de disparo de JOB’s).

Os JOB’s são compostos por STEP’s, ou seja, etapas que são necessarias para que

uma rotina se complete.

Um JOB é composto pelos seguintes tipos de cartão:

2 Especificação dos Elementos

2.1 Cartão JOB

O cartão JOB indica ao sistema o início de uma unidade de trabalho. É através dele

que o sistema operacional faz o controle de segurança.

Formato: //serviço JOB ‘comentário’,MSGCLASS=X,NOTIFY=userid,

// CLASS=A,MSGLEVEL=(1,1),REGION=2M,TYPRUN=HOLD

Onde:

serviço - É o nome com o qual o JOB é reconhecido, podendo ter até 8 bytes.

Comentário - É uma pequena descrição do job

Obs: Quando qualquer tipo de cartão se estenda por mais de uma linha,

termina a linha anterior com o carácter “,” (vírgula) e usa-se o cartão de

continuação. Este cartão começa com // e é seguido do restante da codificação,

devendo iniciar entre as colunas 2 e 16, inclusive.

Parâmetros:

MSGCLASS=classe Permite designar uma classe de saída para as mensagens

produzidas pelo JOB.

NOTIFY=userid Indica ao sistema que avise o utilizador (userid) quando o

JOB terminar.

Se userid = &SYSUID, é avisado o utilizador TSO que submeteu o JOB.

CLASS=classe Permite designar uma classe para execução do JOB.

MSGLEVEL=(m,n) Estabelece o nível de detalhe das informações sobre o

JOB que o sistema listará.

Se m=0 => Só lista cartão JOB,

m=1 => Lista JCL e procedimentos

m=2 => Lista apenas JCL de entrada

Page 3: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 3 / 25 Página: 3

Se n=0 => Não saem mensagens de alocação

n=1 => Saem todas as mensagens

REGION=memsize Estabelece a dimensão máxima (512K, 2M, 4M, 8M, etc)

da memória virtual que o JOB poderá utilizar.

TYPRUN=HOLD/SCAN Pede um tratamento especial ao JES.

HOLD => Espera uma indicação do operador (comando RELEASE) para

fazer executar o JOB:

SCAN => Pede uma análise sintáxica do JCL, sem execução do JOB.

2.2 Cartão JOBLIB, JOBCAT, STEPLIB, STEPCAT, JCLLIB e SYSPROC

Basicamente na JOBLIB e STEPLIB, estão indicadas as bibliotecas onde se

encontram os load’s dos programs, modulos ou rotinas que são referênciadas no

JCL.

Quanto ao JCLLIB está indicada a biblioteca onde se encontram as PROC’s de JCL.

Exemplo JOBLIB versus STEPLIB.

- Quando não 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

OU

//............

//LIBS JCLLIB ORDER=(---.---.---,---.---.---,.....)

//*

//STEP01 EXEC START,... //* Executa proc definida na(s)

//............ //* biblioteca(s) da JCLLIB

Exemplo JOBCAT. - Os catálogos VSAM são determinados pelos JOBCAT e STEPCAT..

Page 4: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 4 / 25 Página: 4

//JOBCAT 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)

/*

2.3 Cartão EXEC

O cartão EXEC é usado para executar programas e utilitários, e para chamar

procedimentos catalogados. O formato deste cartão depende de cada intalação, ele

pode ser compretamente diferente de um ambiente para outro, portanto abaixo estará

a definição generica e alguns exemplos.

Formato: //stepname EXEC tipo=nome,MEM=member,PARM=parâmetro,COND=(0,LT,STEP01)

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 utilitário

nome - Identifica o procedimento/programa/utilitário a ser executado.

Parâmetros:

MEM=member Especifica o nome do programa a ser executado numa PROC.

Page 5: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 5 / 25 Página: 5

PARM=parâmetro Permite passar uma informação a um programa que tenha

previsto essa possibilidade

COND=(valor,operador,stepname) Estabelece as condições de execução do

STEP. Caso a condição satisfeita o STEP não é 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.

2.4 Cartão DD

O cartão DD é usado a seguir ao cartão EXEC para descrever um ficheiro que vai ser

usado, e para fazer a ligação entre os ficheiros lógicos (referenciados nos programas)

e os ficheiros físico.

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=periférico,VOL=SER=id_periférico

ou

//DDname DD DUMMY

ou

//DDname DD *

ou

//DDname DD SYSOUT=(classe,xxxxx,xxxxx),OUTPUT=classe

Definição de um ficheiro vazio em JCL:

//FICHEIRO DD DUMMY,DSN=END.OF.FILE,DISP=SHR

Definição de um ficheiro temporário em JCL: //FICHEIRO DD DSN=&&DESATRIB,

// DISP=(NEW,PASS),

// UNIT=(SYSDA,10),SPACE=(TRK,(900,500),RLSE),

// DCB=*.SORTIN

Onde:

DDname - É o nome lógico do ficheiro. Está especificado na cláusula

ASSIGN num programa COBOL

DUMMY - É um parâmetro especial do cartão DD e significa inexistência do

fiheiro

* - É um parâmetro especial do cartão DD e significa que o ficheiro

contem as informações existentes após o cartao DD até próximo cartão “//” ou “/*”.

Parâmetros:

Page 6: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 6 / 25 Página: 6

DSN=ficheiro Especifica o nome físico do ficheiro. Este nome pode ter várias

formas.

ficheiro=> NomeDataSet - até 5 qualificadores de 8 posições cada, separados por

“.”(ponto).

ficheiro=> NomeFichParticionado(NomeMembro) - até 5 qualificadores de 8

posições cada, separados por “.”(ponto), seguido, entre parenteses do nome do

membro.

ficheiro=> &&NomeFichTemp - O sinal “&&” significa que o ficheiro só existe

durante a execução do JOB.

DISP=(sit_inicial,fim_normal,fim_anormal)

Especifica as ações a executar sobre o ficheiro em três momentos: Quando

o JOB se inicia, quando o STEP termina normalmente, e quando o STEP termina

anormal.

Sit_inicial: NEW - Cria o ficheiro

OLD - Abre ficheiro já existente, sem compartilhar o

acesso com outros JOB’s. No caso de ficheiro de saída o conteúdo anterior é

apagado ficando somente o conteúdo adicionado.

SHR - Abre ficheiro já existente, compartilha o acesso

com outros JOB’s. No caso de ficheiro de saída mantém o conteúdo anterior

ao conteúdo adicionado.

MOD - Abre ficheiro já existente, compartilha o acesso

com outros JOB’s. No caso de ficheiro de saída mantém o conteúdo anterior

ao conteúdo adicionado.

Caso omitido assume =NEW

fim_normal: KEEP - Mantém o ficheiro

CATLG - Cataloga o ficheiro

PASS - Passa o ficheiro para outros STEP’s e elimina-

o ao final do JOB.

DELETE - Elimina o ficheiro

UNCATLG - Descataloga o ficheiro

Caso omitido assume= NEW se sit_inicial=NEW ou

KEEP p/ outros

fim_anormal DELETE - Elimina o ficheiro

KEEP - Mantém o ficheiro

CATLG - Cataloga o ficheiro

UNCATLG - Descataloga o ficheiro

Caso omitido assume= Caso fim_normal PASS,

fim_anormal=fim_normal,

caso contrário proceder como na omissão de fim_normal.

DCB=(RECFM=tipo_reg,LRECL=num_bytes_reg,BLKSIZE=num_bytes_bloco)

Page 7: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 7 / 25 Página: 7

Define a característica física do ficheiro.

tipo_reg FB - Registo de tamanho fixo

VB - Registo de tamanho variável

UB - Registo de tamanho indefinido

num_bytes_bloco = n * num_bytes_reg

SPACES=(unidade,(tam_inicial,tam_adicional),RLSE)

Estabelece o tamanho máximo (tam_inicial + 15 * tam_adicional) de espaço

em disco a ser alocado para o ficheiro.

unidade CYL - Medição em cilindros

TRK - Medição em trilhas

num_bytes_bloco => tam_inicial e tam_adicional medidos em blocos.

tam_inicial É o número de unidades a alocar inicialmente

para o ficheiro

tam_adicional É o número de unidades a alocar

secundáriamente para o ficheiro

RLSE É uma indicação para libertar o espaço que sobrar

UNIT=periférico

Especifica o tipo de periférico onde será gravado o ficheiro.

Periférico O seu conteúdo varia de acordo com a instalação do

sistema operacional. E devem ser identificados junto a uma pessoa da empresa.

Alguns exemplos:

3390 - Identifica uma unidade de disco série 3390

SYSDA - O sistema disponibiliza um disco de trabalho

temporário.

PRDSEQ- O sistema disponibiliza um disco da produção

permanente.

PRDTEMP- O sistema disponibiliza um disco da

produção temporário.

TAPE - O sistema disponibiliza uma unidade de banda

magnética

RCART - O sistema disponibiliza uma unidade de

cartridige.

VOL=SER=id_periférico

Identifica físicamente o periférico. O seu conteúdo varia de acordo com a

instalação do sistema operacional. E devem ser identificados junto a uma pessoa da

empresa. Alguns exemplos:

MVS207

MVS437

Page 8: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 8 / 25 Página: 8

3 Utilitário SORT

3.1 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

SORT FIELDS=(1,3,A),FORMAT=BI,EQUALS

INCLUDE COND=(1,1,CH,EQ,C'0')

SUM FIELDS=(23,8,31,8),FORMAT=PD

3.2 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')

Page 9: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 9 / 25 Página: 9

/*

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

/* Obs: Ficheiro de saída 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. São gravadas no ficheiros o numero de linha

que encontre com o SORT FIELDS diferente. Os campos que não estão

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

Page 10: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 10 / 25 Página: 10

25320010306200103078900095680C0092610C539200103060000100

0000000000000

--------------------------------------------------------

4 Utilitário IDCAMS

O utilitário 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 Proc’s //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 *

VERIFY FILE(INPUT1)

/*

Exemplo 3 //.............

//SYSIN DD *

REPRO INDATASET(-----.-----.-----)

OUTDATASET(-----.-----.-----)

REPLACE

/*

Exemplo 4 //.............

//SYSIN DD *

ALTER -----.-----.----- “-“ /* RENAME DE FICHEIRO */

NEWNAME(-----.-----.-----)

/*

Exemplo 5 //.............

//SYSIN DD *

ALTER -----.-----.-----

SHR(3 3)

/*

SHAREOPTIONS(region system) (Abbreviation=SHR) - specifies the cross- region 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

Page 11: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 11 / 25 Página: 11

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

/*

Exemplo 7 - Print do ficheiro em Hexa, RC = 12 se o ficheiro não está no catálogo. //.............

//SYSIN DD *

PRINT -

INDATASET(YKADEV.SEQ.ALOI.AT.SACO.COIV10) -

COUNT(1)

/*

Exemplo 8 - Print do ficheiro em Hexa, RC = 12 se o ficheiro não está no catálogo. //.............

//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 – Definição de um GDG. //.............

Page 12: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 12 / 25 Página: 12

//SYSIN DD *

DEFINE GENERATIONDATAGROUP -

(NAME(XXXTST.GDG.YYYY) -

NOEMPTY -

SCRATCH -

LIMIT(20))

/*

5 PARM DO JCL

Definição no JCL.

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

//STEP01 EXEC PGM=<PROGRAMA>,PARM=00003

Definição no COBOL.

LINKAGE SECTION.

01 PARMINFO.

03 PARM-LTH PIC S9(4) COMP.

* Informação nr.bytes passados, neste exemplo fica c/

valor 5

03 PARM-DATA PIC X(5).

* Informação passada ao programa, neste caso fica com

‘00003’.

::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::

DATA DIVISION USING PARMINFO.

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

..

Page 13: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 13 / 25 Página: 13

/*

Exemplos 3 Neste exemplo os caracteres que indicam o final da entrada dos

dados são os que estão 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

..

(DADOS)

..

XX

//*

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

7 A utilização da intrução IF/THEN/ELSE/ENDIF no jcl:

//nome IF ( condição ) THEN comentario // ... Acção(ões) quando a condição for verdadeira

one or more JCL statements to execute if expression is TRUE

//nome ELSE comentario // ... Acção(ões) caso contrário

Page 14: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 14 / 25 Página: 14

one or more JCL statements to execute if expression is FALSE

//nome ENDIF comentario

Exemplos: 1) //TESTA IF (RC = 8 | RC = 10 | RC = 12 | RC = 14) THEN

2) //TESTA IF (RC > 8 ) THEN 3) //TESTA IF (RC <= 8 ) THEN

4) //TESTA IF (RC = 8 | RC > 10 ) THEN

5) //TESTA IF (RC = 8 & RC <= 10 ) THEN //............

//STEP01 EXEC .....

//............

//TESTARC IF (STEP01.RC < 8) THEN

//STEP02 EXEC .....

//............

//SENAO ELSE

//STEP03 EXEC .....

//............

// ENDIF

//NEXTSTEP EXEC .....

//............

7.1 COMPARAÇÃO:

GT ou > - Maior que LT ou < - Menor que

NG ou > - Não Maior que

NL ou < - Não Menor que EQ ou = - Igual a LE ou <= - Menor ou Igual a GE ou >= - Maior ou Igual a

NE ou = - Não Igual a

7.2 LOGICOS:

AND ou & - E OR ou | - Ou

NOT ou - Negação

Exemplo: // 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

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Page 15: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 15 / 25 Página: 15

7.3 Operadores:

RC –

highest return code from any prior job step

stepname.RC

- return code from the named job step

stepname.procstepname.RC

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

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

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

Page 16: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 16 / 25 Página: 16

comments

- comments are optional and should follow the last subparameter on the

SET statement by at least 1 blank

8 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

//*

//............

9 Pool de Discos Versus Disco(VOL=SER=XXXX,UNIT=3380/3390)

No JCL é frequente encontrar a referência UNIT=?????, em que ????? é o nome

atribuido a uma serie de discos(POOL), não sendo necessário 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 não 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 específico é

necessário 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 é necessário conhecer o nome do disco e tipo de disco, se por alguma razão o

disco estiver offline o jcl já não é executado e dá erro, na pool o ficheiro é

catalogado no disco que está mais disponível, espaço versus tempo de acesso, pelo

que sempre que possível aconcelho a utilização 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

/*

Page 17: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 17 / 25 Página: 17

*** The UNIT Parameter **

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

{unit-count | P},DEFER)

or

UNIT=AFF=ddname

Subparameter Definition

device-number = (UNIT=3390)

device-type:

3330 3330 Model 1

3330-1 3330 Model 11

3350 3350 DASD

3375 3375 DASD

3380 3380 DASD

3400-6 3420 Tape Drive (Reel Type)

3400-9 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

Page 18: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 18 / 25 Página: 18

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)

//$$MYFILE DD UNIT=(3330-1,2)

//TEMP DD UNIT=TAPE,VOL=SER=TAPE01

// DD UNIT=AFF=TEMP,VOL=SER=TAPE09

10 Definição de um membro dentro do JCL(INCLUDE).

Definição de um membro dentro de um JCL com a instrução INCLUDE.

Exemplos 1 //TSOIDX JOB ........

//IDLIB JCLLIB ORDER=(----.---.---)

//INCLUDE INCLUDE MEMBER=OUTMSG

//...........

/*

11 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(Proc’s 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

/* Indica o fim de dados introduzidos por JCL

//* Comentários da coluna 4 até a coluna 80

PROC Inicia uma PROC catalogado ou de fluxo de entrada e indica

os valores por default

PEND Indica o fim de uma PROC

CNTL Indica o inicio de comandos de controle p/fluxo de entrada

ENDCNTL Indica o fim de comandos de controle p/fluxo de entrada

OUTPUT Usado no JES2 e JES3 para especificar o processamento de

ficheiros de saida

//jobname JOB (codigo-conta,info.contabeis),nome,

// parametros-do-job

Page 19: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 19 / 25 Página: 19

jobname - até 8 caracteres.

parametros-do-job

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 não 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ó alocações com ABEND

1 - Imprime todas as alocações

Ex. MSGLEVEL=(1,0)

NOTIFY - TSO user a ser informado quando a execução do JOB for concluída.

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 recomeça o job.

TYPRUN - Retem o JOB na fila de entrada(para verificar a sintaxe)

HOLD - Mantém o job na fila após verificação da sintaxe.

JCLHOLD - Mantém 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.

12 JCL para executar o search de string’s.

//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 necessário

//OUTDD DD SYSOUT=*

//SYSIN DD *

SRCHFOR '_TBASICUE'

SRCHFOR '_TBASICOS'

Page 20: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 20 / 25 Página: 20

:::::::::::::::::::: --> Colocar mais STRING’S se necessário

/*

13 Calculo do BlocoSize.

Actualmente já não é necessário calcular o bloco size de ficheiros porque o sistema

se encarrega de efectua-los, no entanto aqui fica o cáclulo.

BLOCKSIZE/PISTAS E CILINDROS DE FICHEIROS

Modelos dos Discos

13.1 Cálculo 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

13.2 Cálculo 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 / Nºde Pistas por Cilindro = Nº DE CILINDROS

14 Copiar um ficheiro para outro(IEBGENER \ ICEGENER).

É um utilitário de copia.

14.1 Jcl //JS10 EXEC PGM=IEBGENER,REGION=1024K

//SYSPRINT DD SYSOUT=* Mensagens

//SYSUT1 DD DSN=...,DISP=... Ficheiro Sequencial de Input.

//SYSUT2 DD DSN=...,DISP=... Ficheiro Sequencial de Output.

//SYSIN DD * Instruções de Controlo

Instruções de Controlo

3390-1 3380

3390-2 3380-E

3390-3 3380-K 3375 3350 3340 3330

Capacidade da Pista

(Bytes)

56664 47476 35616 19069 8368 13030

Nºde Pistas por

Cilindro

15 15 12 30 12 19

Tot.Cilindros por

Disco

1113 885 959 555 696 404

2226 1770

3339 2655

Page 21: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 21 / 25 Página: 21

/*

14.2 Instruções de Controlo

São utilizadas as seguintes instruções de controlo: GENERATE, EXITS, LABELS,

MEMBER.

14.2.1 GENERATE {label} GENERATE MAXNAME=n

{,MAXFLDS=n}

{,MAXGPS=n}

{,MAXLITS=n}

{,DBCS={YES ¦ NO}}

Os parâmetros MAXNAME, MAXFLDS, MAXGPS, e MAXLITS determina o

número máximo membros, campos, IDENTS, e caracteres literais e usa-se sempre

DBCS=YES quando o ficheiro de input não é double-byte character. {label} RECORD {{IDENT¦IDENTG}=(length,'name',input-location)}

{,FIELD=({length}

{,input-location ¦ 'literal'}

{,conversion} ->(CG,CV,GC,GV,HE,PZ,VC,VG,ZP)

{output-location}),{FIELD=...}

{,LABELS=n}

14.2.2 EXITS {label} EXITS {INHDR=routinename}

{,OUTHDR=routinename}

{,INTLR=routinename}

{,OUTTLR=routinename}

{,KEY=routinename}

{,DATA=routinename}

{,IOERROR=routinename}

{,TOTAL=routinename,size}

14.2.3 LABELS

{label} LABELS {DATA=YES¦NO¦ALL¦ONLY¦INPUT}

14.2.4 MEMBER

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

14.3 EXEMPLOS

Exemplos 1 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

//*

//SYSUT2 DD DSN=TSOID.FICH2,DISP=(,CATLG,DELETE),

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

Page 22: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 22 / 25 Página: 22

// DCB=(RECFM=FB,LRECL=140,DSORG=PS,BLKSIZE=0)

//SYSIN DD DUMMY

/*

Nota:

No caso em que o ficheiro definido no SYSUT1 for variável (RECFB=V;VB) e o

ficheiro no SYSUT2 e fixo(F;FB) identifique no cartão do SYSIN o tamanho do

registo a copiar: //......

//SYSIN DD *

GENERATE MAXFLDS=1

RECORD FIELD=(140,1,,1)

/* ^ ^^ ^

| || |

Tamanho Campo--+ || |

Inicio do Input-----+| |

Conversão -----------+ |

Inicio de Output ------+

Exemplos 2 JCL para converter uma FB CLIST numa VB CLIST, movendo o

campo número de sequência.

//JS10 EXEC PGM=IEBGENER

//SYSPRINT DD SYSOUT=*

//SYSUT1 DD DSN=MY.FB.CLIST.LIB,

// DISP=SHR

//SYSUT2 DD DSN=MY.VB.CLIST.LIB,

// DISP=SHR

//SYSIN DD *

GENERATE MAXFLDS=2,MAXNAME=1

RECORD FIELD=(8,73,,1),FIELD=(72,1,,9)

MEMBER 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

GRP3 RECORD IDENT=(7,'* TOP *',1),

MEM4 MEMBER NAME=RPTDATA

GRP4 RECORD IDENT=(8,'*BOTTOM*',1)

/*

Exemplos 4 JCL para copiar uma mapa de disco para o SPOOL.

Page 23: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 23 / 25 Página: 23

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

FIELD=(2,27,PZ,31),FIELD=(5,28,PZ,32),

X

FIELD=(20,32,,39),FIELD=(9,52,PZ,59),

X

FIELD=(40,60,,74)

/*

| | | |

| | | POSICAO DE OUTPUT

| | CONVERSAO (CG,CV,GC,GV,HE,PZ,VC,VG,ZP)

| POSICAO INPUT

COMPRIMENTO DO CAMPO

Page 24: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 24 / 25 Página: 24

15 Update String’s 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:

Atenção quando a biblioteca de input é igual á de output, não fica com os membros

originais, são esmagados pelas substituições.

16 SET – Utilização no JCL.

16.1 MEMBRO: MMMAA BROWSE XXXXX.XXXXXXXX(MMMAA) - 01.08

Command ===>

********************************* Top o

//CHANGE SET MMMAA='ABR94'

******************************** Bottom

16.2 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

esta o membro “MMMMAA”

//CHANGE INCLUDE MEMBER=MMMAA *SUBSTITUI O SIMBOLICO &&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

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

Page 25: JCL IF AND ELSE

Manual Prático Data: 24/06/2013

Especificação de JCL Pag. 25 / 25 Página: 25