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
$]