noch etwas zur Ergänzung:

Die oben dargestellte RPGLE-Routine ist natürlich etwas konstruiert und dient mir als Test um den Fehler zu lokalisieren.

Wenn ich die SETLL-Anweisung entferne, lässt sich die SQL-Anweisung mit der UDF beliebig oft aufrufen.Allerding muss ich säter natürlich in der Produktivversion des Programms aus Dateien lesen können. Von daher ist es keine Lösung einfach Dateioperationen wegzulassen.

Wenn ich einen anderen JDBC-Treiber verwende (com.ibm.as400.access.AS400JDBCConnectionPoolDataS ource) kann ich die SQL-Anweisung auch beliebig oft aufrufen. Leider befinde ich mich aber mit dem Projekt aber in einem Integrationsumfeld mit verteilten Systemen und benötige daher die Möglichkeit der vertielten Transaktionen (two-phase-commit). Daher ist die Variante ohne den XA-Treiber auch keine Lösung.