zOs/SQL/EXCEPSE0

--select hex(' -@_#*%''') " -@_#*%'",
--     hex(' ') sp,hex('*') "*", hex('a') "a", hex('A') A, hex('0') "0"
--     from sysibm.sysDummyU;
with l1 as
( select  pri,
    db,  case when posstr(db,  '*') > 0
              then posstr(db,  '*') - 1 else 8 end dbLen,
    ts,  case when posstr(ts,  '*') > 0
              then posstr(ts,  '*') - 1 else 8 end tsLen,
    ix,  case when posstr(ix,  '*') > 0
              then posstr(ix,  '*') - 1 else 16 end ixLen,
    fun, case when posstr(fun, '*') > 0
              then posstr(fun, '*') else 8 end funLen,
    code, wert, info,
         char(right('000' || strip(char(pri)), 4) || ' '
         || translate(db || ts || ix || fun, x'01', '*') , 44) cat
    from gdb9998.except
),
l2 as
( select (((pri*100+dbLen) *10+tsLen) *100+ixLen) *10+funLen priLen,
  char(substr('abcdefghijklmnopqrstuvwxyz'
           || 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1 + pri,    1)
     ||substr('abcdefghijklmnopqrstuvwxyz', 1 + dbLen,  1)
     ||substr('abcdefghijklmnopqrstuvwxyz', 1 + tsLen,  1)
     ||substr('abcdefghijklmnopqrstuvwxyz', 1 + ixLen,  1)
     ||substr('abcdefghijklmnopqrstuvwxyz', 1 + funLen, 1), 5) priTot,
        l1.*
  from l1
),
l3 as
( select char(priTot || db || ts || ix || fun, 50) cat, l2.*
      from l2
),
l4 as
( select char(
         right('000' || strip(char(pri)), 4) || ' '
         || translate(db || ts || ix || fun, x'00', '*') , 50) cat,
         l1.*
      from l1
)
select e.*, s.*
     from sysibm.systablespace s, l1 e
     where s.dbName = 'DGDB9998' and
         e.cat = (select max(cat) from l1 f where
                      left(f.db, f.dbLen) = left(s.dbName, f.dbLen)
                 and  left(f.ts, f.tsLen) = left(s.Name, f.tsLen)
                 and  f.ix = ''
                 and  f.fun like 'GB%'
                 )
  order by cat