zOs/JCL/REOJCL
$#@
$= fun = r $** Funktion
$** r = reorgs ausführen
$** p = nur Preview der Reorgs
$** i = nur IEFBR14 statt reorg st
$** d = distribute test libs
$= mbr = QBLOB00 $** MemberPrefix (7 stellig) für listdef und lctl
$= dbSys = DP4G $** db2 subsystem
$= rz = RZ4 $** rz qualifier in DSNs
$= job = QREOJCL4 $** jobname
$= tstOut = 1
if \ $tstOut & $fun \== 'd' then $@[
$= lctl = $dbSys.DBAA.LCTL
$= lstdef = $dbSys.DBAA.LISTDEF
$= rexx = TSO.$rz.P0.USER.EXEC
$] else $@[
$= tstPre =- userid()'.TSTREO'
$= lctl = $tstPre.LISTDEF
$= lstdef = $tstPre.LISTDEF
$= rexx = TSO.$rz.P0.USER.EXEC
$= rexx =- userid()'.WK.REXX'
$]
$= sysTempl = $dbSys.DBAA.LISTDEF(TEMPL)
if $fun == 'd' then $@[ $** do real reorgs
$= pr =- userid()'.TSTREO'
say 'copying' $pr'/* to' $rz
call csmCopy $pr'.LISTDEF', $rz'/'$pr'.LISTDEF'
call csmCopy $pr'.SYSPRINT', $rz'/'$pr'.SYSPRINT'
call csmCopy $pr'.REOOUT', $rz'/'$pr'.REOOUT'
return
$] else if $fun == 'r' then $@[ $** do real reorgs
$=txt = reorg TS und IX
$=reoPgm = DSNUTILB
$] else if $fun == 'p' then $@[ $** do no reorgs only preview|
$=txt = preview only TS und IX reorgs
$=reoPgm = DSNUTILB
$] else if $fun == 'i' then $@[ $** do no reorgs only preview|
$=txt = iefBr14, no reorgs for TS und IX
$=reoPgm = IEFBR14
$] else
call err 'bad fun' $fun
$;
$>. fEdit() $@=/job/
//$job JOB (PD00,KE30,,SS00000000), 'DB2 REORG',
// MSGCLASS=T,TIME=1440,CLASS=M1,SCHENV=DB2ALL,
// NOTIFY=&SYSUID
//****** QR Reorg job from reoJcl *************************************
//* fun = $fun ==> $txt
//* job = $job
//* mbr = $mbr*
//* dbSys = $dbSys
//* lctl = $lctl
//* lstdef = $lstdef
//* rexx = $rexx
//*********************************************************************
$@[ if $tstOut then $@=[
//P00 EXEC PGM=IEFBR14
$] else $@=[
//P00 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEL 'DSN.SYSPRINT.$job' NVSAM PURGE
DEL '$lstdef.$job' NVSAM PURGE
IF MAXCC < 9 THEN SET MAXCC = 0
$] $]
//*
// IF P00.RC = 0 THEN
//* OBJEKTE AUS LISTDEF AUFLÖSEN
//P02 EXEC PGM=DSNUTILB,
// PARM='$dbSys,$job.PREVIEW'
//STEPLIB DD DSN=DB2@.$rz.P0.DSNLOAD,DISP=SHR
$@[ if $tstOut then $@=[
//SYSPRINT DD DISP=SHR,DSN=$tstPre.SYSPRINT($mbr)
$] else $@=[
//SYSPRINT DD DSN=DSN.SYSPRINT.$job,
// DISP=(NEW,CATLG)
$] $]
//UTPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTEMPL DD DISP=SHR,DSN=$sysTempl
//SYSIN DD DSN=$lstdef(OPTPREV),DISP=SHR
// DD DSN=$lstdef(${mbr}1),DISP=SHR
// ENDIF
//*
// IF RC < 9 THEN
//* SYSPRINT AUF SYSOUT UMKOPIEREN
//P03 EXEC PGM=IEBGENER
//SYSIN DD DUMMY
//SYSUT1 DD DSN=*.P02.SYSPRINT,DISP=SHR
//SYSUT2 DD SYSOUT=*
// ENDIF
//*
// IF RC < 5 THEN
//* RTS FÜR TABLESPACES CHECKEN, OUTPUT ERSTELLEN
//P04 EXEC PGM=IKJEFT01,
// DYNAMNBR=20
//SYSEXEC DD DSN=$rexx,DISP=SHR
//DDIN1 DD DSN=*.P02.SYSPRINT,DISP=SHR
//DDIN2 DD DSN=$lstdef(${mbr}1),DISP=SHR
$@[if $tstOut then $@=[
//DDOUT1 DD DISP=SHR,DSN=$tstPre.REOOUT(${mbr}T)
$] else $@=[
//DDOUT1 DD DSN=$lstdef.$job,
// DISP=(MOD,CATLG,CATLG),
// MGMTCLAS=COM#E005,
// RECFM=FB,LRECL=80
$] $]
//SYSTSIN DD *
%CHECKRTS $dbSys TS
//SYSIN DD DUMMY
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*,RECFM=F,LRECL=132
//SYSUDUMP DD SYSOUT=*
//PLIDUMP DD SYSOUT=*
// ENDIF
//*
// IF RC < 5 THEN
//* REORG FÜR TABLESPACES AUSFÜHREN
//P05 EXEC PGM=$reoPgm,
// PARM='$dbSys,$job.REORG'
//STEPLIB DD DSN=DB2@.$rz.P0.DSNLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//UTPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTEMPL DD DISP=SHR,DSN=$sysTempl
$=sysD = SYSIN
$@ if $fun \== 'r' then $@=[
//$sysD DD DSN=$lstdef(OPTPREV),DISP=SHR
$=sysD = $' '
$]
//$sysD DD DISP=SHR,DSN=*.P04.DDOUT1
// ENDIF
//*
// IF RC < 5 THEN
//* RTS FÜR INDEXE CHECKEN, OUTPUT ERSTELLEN
//P06 EXEC PGM=IKJEFT01,
// DYNAMNBR=20
//SYSEXEC DD DSN=$rexx,DISP=SHR
//DDIN1 DD DSN=*.P02.SYSPRINT,DISP=SHR
//DDIN2 DD DSN=$lstdef(${mbr}1),DISP=SHR
$@[if $tstOut then $@=[
//DDOUT1 DD DISP=SHR,DSN=$tstPre.REOOUT(${mbr}I)
$] else $@=[
//DDOUT1 DD DSN=$lstdef.$job,
// DISP=(MOD,CATLG,CATLG),
// MGMTCLAS=COM#E005,
// RECFM=FB,LRECL=80
$] $]
//SYSTSIN DD *
%CHECKRTS $dbSys IX
//SYSIN DD DUMMY
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*,RECFM=F,LRECL=132
//SYSUDUMP DD SYSOUT=*
//PLIDUMP DD SYSOUT=*
// ENDIF
//*
// IF RC < 5 THEN
//* REORG FÜR INDEXE AUSFÜHREN
//P07 EXEC PGM=$reoPgm,
// PARM='$dbSys,$job.REORG'
//STEPLIB DD DSN=DB2@.$rz.P0.DSNLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//UTPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTEMPL DD DISP=SHR,DSN=$sysTempl
$=sysD = SYSIN
$@ if $fun \== 'r' then $@=[
//$sysD DD DSN=$lstdef(OPTPREV),DISP=SHR
$=sysD = $' '
$]
//$sysD DD DISP=SHR,DSN=*.P06.DDOUT1
// ENDIF
//*
// IF ((ABEND) OR (P05.RC GT 4) OR (P07.RC GT 4)) THEN
//* TERM UTIL
//P08 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSIN DD DSN=$lctl(${mbr}2),DISP=SHR
//* DISPLAY DATABASE
//*
//P09 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSIN DD DSN=$lctl(${mbr}3),DISP=SHR
// ENDIF
$/job/