zOs/JCL/TKDALTER
//TKDALTER JOB (CP00,KE50),'DB2 REO', 00010000
// MSGCLASS=T,TIME=1440, 00020000
// NOTIFY=&SYSUID,REGION=0M,SCHENV=DB2 00030001
//*MAIN CLASS=LOG 00040000
//*
//* after reload in pta of tkd* tables
//* alter the restart of identity generated always
//* to the next higher value to avoid duplicates
//*
//S1 EXEC PGM=IKJEFT01,DYNAMNBR=200,TIME=99, 00020001
// PARM='%wsh'
//SYSPROC DD DSN=DSN.DB2.EXEC,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//OUT DD SYSOUT=*
//SYSTSIN DD DUMMY
//WSH DD *
$#@
call sqlConnect dbof
$;
$<:[table
tb col
oa1p.TKD301A1 id
oa1p.TKD302A1 id
oa1p.TKD303A1 id
oa1p.TKD304A1 id
oa1p.TKD305A1 id
oa1p.TKD337A1 id
$]
$forWith t $@[
max = sql2one('select max('$col') from' $tb)
parse upper value $tb $col with crU'.'tbU coU .
gen = sql2one('select generated_ATTR FROM SYSIBM.sysColumns' ,
"where tbCreator = '"crU"' and tbName = '"tbU"'" ,
"and name = '"coU"'")
if gen == 'A' then
genSql = 'always'
else if gen == 'D' then
genSql = 'by default'
else
call err "bad generated_attr '"gen"' in" $tb $col
say $tb 'max('$col') =' max 'generated' gen '->' genSql
if max \== m.sqlNull then $@[
call sqlUpdate , 'alter table' $tb 'alter column' $col ,
'set generated' genSql 'restart with' (max+1)
call sqlCommit
say $tb 'restart with' (max+1)
$]
call sqlCommit
$]