Ein ENDCMTCTL ist nur möglich, wenn keine Transaktionen mehr geöffnet sind.
Per Commit wird allerdings bereits die nächste Transaktion gestartet (siehe DSPJOB, Commit-Definition).
Erforderlich ist, ein CLP vorzuschalten, dass den STRCMTCTL durchführt, das Programm aufruft und nach Rückkehr sämtliche Ressorcen freigibt (RCLRSC, RCLACTGRP), notfalls noch eine Rollback selber durchführt (für nicht abgeschlossene Transaktionen) und dann den ENDCMTCTL durchführt.

COMMIT = *ALL ist i.Ü. die schlechteste Wahl, da bereits beim Select Satzsperren gesetzt werden !
COMMIT = *CHG (ist sowieso Default) wäre das übliche.