Vielleicht auch noch ein paar Gedanken:
* was hat die Tabelle beim Attribut REUSEDLT hinterlegt? (DSPFD)
Bei *NO wird immer am Tabellen-Ende hinzugefügt.
Bei *YES sucht er den nächsten freien Platz
* Hast du schon den DB-Monitor gestartet?
Wieviele "Hard-Open" zur Tabelle gemacht?
Falls er (aus was für einen Grund auch immer) öfters ein Hard-Open machen muss, stimmt was grundsätzlich nicht.
* Schon probiert mit Commitment Control zu arbeiten?
Also das ATOMIC weg lassen und im aufrufer Programm Commit Steuerung aktivieren.
Dann läuft der Trigger im gleichen Isolation Level wie der Aufrufer.
Hat den Vorteil dass man sich I/O ersparen kann wenn man am ende erst ein COMMIT absetzt und dadurch mit größeren Blöcken auf die Disk schreibt.
* Probier mal MODE DB2ROW statt DB2SQL

lg Andreas