Hallo,

ich habe eine Frage bezüglich Serviceprogramme und Speicher....
Wir sind gerade dabei alle Dateizugriffe (SQL-Zugriffe) in Serviceprogramme auszulagern.
Pro Stammdatei gibt es ein Serviceprogramme mit den entsprechenden Prozeduren (SELECT, WRITE, OPENCURSOR, FETCH usw..).

Der Datenaustausch zwischen dem Serviceprogramm und dem aufrufendem Programmen erfolgt über eine externe Datenstruktur (Aufbau wie entsprechende Datei).
Das Serviceprogramm übergibt bei Bedarf die komplette Datenstruktur (Datensatz) oder
wenn gewollt durch GETTER entsprechenden Felder...

Folgendes ist aufgefallen.
Werden Prozeduren aus dem Serviceprogramm das erste Mal aufgerufen, ist vor dem Datenzugriff die Datenstruktur im Serviceprogramm leer.
Nach dem Zugriff werden die Daten an das aufrufende Programm übergeben - dieses danach mit LR beendet. Es werden keine Aktivierungsgruppen beendet und die Bildschirmsession bleibt ebenfalls aktiv.

Nach einiger Zeit wird nochmal ein Programm aufgerufen, das sich von Prozeduren aus dem Serviceprogramm bedient. Dabei ist aufgefallen, dass die Datenstruktur im Serviceprogramm immer noch mit Daten aus dem ersten Zugriff gefüllt ist?!?
Liegt das daran, dass das Serviceprogramm nach dem ersten Aufruf im Speicher geblieben ist und gilt dieses innerhalb einer Session oder Systemübergreifend (was ja eigentlich nicht sein kann)??

Wird die Bildschirmsession zwischen den Aufrufen beendet bzw. nach LR ein "RCLACTGRP ACTGRP(*ELIGIBLE)" abgesetzt ist die DS im Serviceprogramm beim nächsten Aufruf leer...

Liegen wir da richtig mit unserer Vorgehensweise die Zugriffe auszulagern und muss man was Spezielles beachten - außer die DS vor jedem Zugriff zu clearen...

P.S.
Mir ist natürlich auch klar, dass bei einem internen Zugriff auf eine Datei (also ohne Serviceprogramm ) auch der letzte Datensatz im Speicher bleibt – aber nach LR ist alles wieder „sauber“.

Viele Grüße