Die Reihenfolge von CLOSE / OPEN in der Quelle spielt keine Rolle. Einzig der DECLARE CURSOR muss in der Quelle vor der ersten Nutzung mit OPEN / FETCH / CLOSE liegen.
Auch der PREPARE kann in der Quelle liegen wo er will.

Prüfe jedoch mal, ob der PREPARE nicht bereits einen SQLCOD <> 0 liefert, ich glaube hier liegt ggf. das Problem.
Der CLOSE schließt ggf. den CURSOR nicht tatsächlich (SQL-Optimizer), so dass der PREPARE fehlschlägt.

Wenn Du vor Aufruf des Programmes mittels "STRDBG UPDPROD(*YES)" den Debugmodus startest, kannst du im Joblog detailierte Meldungen sehen.

Mit ENDDBG beendest du den Modus.

Achte bei der Umwandlung mal darauf wie die Option CLOSQLCSR gesetzt ist.