In der ILE-Programmierung werden Dateien in den lokalen F-Bestimmungen erst dann geschlossen, wenn die Aktivierungsgruppe in der das Programm oder Service-Programm, in dem sich die Prozeduren befinden geschlossen wird.
Verwendet man globale F-Bestimmungen werden die Dateien, wenn LR gesetzt ist bei Programm-Ende geschlossen. Der Grund für dieses unterschiedliche Verhalten liegt darin, dass Main-Procedures dem RPG-Zyklus unterliegen, während Prozeduren ohne Zyklus implementiert werden. Der RPG-Zyklus übernimmt das automatische öffnen und schließen der Dateien.

Wie geht Ihr damit um?
  1. Verwende ich fast ausschließlich embedded SQL (aber auch SQL lässt die Zugriffswege offen und schließt diese erst mit Beenden der Aktivierungsgruppe).
  2. Die Datei-Zugriffe erfolgen in eigenen Service-Programmen. Sofern native I/O verwendet wird, so sind diese Dateien überwiegend global definiert und werden User controlled geöffnet und geschlossen. Über (exportierte) Prozeduren können diese Dateien geöffnet und geschlossen werden, sofern gewünscht.
  3. Sofern Dateien lokal als F-Bestimmungen definiert werden, so werden diese ebenfalls user controlled geöffnet und geschlossen. Jede Prozedur hat einen optionalen Parameter, über den gesteuert werden kann, ob die Datei beim Verlassen der Prozedur geschlossen werden soll.


Birgitta