Nun, wird auch immer der selbe SQL wieder verwendet?
Sobald du mit dynamischen SQL's umgehst und ggf. die Where-Klausel anpasst wird durchaus die Datei noch mal geöffnet, aber wie in der Anzeige ersichtlich trotzdem auf einer Datei gelesen.
Ggf. könnte dies auch mit dem Callstack zusammenhängen, da der Open auf jeder Ebene durchgeführt wird.
Beispiel:
PGMA => LeseProgrammA
PGMA => PGMB => LeseProgrammA

Experimentiere mal mit der CloseCursor-Option (*ENDMOD).
Der CloseCursor schließt nur den SQL-Zugriff aber beim 2. Mal nicht den ODP.