zOs/JCL/CZ025RD

//A540769W JOB (CP00,KE50),'DB2 REO',                                   00010000
//         MSGCLASS=T,TIME=1440,                                        00020000
//         NOTIFY=&SYSUID,REGION=0M,SCHENV=DB2                          00030001
//*MAIN CLASS=LOG                                                       00040000
//*
//DISC1    EXEC PGM=DSNUTILB,TIME=1440,
//           PARM=(DBOF,'A540769W'),
//           REGION=0M
//SYSPRINT   DD SYSOUT=*
//UTPRINT    DD SYSOUT=*
//SYSTEMPL   DD DISP=SHR,DSN=DBOF.DBAA.LISTDEF(TEMPL)
//DISCA      DD DSN=A540769.TMPCZ.CZ025.DISCA,
//             DISP=(NEW,CATLG,CATLG),DCB=(RECFM=VB,LRECL=5000),
//             SPACE=(TRK,(10,100))
//PUNCH      DD DSN=A540769.TMPCZ.CZ025.PUNCH,
//             DISP=(NEW,CATLG,CATLG),DCB=(RECFM=FB,LRECL=80),
//             SPACE=(TRK,(1,10))
//SYSIN DD *
LISTDEF LST INCLUDE TABLESPACE CZ08A1P.A025A PARTLEVEL
--- save everything before -------------------------------------------
COPY LIST LST COPYDDN TCOPYD
    FULL YES PARALLEL
    SHRLEVEL CHANGE

--- reorg tcz025A1 and discard old rows ------------------------------
REORG TABLESPACE CZ08A1P.A025A
    LOG NO
    SORTDATA
    COPYDDN(TCOPYD)
    SHRLEVEL CHANGE
    MAPPINGTABLE S100447.MAPTAB02
    MAXRO 300
    DRAIN ALL
    DELAY 1500
    TIMEOUT TERM
    UNLOAD CONTINUE
    WORKDDN(TSYUTD,TSOUTD)
    PUNCHDDN PUNCH
    SORTKEYS
    SORTDEVT DISK
    STATISTICS INDEX ALL KEYCARD
    REPORT NO UPDATE ALL
    DISCARDDN DISCA
    UNLDDN    TSRECD
  DISCARD FROM TABLE OA1P.TCZ025A1
    WHEN (CZ025011 <= '01.01.2001')
//*** if ok then load ************************************************
//       IF DISC1.RC = 0 OR DISC1.RC = 4 THEN
//LOAD1    EXEC PGM=DSNUTILB,TIME=1440,
//           PARM=(DBOF,'A540769W'),
//           REGION=0M
//SYSPRINT   DD SYSOUT=*
//UTPRINT    DD SYSOUT=*
//SYSTEMPL   DD DISP=SHR,DSN=DBOF.DBAA.LISTDEF(TEMPL)
//DISCA      DD DSN=*.DISC1.DISCA,DISP=OLD
//SYSIN DD *
LISTDEF LST INCLUDE TABLESPACE CZ08G1P.A025A PARTLEVEL
--- save everything before -------------------------------------------
COPY LIST LST COPYDDN TCOPYD
    FULL YES PARALLEL
    SHRLEVEL CHANGE
--- load discarded rows into tcz025g1 --------------------------------
LOAD DATA INDDN DISCA    LOG YES RESUME YES
    EBCDIC  CCSID(00500,00000,00000)
    WORKDDN(TSYUTD,TSOUTD)
  INTO TABLE
 "OA1P".
 "TCZ025G1"
 ( "CZ025001"
        POSITION(00007:00026) CHAR(020)
 , "CZ025002"
        POSITION(00027:00032) CHAR(006)
 , "CZ025003"
        POSITION(00033:00052) CHAR(020)
 , "CZ025004"
        POSITION(00053:00054) SMALLINT
 , "CZ025005"
        POSITION(00055:00074) CHAR(020)
 , "CZ025006"
        POSITION(00075:00094) CHAR(020)
 , "CZ025007"
        POSITION(00095:00120) TIMESTAMP EXTERNAL(026)
 , "CZ025008"
        POSITION(00121:00140) CHAR(020)
 , "CZ025009"
        POSITION(00141:00150) DATE EXTERNAL
 , "CZ025010"
        POSITION(00151:00176) TIMESTAMP EXTERNAL(026)
 , "CZ025011"
        POSITION(00177:00186) DATE EXTERNAL
 , "CZ025012"
        POSITION(00187:00188) CHAR(002)
 , "CZ025013"
        POSITION(00189:00191) CHAR(003)
 , "CZ025014"
        POSITION(00192:00251) CHAR(060)
 , "CZ025015"
        POSITION(00252:00256) CHAR(005)
 , "CZ025016"
        POSITION(00257:00316) CHAR(060)
 , "CZ025017"
        POSITION(00317:00317) CHAR(001)
 , "CZ025018"
        POSITION(00318:00321) INTEGER
 , "CZ025019"
        POSITION(00322:00325) INTEGER
 , "CZ025020"
        POSITION(00326:00329) INTEGER
 , "CZ025021"
        POSITION(00330:00333) INTEGER
 , "CZ025022"
        POSITION(00334:00335) CHAR(002)
 , "CZ025023"
        POSITION(00336:00337) CHAR(002)
 , "CZ025024"
        POSITION(00338:00397) CHAR(060)
 , "CZ025025"
        POSITION(00398:00398) CHAR(001)
 , "CZ025026"
        POSITION(00399:00424) TIMESTAMP EXTERNAL(026)
 , "CZ025027"
        POSITION(00425:00444) CHAR(020)
 , "CZ025028"
        POSITION(00445:00445) CHAR(001)
 )

--- save everything afterwards ---------------------------------------
COPY LIST LST COPYDDN TCOPYD
    FULL YES PARALLEL
    SHRLEVEL CHANGE
//       ENDIF
//*** if everything ok, delete discard and punch dsn *****************
//       IF LOAD1.RUN AND (LOAD1.RC = 0 OR LOAD1.RC = 4) THEN
//DELE1    EXEC PGM=IEFBR14
//DISCA      DD DSN=*.DISC1.DISCA,DISP=(OLD,DELETE)
//PUNCH      DD DSN=*.DISC1.PUNCH,DISP=(OLD,DELETE)
//       ENDIF