[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2008
    Beiträge
    43

    Dateidefinition in Prozeduren - Static - V6R1

    Hallo zusammen,

    zunächst einmal wünsche ich alles Gute für das neue Jahr!

    Mit V6R1 kann auch auf Prozedurebene die Definition von Dateien vorgenommen werden.
    Mit dem Schlüsselwort STATIC kann dabei dafür gesorgt werden, dass beim Beenden der Prozedur die Datei nicht implizit geschlossen wird.
    Vorteile: Lesezeiger bleibt erhalten, höhere Geschwindigkeit bei mehrfachem Verwenden der Prozedur, da der ständige Open und Close wegfällt, ...

    Leider werden Dateien, die mit STATIC definiert wurden, auch dann nicht geschlossen, wenn das Programm beendet wird. Man muss diese explizit schließen.

    Da man (meines Wissens nach) nur innerhalb der Prozedur Zugriff auf die Datei hat, müsste man in dieser implementieren, dass die Datei beim letzten Aufruf der Prozedur geschlossen wird. Das ist recht unschön.

    Wie geht ihr mit diesem Thema um?

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... static in lokalen procedures, ein typisches Beispiel für krummes RPG Design mit dem man sich Probleme holt, die man nicht haben müsste! Könnte man aber heilen mit Hilfe von CEE4RAGE

    D*B

    Zitat Zitat von hwalk Beitrag anzeigen
    Hallo zusammen,

    zunächst einmal wünsche ich alles Gute für das neue Jahr!

    Mit V6R1 kann auch auf Prozedurebene die Definition von Dateien vorgenommen werden.
    Mit dem Schlüsselwort STATIC kann dabei dafür gesorgt werden, dass beim Beenden der Prozedur die Datei nicht implizit geschlossen wird.
    Vorteile: Lesezeiger bleibt erhalten, höhere Geschwindigkeit bei mehrfachem Verwenden der Prozedur, da der ständige Open und Close wegfällt, ...

    Leider werden Dateien, die mit STATIC definiert wurden, auch dann nicht geschlossen, wenn das Programm beendet wird. Man muss diese explizit schließen.

    Da man (meines Wissens nach) nur innerhalb der Prozedur Zugriff auf die Datei hat, müsste man in dieser implementieren, dass die Datei beim letzten Aufruf der Prozedur geschlossen wird. Das ist recht unschön.

    Wie geht ihr mit diesem Thema um?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Jan 2008
    Beiträge
    43
    Vielen Dank für die Infos und Hinweise.

Similar Threads

  1. ODBC Verbindung V5R4 vs. V6R1 Performance Probleme
    By fighter3582 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 13-12-11, 09:11
  2. Java-Datenbank-Treiber JT400 unter V6R1
    By hartmuth in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 16-11-11, 13:34
  3. V6R1 SQL Prozeduren teilweise langsamer
    By Dschainers in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 24-03-10, 10:11
  4. Static Storage size zu groß
    By schatte in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 14-08-06, 14:18
  5. grundlegendes zu Modulen bzw. Prozeduren
    By stoerfang in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 16-06-06, 12:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •