📋 AKOM.JCL — JCL Library
Membros JCL prontos para uso em ambiente z/OS. Copie, adapte e execute.
ADRDSSU
3 membrosDSSDUMP
▶
Faz backup (dump) de datasets ou volumes inteiros com ADRDSSU. Suporta COMPRESS para economizar espaço e CHANGEDONLY para backup incremental.
Código JCL
//DSSDUMP JOB (ACCT),'ADRDSSU DUMP',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* DSSDUMP - ADRDSSU: DUMP DE DATASETS PARA TAPE/DISCO *
//*------------------------------------------------------------*
//DUMPSTEP EXEC PGM=ADRDSSU,REGION=0M
//SYSPRINT DD SYSOUT=*
//TAPE1 DD DSN=AKOM.BACKUP.DUMP,
// DISP=(NEW,CATLG,DELETE),
// UNIT=CART,
// LABEL=(1,SL)
//SYSIN DD *
DUMP DATASET(INCLUDE(AKOM.**)) -
OUTDD(TAPE1) -
COMPRESS -
ALLDATA(*) -
ALLEXCP -
TOL(ENQF)
/*
DSSMOVE
▶
Move datasets entre volumes DASD usando ADRDSSU COPY com a opção DELETE (equivalente a MOVE). Mais eficiente que IEBGENER para grandes volumes.
Código JCL
//DSSMOVE JOB (ACCT),'ADRDSSU MOVE',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* DSSMOVE - ADRDSSU: COPY+DELETE (MOVE) ENTRE VOLUMES *
//*------------------------------------------------------------*
//MOVESTEP EXEC PGM=ADRDSSU,REGION=0M
//SYSPRINT DD SYSOUT=*
//VOLSRC DD UNIT=3390,VOL=SER=SRCVOL,DISP=SHR
//VOLTGT DD UNIT=3390,VOL=SER=TGTVOL,DISP=SHR
//SYSIN DD *
COPY DATASET(INCLUDE(AKOM.**)) -
INDD(VOLSRC) -
OUTDD(VOLTGT) -
DELETE -
CATALOG -
COMPRESS
/*
DSSRESTOR
▶
Restaura datasets de um dump ADRDSSU. RENAME permite restaurar com novo nome (útil para testes). REPLACE sobreescreve se o dataset já existir.
Código JCL
//DSSRESTOR JOB (ACCT),'ADRDSSU RESTORE',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* DSSRESTOR - ADRDSSU: RESTORE COM RENAME PARA TESTE *
//*------------------------------------------------------------*
//RESTSTEP EXEC PGM=ADRDSSU,REGION=0M
//SYSPRINT DD SYSOUT=*
//TAPE1 DD DSN=AKOM.BACKUP.DUMP,
// DISP=SHR,
// UNIT=CART,
// LABEL=(1,SL)
//SYSIN DD *
RESTORE DATASET(INCLUDE(AKOM.**)) -
INDD(TAPE1) -
RENAME(AKOM.**,AKOMT.**) -
REPLACE -
CATALOG
/*
ICKDSF
1 membrosICKINIT
▶
INSPECT verifica integridade do volume DASD sem alterar dados (seguro). INIT formata o volume (DESTRUTIVO — apaga tudo). O cartão INIT está comentado por segurança.
Código JCL
//ICKINIT JOB (ACCT),'ICKDSF INSPECT',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* ICKINIT - ICKDSF: INSPECT (SEGURO) E INIT (DESTRUTIVO) *
//* INSPECT: Verifica volume sem alterar dados *
//* INIT: *** APAGA TODOS OS DADOS DO VOLUME *** *
//*------------------------------------------------------------*
//INSPVOL EXEC PGM=ICKDSF,REGION=4096K
//SYSPRINT DD SYSOUT=*
//DASDVOL DD UNIT=3390,VOL=SER=AKOMV1,DISP=OLD
//SYSIN DD *
INSPECT UNITADDRESS(0A00) -
NOVERIFY -
SCAN
//* *** DESCOMENTE APENAS SE SOUBER O QUE ESTA FAZENDO ***
//* INIT UNITADDRESS(0A00) -
//* NOVERIFY -
//* VOLID(AKOMV1) -
//* VTOC(0,1,14) -
//* PURGE
/*
IDCAMS
6 membrosIDCALTER
▶
Modifica atributos de um cluster VSAM já existente: renomear, alterar SHAREOPTIONS, EXCEPTIONEXIT, ou NEWNAME para mover entre catálogos.
Código JCL
//IDCALTER JOB (ACCT),'ALTER VSAM',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IDCALTER - ALTER: RENOMEIA CLUSTER VSAM *
//*------------------------------------------------------------*
//ALTERVS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
ALTER AKOM.VSAM.KSDS.CLUSTER -
NEWNAME(AKOM.VSAM.KSDS.RENAMED)
/*
IDCDEFGD
▶
Define uma base de Generation Data Group (GDG) no catálogo. Parâmetros: NAME, LIMIT (máximo de gerações), SCRATCH/NOSCRATCH, EMPTY/NOEMPTY.
Código JCL
//IDCDEFGD JOB (ACCT),'DEFINE GDG',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IDCDEFGD - DEFINE GDG BASE *
//* Cria base de Generation Data Group com LIMIT=10 *
//*------------------------------------------------------------*
//DEFGDG EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE GDG ( -
NAME(AKOM.BACKUP.GDG) -
LIMIT(10) -
SCRATCH -
NOEMPTY -
)
/*
IDCDEFVS
▶
Define um cluster VSAM do tipo KSDS (Key Sequenced Data Set) com component de dados e índice. Parâmetros principais: NAME, CYLINDERS, KEYS, RECORDSIZE, SHAREOPTIONS.
Código JCL
//IDCDEFVS JOB (ACCT),'DEFINE KSDS',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IDCDEFVS - DEFINE CLUSTER VSAM KSDS *
//* Cria um cluster Key-Sequenced (KSDS) com DATA e INDEX *
//*------------------------------------------------------------*
//DEFCLSTR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER ( -
NAME(AKOM.VSAM.KSDS.CLUSTER) -
CYLINDERS(5 1) -
KEYS(10 0) -
RECORDSIZE(100 200) -
INDEXED -
SHAREOPTIONS(2 3) -
REUSE -
SPEED -
) -
DATA ( -
NAME(AKOM.VSAM.KSDS.DATA) -
) -
INDEX ( -
NAME(AKOM.VSAM.KSDS.INDEX) -
)
/*
IDCDELET
▶
Remove entradas do catálogo e opcionalmente apaga o dataset do volume. PURGE ignora a data de expiração; FORCE apaga componentes dependentes.
Código JCL
//IDCDELET JOB (ACCT),'DELETE VSAM',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IDCDELET - DELETE CLUSTER VSAM *
//* *** ATENÇÃO: OPERAÇÃO DESTRUTIVA — DADOS SERÃO PERDIDOS ***
//*------------------------------------------------------------*
//DELCLSTR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE AKOM.VSAM.KSDS.CLUSTER -
CLUSTER -
PURGE -
FORCE
/*
IDCLISTC
▶
Lista entradas no catálogo para datasets VSAM, GDGs, aliases e clusters. Use ALL para informações detalhadas ou NAME para listagem simples.
Código JCL
//IDCLISTC JOB (ACCT),'LISTCAT',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IDCLISTC - LISTCAT: LISTAR ENTRADAS DO CATALOGO *
//*------------------------------------------------------------*
//LISTCAT EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTCAT LEVEL(AKOM) -
ALL
/*
IDCREPRO
▶
Copia ou faz backup de datasets VSAM usando REPRO. Pode copiar VSAM→VSAM, VSAM→sequencial (export) ou sequencial→VSAM (import). Suporta SKIP e COUNT para cópia parcial.
Código JCL
//IDCREPRO JOB (ACCT),'REPRO VSAM',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IDCREPRO - REPRO: BACKUP VSAM PARA SEQUENCIAL *
//*------------------------------------------------------------*
//REPROVS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//INVSAM DD DSN=AKOM.VSAM.KSDS.CLUSTER,DISP=SHR
//OUTSEQ DD DSN=AKOM.BACKUP.SEQ,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1)),
// DCB=(RECFM=VB,LRECL=204,BLKSIZE=0)
//SYSIN DD *
REPRO INFILE(INVSAM) -
OUTFILE(OUTSEQ)
/*
IEBCOPY
2 membrosCOMPRESS
▶
Recupera espaço desperdiçado em um PDS fazendo compressão in-place (INDD=OUTDD apontam para o mesmo dataset). Não requer dataset de saída separado.
Código JCL
//COMPRESS JOB (ACCT),'COMPRESS PDS',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* COMPRESS - IEBCOPY: COMPRESSAO IN-PLACE DE PDS *
//*------------------------------------------------------------*
//COMPSTEP EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(2,1))
//INPDS DD DSN=AKOM.TARGET.PDS,DISP=SHR
//SYSIN DD *
COPY INDD=INPDS,OUTDD=INPDS
/*
COPYPDS
▶
Copia todos os membros de um PDS/PDSE para outro. Suporta SELECT (membros específicos), EXCLUDE (excluir membros) e RENAME para renomear durante a cópia.
Código JCL
//COPYPDS JOB (ACCT),'COPY PDS',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* COPYPDS - IEBCOPY: COPIA COMPLETA DE PDS *
//*------------------------------------------------------------*
//COPYSTEP EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(2,1))
//INPDS DD DSN=AKOM.SOURCE.PDS,DISP=SHR
//OUTPDS DD DSN=AKOM.TARGET.PDS,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(10,5,50)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
//SYSIN DD *
COPY INDD=INPDS,OUTDD=OUTPDS
/*
IEBDG
1 membrosIEBDGGEN
▶
Gera registros de teste com IEBDG usando Field Definitions (FD). Suporta campos sequenciais (SEQ), alfanuméricos (AL), aleatórios (RAN) e fixos (FX).
Código JCL
//IEBDGGEN JOB (ACCT),'IEBDG GENERATE',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IEBDGGEN - IEBDG: GERA DADOS DE TESTE *
//*------------------------------------------------------------*
//GENSTEP EXEC PGM=IEBDG
//SYSPRINT DD SYSOUT=*
//OUTFILE DD DSN=AKOM.TEST.DATA,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
//SYSIN DD *
DSD OUTPUT=(OUTFILE)
FD NAME=SEQFLD,LENGTH=6,STARTLOC=1,FORMAT=ZD,ACTION=SEQ,
BEGIN=000001,INCREMENT=1
FD NAME=NAMEFLD,LENGTH=20,STARTLOC=7,FORMAT=AN,ACTION=AL,
FILL=C'MAINFRAME'
FD NAME=FIXFLD,LENGTH=4,STARTLOC=27,FORMAT=AN,ACTION=FX,
FILL=C'AKOM'
CREATE QUANTITY=1000,NAME=(SEQFLD,NAMEFLD,FIXFLD)
END
/*
IEBGENER
2 membrosGENERCOPY
▶
Copia um dataset sequencial para outro, opcionalmente reorganizando campos com RECORD TYPE=EDIT e FIELD. Útil para reformatação de registros.
Código JCL
//GENERCOPY JOB (ACCT),'IEBGENER COPY',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* GENERCOPY - IEBGENER: COPIA SEQUENCIAL SIMPLES *
//*------------------------------------------------------------*
//GENRSTEP EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=AKOM.INPUT.SEQ,DISP=SHR
//SYSUT2 DD DSN=AKOM.OUTPUT.SEQ,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
//SYSIN DD DUMMY
GENERPRT
▶
Imprime o conteúdo de um dataset sequencial para SYSOUT usando IEBGENER com SYSUT2 apontando para SYSOUT.
Código JCL
//GENERPRT JOB (ACCT),'IEBGENER PRINT',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* GENERPRT - IEBGENER: IMPRIME DATASET PARA SYSOUT *
//*------------------------------------------------------------*
//PRNTSTEP EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=AKOM.INPUT.SEQ,DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD DUMMY
IEBUPDTE
2 membrosUPDTADD
▶
Adiciona novos membros a um PDS usando IEBUPDTE com PARM=NEW (dataset novo) ou PARM=MOD (adicionar a existente). Usa cartões ./ ADD para delimitar membros.
Código JCL
//UPDTADD JOB (ACCT),'IEBUPDTE ADD',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* UPDTADD - IEBUPDTE: ADICIONA MEMBROS AO PDS *
//*------------------------------------------------------------*
//UPDTSTEP EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=AKOM.SOURCE.PDS,DISP=SHR
//SYSUT2 DD DSN=AKOM.SOURCE.PDS,DISP=SHR
//SYSIN DD *
./ ADD NAME=NEWMEMBR
//NEWMEMBR JOB ...
//* Conteudo do novo membro
./ ENDUP
/*
UPDTCHG
▶
Altera linhas específicas de um membro PDS por número de sequência usando cartões ./ CHANGE e ./ DELETE. Útil para patches em JCL de produção.
Código JCL
//UPDTCHG JOB (ACCT),'IEBUPDTE CHG',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* UPDTCHG - IEBUPDTE: ALTERA LINHAS POR NUMERO DE SEQUENCIA *
//*------------------------------------------------------------*
//CHNGSTEP EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=AKOM.SOURCE.PDS,DISP=SHR
//SYSUT2 DD DSN=AKOM.SOURCE.PDS,DISP=SHR
//SYSIN DD *
./ CHANGE NAME=MEMBRO1
NOVA LINHA SUBSTITUINDO SEQUENCIA 010000 010000
./ ENDUP
/*
IEFBR14
2 membrosIEFALLOC
▶
Aloca um ou mais datasets (PS, PDS, PDSE) usando IEFBR14 com DISP=(NEW,CATLG). Útil para pré-alocar datasets antes de jobs que irão usá-los.
Código JCL
//IEFALLOC JOB (ACCT),'ALLOC DS',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IEFALLOC - IEFBR14: ALOCACAO DE DATASETS *
//*------------------------------------------------------------*
//ALLOCPS EXEC PGM=IEFBR14
//PSFILE DD DSN=AKOM.NEW.PSFILE,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920),
// UNIT=SYSDA
//PDSLIB DD DSN=AKOM.NEW.PDSLIB,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(10,5,50)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920),
// UNIT=SYSDA
IEFDELET
▶
Apaga datasets existentes usando IEFBR14 com DISP=(OLD,DELETE,DELETE) ou (MOD,DELETE,DELETE) para datasets que podem não existir.
Código JCL
//IEFDELET JOB (ACCT),'DELETE DS',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* IEFDELET - IEFBR14: DELECAO DE DATASETS *
//* *** ATENÇÃO: APAGA OS DATASETS PERMANENTEMENTE *** *
//*------------------------------------------------------------*
//DELSTEP EXEC PGM=IEFBR14
//DELPS DD DSN=AKOM.OLD.PSFILE,
// DISP=(OLD,DELETE,DELETE)
//DELPDS DD DSN=AKOM.OLD.PDSLIB,
// DISP=(OLD,DELETE,DELETE)
//DELMABE DD DSN=AKOM.MAYBE.EXISTS,
// DISP=(MOD,DELETE,DELETE)
TERSEMAIN
2 membrosTERSPACK
▶
Comprime um dataset usando TERSEMAIN com PACK (compressão padrão) ou SPACK (compressão superior). SPACK pode atingir razões de 5:1 a 10:1 em datasets JCL/texto.
Código JCL
//TERSPACK JOB (ACCT),'TERSE PACK',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* TERSPACK - TERSEMAIN: COMPRESSAO DE DATASET *
//* SPACK = compressao superior (melhor ratio, mais CPU) *
//* PACK = compressao padrao (mais rapido) *
//*------------------------------------------------------------*
//PACKSTEP EXEC PGM=TERSEMAIN
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=AKOM.SOURCE.DATA,DISP=SHR
//SYSUT2 DD DSN=AKOM.TERSE.PACKED,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(2,1)),
// DCB=(RECFM=VB,LRECL=1024,BLKSIZE=0),
// UNIT=SYSDA
//SYSIN DD *
SPACK
/*
TERSUNPK
▶
Descomprime um dataset TERSE previamente comprimido com PACK ou SPACK. O dataset de saída deve ter espaço suficiente para o tamanho original.
Código JCL
//TERSUNPK JOB (ACCT),'TERSE UNPACK',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*------------------------------------------------------------*
//* TERSUNPK - TERSEMAIN: DESCOMPRESSAO DE DATASET TERSE *
//*------------------------------------------------------------*
//UNPKSTEP EXEC PGM=TERSEMAIN
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=AKOM.TERSE.PACKED,DISP=SHR
//SYSUT2 DD DSN=AKOM.RESTORED.DATA,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(10,2)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920),
// UNIT=SYSDA
//SYSIN DD *
UNPACK
/*