trigger iformation is stored in the catalog tables systriggers and systrigbody
The actual triggerbody is stored in the records where the datakey is 'D' (trigger heading or 'A' = trigger body. I tried something like this and it began to look good. You might have to change the query some more.
select a.data || b.data
from systrigbody a, systrigbody b
where a.datakey = 'D'
and b. datakey = 'A'
and a.trigid = b.trigid
systriggers stores the tabid -> unique table id in systables.
This way you can build a qry that represents all te triggers of one table.
What is your problem with locks? dbschema locks the database exclusively while unloading the schema. This is neccessary to be sure to unload the entire DDL in a correct manner.
If you want to unload the procedures, select from sysprocbody only those records where the datakey = 'T' and add the seqnumbers.
In regards of you backup problem. IBM advises to upgrade to IDS 9.40. This version does not have those limits anymore. Another thing you can try is using onbar instead of ontape. only ontape has the limits.