Genau, probier ihn doch aus.
Es ist eine konzeptionelle Frage, wie damit umgegangen wird.
Da der Client ja keine Abfrage macht, sondern dein Server-Handler, so muss dieser die Transaktion starten und Beenden.
Bei ODBC/JDBC macht man das dann auf dem Connection-Objekt.
MyConnection.BeginTransaction();
MyConnection.CommitTransaction();
MyConnection.RollbackTransaction();
Je nach Treiberimplementation liefert das BeginTransaction ein Transaction-Objekt.
Dieses muss man dann den jeweiligen command-Objekten vor der Ausführung zuweisen und kann dann auf dem Transaction-Objekt ein Commit() oder Rollback() durchführen.
Für die Verbindung muss man bei der DB2 for i den Wunsch für Transaktionen per "...commit=*chg;" in der Verbindungsfolge angeben.

Manche DB's erlauben tatsächlich Transaktionen, was jedoch immer wieder zu Problemen führt, wenn eine UDF, eher einer Procedure, plötzlich einen Commit oder Rollback macht mit dem mein Programm dann Probleme bekommt.

Vielleicht hättest du ChatGPT mal nach "DB2 for i" gefragt, denn den "STart xxx" findest du schon nicht.

Alternativ kannst du auch eine Externe UDF machen, also in RPG. Diese bekommt eine eigene ACTGRP und somit eine neue Verbindung und eigene Transaktionen.