Manual JCL
Manual JCL
Manual JCL
VSAM.
Borrado de ficheros.
//PASO00
EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN
DD *
DELETE (CMPP.PER.MDBR20.CAABF020) CLUSTER PURGE
Creacion de ficheros.
(KSDS)
//PASO00
EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN
DD *
DEFINE CLUSTER (NAME(CMPP.PER.MDBR20.CAABF020) RECORDS(2000 200) SHR(2) FSPC(5 10) VOL(PROD11))DATA
(NAME(CMPP.PER.MDBR20.CAABF020.DATA) RECSZ(145 145) KEYS(13 0) CISZ(512)) INDEX (NAME(CMPP.PER.MDBR20.CAABF020.INDEX) CISZ(512) IMBED)
//DELDEFI EXEC PGM=IDCAMS
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SETPRAY DD DSN=TPCOM.MANTIS.SETPRAY,DISP=SHR
//SYSIN
DD *
DELETE MANT540.CSOT.TRANSFER CLUSTER
IF LASTCC = 8 THEN DO
SET LASTCC = 0
SET MAXCC = 0
END
DEFINE CLUSTER(NAME(MANT540.CSOT.TRANSFER)SHAREOPTIONS(2)KEYS(36 0)RECORDSIZE(1400, 4000) FREESPACE(20,20))DATA(NAME(MANT540.CSOT.TRANSFER.DATA)CONTROLINTERVALSIZE(16384)CYLINDERS(10 2))INDEX(NAME(MANT540.CSOT.TRANSFER.INDEX))
REPRO INFILE(SETPRAY) OUTDATASET(MANT540.CSOT.TRANSFER) FROMKEY(' ') TOKEY(' ')
FROMKEY and TOKEY
Copy records beginning with a particular key value and ending with another key value.
1) IEBGENER
===========================================================
== Job: COPDUMP3
==
==
Requerimiento:
==
==
-------------==
==
Utilizara un cartucho NO LABEL de salida
==
==
Etiquetarlo como --> COPIA DUMP03
==
==
Entregarlo a Sistemas
==
===========================================================
/*
//STEP
EXEC PGM=IEBGENER
//SYSPRINT DD
SYSOUT=*
//SYSIN
DD DUMMY
//SYSUT1
//SYSUT2
//
//
//
IEBGENER
DD DSN=SYS1.DUMP03,DISP=SHR
DD UNIT=(CARTM,,DEFER),VOL=SER=SCO01S,DISP=SHR,
LABEL=(1,NL),DCB=(RECFM=FB,LRECL=4160,BLKSIZE=4160),
EXPDT=98000,
DSN=NLB.SCODUMP3.TPROV
GDG.
SORT
The SORT program is used to sort data into a certain sequence or to merge from 2 to 100
previously sorted input data sets into 1 output data set.
//STEP10 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=<<>>
//SORTOUT DD DISP=(MOD,CATLG,DELETE),SPACE=(CYL,(5,5),RLSE),
// UNIT=SYSDA,DCB=*.SORTIN,
// DSN=<<>>
//SYSIN DD *
//************** INCLUDE SORT STEPS HERE
<!--[if !supportLists]-->1) <!--[endif]-->TO SORT ON POSITIONS say for eg. 1 to 7
SORT FIELDS=(1,7,CH,A)
Where
Sort fields = (position ,length ,format ,sequence) or
Sort fields = (position ,length , sequence..),format = CH/BI/PD/ZD.d
PD=packed Decimal(COMP-3), ZD=zone decimal.
NOTE :Instead of using JCL to perform SORT operation , there's one simple alternative,
For eg:- Open a Flat file in edit mode. On the command line type (say) SORT 1,7 and press
ENTER, the file will be sorted on positions 1 to 7 bytes.
2) TO COPY ALL THE RECORDS FROM INPUT FILE TO OUTPUT FILE
SORT FIELDS=COPY
3) TO COPY THOSE RECORDS WHICH SATISFY A PARTICULAR CONDITION.
INCLUDE COND=(38,10,CH,EQ,C'57071509',OR,36,10,CH,EQ,C' 57105779')
4) TO OMIT THOSE RECORDS WHICH SATISFY A PARTICULAR CONDITION.
OMIT COND=(19,1,CH,EQ,C'S',OR,19,1,CH,EQ,C'S')
5) TO SKIP CERTAIN NO OF RECORDS
SORT FIELDS=COPY,SKIPREC=1000
6) TO STOP AFTER COPYING CERTAIN NO OF RECORDS
SORT FIELDS=COPY,STOPAFT=5000
SORT ICEMAN
//*******************************************************************\\
//ORDEN4
EXEC PGM=ICEMAN
//SYSPRINT DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SORTWK01 DD SPACE=(CYL,(50,50),RLSE)
//SORTWK02 DD SPACE=(CYL,(50,50),RLSE)
//SORTWK03 DD SPACE=(CYL,(50,50),RLSE)
//SORTWK04 DD SPACE=(CYL,(50,50),RLSE)
//SORTIN
DD DSN=CECFZ.UAFD.BAT1SB60.S1DQMI20.D%%ODATE,
//
DISP=SHR
//SORTOUT DD DSN=CECFZ.UAFD.BAT1TEMP.S2DQMI20.D%%ODATE,
//
DISP=(NEW,CATLG,DELETE),AVGREC=K,
//
SPACE=(1200,(100,50),RLSE),
//
RECFM=FB,LRECL=1200
//SYSIN
DD *
SORT FIELDS=(87,5,CH,A,66,8,CH,A,92,10,CH,A)
//*******************************************************************\\
//*******************************************************************/
//PASO01
EXEC PGM=ICEMAN,COND=(4,LT)
//SYSPRINT DD SYSOUT=X
//SYSOUT
DD SYSOUT=*
//SORTIN
DD DSN=P4K.KEVIH36.BPEVIH36.SALIDA,DISP=SHR
//SORTOUT DD DSN=P4K.KEVIH36.BPEVIH36.SALIDA.ISL,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(7000,(200,50),RLSE),
//
DCB=(RECFM=FB,LRECL=700,BLKSIZE=27300)
//SYSIN
DD *
SORT FIELDS=COPY
//*
//*******************************************************************/
//PASO05
EXEC PGM=ICEMAN,COND=(4,LT)
//SYSPRINT DD SYSOUT=X
//SYSOUT
DD SYSOUT=*
//SORTIN
DD DSN=P4K.KEVIH36.BPEVIH36.SALIDA.ISL,DISP=SHR
//
DD DSN=P4K.KEVIH35.BPEVIH35.SALIDA.ISL,DISP=SHR
//
DD DSN=P4K.KEVIH37.BPEVIH37.SALIDA.ISL,DISP=SHR
//
DD DSN=P4K.KEVIH39.BPEVIH39.SALIDA.ISL,DISP=SHR
//SORTOUT DD DSN=P4K.KEVIH36.BPEVIH36.SALIDA.SOR,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(7000,(200,50),RLSE),
//
DCB=(RECFM=FB,LRECL=700,BLKSIZE=27300)
//SYSIN
DD *
SORT FIELDS=(1,700,CH,A)
//*
SORT
//*******************************************************************\\
//* SORT PER ENTIOFI-MAT,CUENTA-MAT,DIGITO1,DIGITO2 - AVALAES
//**********************************************************************
//S0060
EXEC PGM=ICEMAN
//SYSPRINT DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SORTIN
DD DSN=DESP.UGFD.STDRSTDR.UGDTGRP,
//
DISP=SHR
//SORTOUT DD DSN=DESP.UGFD.STDRSTDR.UGDTGRP.V2,
//
DISP=(NEW,CATLG,DELETE),AVGREC=K,
//
SPACE=(397,(250,50),RLSE),
//
RECFM=VB,LRECL=397
//SYSOUT
DD SYSOUT=*
//SYSIN
DD *
RECORD TYPE=V,LENGTH=397
OPTION DYNALLOC=(,15)
OUTREC FIELDS=(1,4,5:C'20133010',13:C'9600000026',19,170,D,209)
SORT FIELDS=(5,8,CH,A,13,10,CH,A)
//*
SORT
SORT
//*******************************************************************\\
//SORT02
EXEC PGM=SORT,
//
PARM='FLAG(I)'
//SYSOUT
DD SYSOUT=*
//SORTIN
DD DSN=CECFZ.UAFD.BAT1TEMP.S2DQMI20.D%%ODATE,
//
DISP=SHR
//SORTOUT DD DSN=CECFZ.UAFD.BAT1SB60.S2DQMI20.D%%ODATE,
//
DISP=(NEW,CATLG,DELETE),AVGREC=K,
//
SPACE=(1200,(50,10),RLSE),
//
RECFM=FB,LRECL=1200
//SORTWK01 DD AVGREC=K,
//
SPACE=(CYL,(50,10),RLSE)
//SORTWK02 DD AVGREC=K,
//
SPACE=(CYL,(50,10),RLSE)
//SORTWK03 DD AVGREC=K,
//
SPACE=(CYL,(50,10),RLSE)
//SYSIN
DD *
SORT FIELDS=(102,3,CH,A,424,98,CH,A)
/*
//PASO0 EXEC PGM=SORT,COND=(4,LT)
//*
//SORTIN
DD DSN=P4K.EISMA.G16120.VIDA.MANU,DISP=SHR
//SORTOUT DD DSN=P4K.MEVIPH33.BPEVIH36.SORT,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(6000,(200,50),RLSE),
//
DCB=(RECFM=FB,LRECL=700,BLKSIZE=27600)
//SYSOUT
DD SYSOUT=X
//SYSIN
DD *
SORT FIELDS=COPY
OMIT COND=(2,2,CH,EQ,C'3V',|,2,2,CH,EQ,C'4V')
//PASO0 EXEC PGM=SORT,COND=(4,LT)
//*
//SORTIN
DD DSN=P4K.EISMA.G16120.VIDA.MANU,DISP=SHR
//SORTOUT DD DSN=P4K.MEVIPH33.BPEVIH36.SORT,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(6000,(200,50),RLSE),
//
DCB=(RECFM=FB,LRECL=700,BLKSIZE=27600)
//SYSOUT
DD SYSOUT=X
//SYSIN
DD *
SORT FIELDS=COPY
OMIT COND=(2,2,CH,EQ,C'3V')
//PASO0 EXEC
//*
//SORTIN
DD
//SORTOUT DD
//
//
//
//SYSOUT
DD
//SYSIN
DD
PGM=SORT,COND=(4,LT)
DSN=P4K.EISMA.G16120.VIDA.MANU,DISP=SHR
DSN=P4K.MEVIPH33.BPEVIH36.SORT,
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
SPACE=(6000,(200,50),RLSE),
DCB=(RECFM=FB,LRECL=700,BLKSIZE=27600)
SYSOUT=X
*
SUM FIELDS=NONE
SORT FIELDS=(1,600,CH,A)
//*
//PASO0 EXEC PGM=SORT,COND=(4,LT)
//*
//SORTIN
DD DSN=P4K.EISMA.G16120.VIDA.MANU,DISP=SHR
//SORTOUT DD DSN=P4K.MEVIPH33.BPEVIH36.SORT,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(6000,(200,50),RLSE),
//
DCB=(RECFM=FB,LRECL=700,BLKSIZE=27600)
//SYSOUT
DD SYSOUT=X
//SYSIN
DD *
SUM FIELDS=NONE
SORT FIELDS=(1,600,CH,A)
OMIT COND=(2,2,CH,EQ,C'4V')
//*
//PASO0 EXEC PGM=SORT,COND=(4,LT)
//*
//SORTIN
DD DSN=P4K.EISMA.G16120.VIDA.MANU,DISP=SHR
//SORTOUT DD DSN=P4K.MEVIPH33.BPEVIH36.SORT,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(6000,(200,50),RLSE),
//
DCB=(RECFM=FB,LRECL=600,BLKSIZE=27300)
//SYSOUT
DD SYSOUT=X
//SYSIN
DD *
SORT FIELDS=COPY,
STOPAFT=15
//*
//*******************************************************************\\
//* SORT PER GUARDAR FITXER SENCER A TRACTAR.
//**********************************************************************
//S0020
EXEC PGM=ICEMAN
//SYSPRINT DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SORTIN
DD DSN=PCTINT.N61367PA.D110310.T195200.ORI,
//
DISP=SHR
//SORTOUT DD DSN=DESP.UGFD.STDRSTDR.E1DQX180,
//
DISP=(NEW,CATLG,DELETE),AVGREC=K,
//
SPACE=(368,(250,50),RLSE),
//
RECFM=FB,LRECL=368
//SYSIN
DD *
OPTION STOPAFT=10
SORT FIELDS=COPY
//*
//S0130
//SYSPRINT
//SYSOUT
//SORTIN
//
//SORTOUT
//
//
EXEC PGM=ICEMAN
DD SYSOUT=*
DD SYSOUT=*
DD DSN=CECFZ.UGFD.BAT1SB30.%%TAULA01..%%ORDATE,
DISP=SHR
DD DSN=CECFZ.UGFD.BAT1SB30.SORT2001.%%ORDATE,
DISP=(NEW,CATLG,DELETE),AVGREC=K,
SPACE=(159,(50,10),RLSE),
//
RECFM=FB,LRECL=159
//SYSOUT
DD SYSOUT=*
//SYMNAMES DD *
ENTIOFI-MAT,43,8
CUENTA-MAT,56,10
UGIPPCOM,2082,16
UGIPACOM,2099,16
UGFEINPE,2116,10
//SYSIN
DD *
OPTION DYNALLOC=(,15)
SORT FIELDS=(ENTIOFI-MAT,CH,A,
CUENTA-MAT,CH,A)
OUTREC FIELDS=(1,103,UGIPPCOM,C';',UGIPACOM,C';',UGFEINPE,C';',
11C'0001-01-01;')
//*
REPRO
//JS0SAV
EXEC PGM=IDCAMS,COND=(4,LT)
//SYSPRINT DD SYSOUT=X
//FITXER1 DD DSN=V3K.EVIMA.F0533.COPIA,DISP=SHR
//FITXER2 DD DSN=P4K.EVIMA.F0533.COPIA,
//
DISP=(NEW,CATLG,DELETE),UNIT=TEST,
//
SPACE=(4506,(200,50),RLSE),
//
DCB=(RECFM=VB,LRECL=4506,BLKSIZE=27036)
//SYSIN
DD *
REPRO INFILE(FITXER1) OUTFILE(FITXER2)
/*
//*
LOAD REPLACE
//*******************************************************************\\
//S0030
EXEC PGM=DSNUTILB,
//
REGION=32M,
//
PARM='DB0Z,UGPT0001'
//STEPLIB DD DSN=DB2Z.CECZ.DSNLOAD,
//
DISP=SHR
//SYSPRINT DD SYSOUT=*
//UTPRINT DD SYSOUT=*
//CEEDUMP DD SYSOUT=Z
//SYSDBOUT DD SYSOUT=Z
//SYSUDUMP DD SYSOUT=Z
//SORTWK01 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK02 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK03 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK04 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK05 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK06 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK07 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK08 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK09 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK10 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK11 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//SORTWK12 DD UNIT=SYSDA,
//
SPACE=(CYL,(100,100),RLSE)
//*SYSREC
DD DUMMY
//SYSREC
DD DSN=CECFZ.UGFD.BAT1SB30.UGDTERRL.%%ORDATE2,
//
DISP=OLD,FREE=CLOSE
//*YSUT1
DD DSN=DCCINT.UGFD.BAT1NBAS.SYSUT1R0,
//SYSUT1
DD DSN=CECFZ.UGFD.BAT1NBAS.SYSUT1R0,
//
DISP=(MOD,DELETE,CATLG),AVGREC=K,
//
UNIT=SYSDA,
//
SPACE=(CYL,(4200,300),RLSE)
//SORTOUT DD DSN=CECFZ.UGFD.BAT1NBAS.SORTOUR0,
//
DISP=(MOD,DELETE,CATLG),AVGREC=U,
//
UNIT=SYSDA,
//
SPACE=(CYL,(250,250),,,ROUND)
//SYSERR
DD DSN=CECFZ.UGFD.BAT1NBAS.SYSERRR0,
//
DISP=(MOD,DELETE,CATLG),AVGREC=U,
//
UNIT=SYSDA,
//
SPACE=(16384,(20,20),,,ROUND)
//SYSMAP
DD DSN=CECFZ.UGFD.BAT1NBAS.SYSMAPR0,
//
DISP=(MOD,DELETE,CATLG),AVGREC=U,
//
UNIT=SYSDA,
//
SPACE=(16384,(20,20),,,ROUND)
//SYSIN
DD *
LOAD DATA LOG NO REPLACE INDDN SYSREC
INTO TABLE
DB2GZADM.UGDTERR
(UGINTERF POSITION(1:8) CHAR (8)
,UGENTORI POSITION(9:10) CHAR (2)
,UGNUMREG POSITION(11:25) CHAR (15)
,UGOPERA1 POSITION(26:45) CHAR (20)
,UGOPERA2 POSITION(46:65) CHAR (20)
,UGNUMCAM POSITION(66:67) DECIMAL
,UGCODCAM POSITION(68:75) CHAR (8)
,UGCCAMPO POSITION(76:95) CHAR (20)
,UGEDESTI POSITION(96:97) CHAR (2)
,UGINDCOD POSITION(98:98) CHAR (1)
,UGERROR POSITION(99:105) CHAR (7)
,UGFEALTA POSITION(106:115) DATE EXTERNAL(10)
,UGOBSERV POSITION(116:315) CHAR (200)
,UGCOFULM POSITION(316:319) CHAR (4)
,UGCUSULM POSITION(320:327) CHAR (8)
,UGNTRULM POSITION(328:335) CHAR (8)
,UGFTIULM POSITION(336:361) TIMESTAMP EXTERNAL(26)
)
/*
//*******************************************************************\\
//S0040
EXEC KDPZ0600,DATABAS=UGDBPREZ,DATE=D%%ODATE,DSSN=0001,
//
PREFCEC=CECZ,SUBSYS=DB0Z,SYSTEM=DB2Z,TABLESP=UGDSERR,
//
UID=RV2%%ORDERID,VCAT=CECZDB
//SYSIN
DD *
COPY TABLESPACE UGDBPREZ.UGDSERR
/*
DELETE FICHEROS
//*********************************************************************
//DELINI
EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSIN
DD *
DELETE CECFZ.UGFD.BAT1SB30.UG02VCA0.%%ORDATE
DELETE CECFZ.UGFD.BAT1SB30.UG020001.%%ORDATE
DELETE CECFZ.UGFD.BAT1SB30.JZFWUG02.%%ORDATE
IF MAXCC=8 THEN SET MAXCC=0
//*
Hay varias maneraz de que los programas reciban la informacion desde el job. Vamos a
explicar alguna de ellas
PIC X(2).
PIC X(6).
En el job se escriben puntos despues de la variable recibida para poder escribir la coma
entre las variables.
//AD00030 EXEC PGM=AH87777,COND=(4,LT),
// PARM=('&ENTORNO.,&OYMD1.,')
el programa las recibe del siguiente modo..
LINKAGE SECTION.
01
PARAMETROS.
02 HW
02 IPARAM
//*******************************************************
//* REPRO
//*******************************************************
//S0020
EXEC PGM=ICEMAN
//SYSPRINT DD SYSOUT=*
//SORTIN
DD DSN=CECFZ.UGFD.BAT1SB30.%%TAULA1..%%ORDATE,
//
DISP=SHR
//SORTOUT DD DSN=CECFZ.UGFD.BAT1NBAS.E1DQW570.%%ORDATE
//
DISP=(NEW,CATLG,DELETE),
//
UNIT=(VTS,,DEFER),
//
LABEL=(1,SL),RETPD=30,
//
VOL=(,,,99),
//
RECFM=FB,LRECL=499
//SYSOUT
DD SYSOUT=*
//SYSIN
DD *
OPTION DYNALLOC=(,15)
SORT FIELDS=(80,8,CH,A,
89,1,CH,A,
91,1,CH,A,
93,10,CH,A,
106,10,CH,A)
//*
//**********************************************************************
//S0030
EXEC PGM=ICEMAN
//SYSPRINT DD SYSOUT=*
//SORTIN
DD DSN=CECFZ.UGFD.BAT1SB30.%%TAULA2..%%ORDATE,
//
DISP=SHR
//SORTOUT DD DSN=CECFZ.UGFD.BAT1NBAS.E2DQW570.%%ORDATE,
//
DISP=(NEW,CATLG,DELETE),AVGREC=K,
//
SPACE=(650,(50,10),RLSE),
//
RECFM=FB,LRECL=650
//SYSOUT
DD SYSOUT=*
//SYSIN
DD *
OPTION DYNALLOC=(,15)
SORT FIELDS=(80,8,CH,A,
89,1,CH,A,
91,1,CH,A,
93,10,CH,A,
120,10,CH,A)
//*
= '9800000554') OR
= '9806882338') OR
= '9801202449'));
UPDATE DB2GEADM.UGDTAVA
SET CODIGAR = '121'
WHERE ((ENTIOFI = '20136133' AND CUENTA
(ENTIOFI = '20136140' AND CUENTA
(ENTIOFI = '20136163' AND CUENTA
COMMIT;
UPDATE DB2GEADM.UGDTAVA
SET CODIGAR = '311'
WHERE ((ENTIOFI = '20136076' AND CUENTA
(ENTIOFI = '20136165' AND CUENTA
(ENTIOFI = '20136090' AND CUENTA
COMMIT;
= '9800000554') OR
= '9806882338') OR
= '9801202449'));
= '9800000174') OR
= '9800000810') OR
= '9800007476'));
COPYPEND
LOAD
La utilidad "LOAD" se utiliza para realizar "cargas" de datos a una tabla DB2.
La carga se realizar desde un fichero que puede venir con el formato de la tabla o no.
La estructura general de un paso de LOAD sera algo as:
//*================================================
//* CARGA DE LA TABLA TBPRU00
//* Donde los ficheros SORTWKXX son temporales para
//* ordenar la entrada
//* el SYSREC es el fichero con los datos para la carga
//* y el SORTOUT es temporal para ordenar la salida
//*======================================================
//LOADTBL EXEC DSNUPROC,SYSTEM=DSNP,UID=LOADIND
//DSNUPROC.SORTWK01 DD DSN=&&SORTWK01,
// DISP=(NEW,DELETE,DELETE),
// SPACE=(4000,(1000,700),,,ROUND),
// UNIT=SYSDA
//DSNUPROC.SORTWK02 DD DSN=&&SORTWK02,
// DISP=(NEW,DELETE,DELETE),
// SPACE=(4000,(1000,700),,,ROUND),
// UNIT=SYSDA
//DSNUPROC.SORTWK03 DD DSN=&&SORTWK03,
// DISP=(NEW,DELETE,DELETE),
// SPACE=(4000,(1000,700),,,ROUND),
// UNIT=SYSDA
//DSNUPROC.SORTWK04 DD DSN=&&SORTWK04,
// DISP=(NEW,DELETE,DELETE),
// SPACE=(4000,(1000,700),,,ROUND),
// UNIT=SYSDA
//DSNUPROC.SYSUT1 DD DSN=&&SYSUT1,
// DISP=(NEW,DELETE,DELETE),
// SPACE=(4000,(5000,2000),,,ROUND),
// UNIT=SYSDA
//DSNUPROC.SYSREC DD DSN=XXXX.LOAD.TABLA,DISP=SHR
//DSNUPROC.SORTOUT DD DSN=&&SORT1,UNIT=SYSDA,
// SPACE=(4000,(5000,2000),,,ROUND)
//SYSIN DD *
1. Vamos a ver en primer lugar el caso ms sencillo, con un fichero de carga que tenga el
mismo formato que la tabla:
//SYSIN DD *
LOAD
A continuacin tendramos varias opciones:
//*Si vamos a aadir registros
RESUME YES
INTO TABLE TBPRU00
LOG NO NOCOPYPEND
/*
//*Si vamos a reemplazar registros (se borrarn todos los que haya)
RESUME NO REPLACE
INTO TABLE TBPRU00
LOG NO NOCOPYPEND
/*
Utilizamos la opcin RESUME para indicar si vamos a cargar datos en una tabla vaca o no:
RESUME YES: La tabla no est vaca, aadimos los registros de nuestro fichero.
RESUME NO: La tabla est vaca. Por si no lo estuviese, indicamos con REPLACE que
reemplace los registros existentes por los de nuestro fichero.
La opcin NOCOPYPEND se utiliza para quitar el estado COPY de la tabla y que quede
accesible despus de la LOAD.
2. Para el caso en que el fichero no tenga el mismo formato que la tabla tendramos un
paso de JCL similar, pero despus de indicar el nombre de la tabla, indicaramos para cada
campo de la tabla, las posiciones que tiene el mismo campo en el fichero, y le daramos el
formato adecuado.
Vamos a suponer que nuestra tabla tiene el siguiente formato:
CAMPO1 S9(9) COMP-3.
CAMPO2 X(30).
CAMPO3 X(60).
CAMPO4 DATE
CAMPO5 S9(9) COMP-3.
Y que nuestro fichero tiene este otro:
Descripcin campo
CAMPO1 PIC S9(9) COMP-3.
CAMPO2 PIC X(2).
CAMPO3 PIC X(1).
CAMPO4 PIC X(10).
CAMPO5 PIC 9(8).
Posicin
1
6
8
9
19
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=4,DEST=JESTC3
//SYSTSIN DD *
DSN SYSTEM(DSN1)
-START DB(DBPRU) SPACE(TSPRU00) ACCESS(FORCE) <--tablespace -START DB(DBPRU)
SPACE(INPRU001) ACCESS(FORCE) <--ndice /*
Poner tablespace/ndices a UT (slo permite acceder a la tabla a las utilitys)
//************************************************
//* STO: STOP STA: START
//******************************************************
//DSNTIAD1 EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM (DSN1)
-STO DATABASE(EXAMP001) SPACENAM(EXAMPTLF)
-STA DATABASE(EXAMP001) SPACENAM(EXAMPTLF) ACCESS(UT)
-STO DATABASE(EXAMP001) SPACENAM(IXAMPTLF)
-STA DATABASE(EXAMP001) SPACENAM(IXAMPTLF) ACCESS(UT)
END
/*
Poner tablespaces/ndices a RW
//*************************************************
//* REALIZA UN START DE LECTURA/ESCRITURA SOBRE LA TABLA
//*******************************************************
//ARRANGEN EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=4,DEST=JESTC3
//SYSTSIN DD *
DSN SYSTEM (DSN1)
-STA DATABASE(EXAMP001) SPACENAM(EXAMPTLF) ACCESS(RW)
-STA DATABASE(EXAMP001) SPACENAM(IXAMPTLF) ACCESS(RW)
END
/*
Es recomendable hacer siempre una descarga previa, por lo que pueda pasar :P
UNLOAD
La utilidad "UNLOAD" sirve para realizar "descargas" de informacin de tablas.
La estructura general de un paso de UNLOAD sera algo as:
//*=================================================*
//* DESCARGA DE LA TABLA TBPRU00 *
//* Donde SYSPRINT contendr mensajes de error
//* SYSPUNCH las sentencias de LOAD para una posterior
//* recarga de datos
//* y SYSRECnn es el fichero donde guardaremos la informacin
//*=======================================================*
//UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DSN1)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) LIB('LIBRERIA.DE.TU.INSTALACION')
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*
//SYSREC00 DD DSN=XXXX.UNLOAD.TBPRU00,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(100,50),RLSE)
//SYSIN DD *
En la SYSIN escribiremos la query para seleccionar los datos que queremos descargar. Por
ejemplo:
SELECT *
FROM DSN1.TBPRU00 <-- El prefijo cambia segn la instalacin WHERE CAMPO1 = 112 ORDER BY
CAMPO2 ;
Esta SELECT se puede complicar tanto como queramos (SUBSELECTs, JOINs, etc).
Por supuesto, lo mejor en estos casos es buscar un JCL de carga o descarga que ya exista
en tu entorno de explotacin, y adaptarlo a tus necesidades ^^