Das Thema nennt sich Journalisierung.
Die Dateien müssen im Journal aufgezeichent werden.
Vor Aufruf der Prozedur muss ggf. STRCMTCTL durchgeführt werden.

Bei Fehlern in der Prozedur muss diese den SQLCODE bzw. SQLSTATE mit einem Fehlerwert besetzten.
Dadurch bekommt der Aufrufer einen entsprechenden SQLCOD zurück um zwischen COMMIT und ROLLBACK zu entscheiden.

Eine Stored Procedure / Function kann selber leider keinen Commit/Rollback auslösen, da sie im Kontext mit anderen Funktionen ja verwendet werden, die ggf. nichts von einander wissen.

Entscheider ist also ausschließlich der Aufrufer der Funktionen.
Wenn hier z.B. SQLCOD nicht ausgewertet und immer ein COMMIT durchgeführt wird hast du konzeptionell schlechte Karten.