Das Problem ist tatsächlich, dass du an den eigentlichen Close des Cursors via ODBC/JDBC so nicht drankommst.
Allerdings, wenn du unter Transaktionen (commit=*CHG) arbeitest, wird beim Commit/Rollback auch ein Cursor geschlossen, der nicht mit HOLD definiert wurde.
Commit ist allerdings nur möglich, wenn du das bei der Connection bereits angibst und BeginTransaction verwendest. Problematisch ist es dann, wenn die zu verarbeitenden Dateien ggf. nicht aufgezeichnet werden.

Als Alterative kann die Procedure auch eine Global temporary Table erstellen (liegt dann in QTEMP), die du dann mt einem 2. SQL ausliest.