[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    16

    Frage zum Thema "Satzsperren"

    Hallo,

    eines meiner Dialogprogramme besteht aus mehreren einzelnen Programmen welche als Module gewandelt und anschließend zu einem Programm gebunden wurden.

    Jetzt habe ich folgendes Problem: Das erste Modul liest einen Satz zur weitern Bearbeitung ein und sperrt diesen, vor jedem Modul wechsel muss ich dann den Satz wieder freigeben, um ihn dann wieder zu sperren. Genau in dem kurzen Zeitraum kann ein anderes Programm den Satz sperren, was eigentlich nicht sein sollte.

    Gibt es eine Möglichkeit, dass die zu einem Programm vereinten Module einen Satz gemeinsam nutzen können ohne den Datensatz vor jedem Modul wechsel freizugeben und wieder zu sperren?

    Danke für Eure Hilfe!

    Joe

  2. #2
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Hallo Joe,

    die Wahrscheinlichkeit dass ein anderer Job beim Modulwechsel dazwischenkommt dürfte gar nicht so gering sein, da idR. bei Satzsperre eine gewisse Zeit gewartet wird, bis die Datei frei ist.

    Ob es eine modulübergreifende Sperre gibt weiß ich leider nicht.
    Evtl. kannst Du den Dateizugriff in ein eigenes Modul auslagern und nur noch darüber lesen/schreiben?

    Gruß
    Christian

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    62
    Ich möchte nur 2 Begriffe in den Raum stellen:
    "Shared Open" und "Commitment"


    Gruß
    Z

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Shared Open hilft da auch nur bedingt (OVRDBF/CHGPF ... SHARE(*YES).

    Hier kommt es insbesonders auf die Openart des 1. Programmes an.
    Öffnet das 1. Programm die Datei Input, kann das folgende Programm die Datei auch nur noch Input eröffnen obwohl ggf. mit Update definiert ist.
    Gemerkt wird das aber erst, wenn denn dann tatsächlich ein Update/Write erfolgt.
    Desweiteren kann der aktuelle Satzzeiger durch untergeordnete Programme verschoben werden.
    Liest das 1. Programm einen Satz mit Sperre und das das Unterprogramm dann ohne oder einen ganz anderen Satz, stimmt eben der Satzzeiger nicht mehr.

    Hier empfielt sich doch eher die Verwendung eine "File-Handler's" der diese Operationen vornimmt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Sep 2006
    Beiträge
    16
    Hallo,

    d.h. ich muss die Lese-/Schreibzugriffe in ein eigenes Modul auslagern, damit ich das Problem in den Griff bekommen kann.

    Sollte man die IO-Operationen mittels Modul oder Serviceprogramm einbinden?

    Gibt es ev. Beispiele für derartige Funktionen?


    Danke!

    Joe

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Anmerkung:

    Die Alternative ist die Übergabe der Satzstruktur als Parameter, so dass das Modul nicht selber nochmal lesen muss.

    Ein Filehandler löst allerdings Design-Probleme nicht, da ja ggf. jedes Modul in der Aufruf-Kette wiederum einen anderen Satz der selben Datei lesen kann und somit auf bestimmte Informationen dann kein Verlass ist.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    Commit Steuerung ermöglicht die Festlegung des Sperrverhaltens. Bei repeatable read (as400 nennt das auch all) bleiben gelesene Sätze bis zum Transaktionsende (commit oder rollback) gesperrt.

    mfg

    Dieter Bender

    Zitat Zitat von CrazyJoe Beitrag anzeigen
    Hallo,

    eines meiner Dialogprogramme besteht aus mehreren einzelnen Programmen welche als Module gewandelt und anschließend zu einem Programm gebunden wurden.

    Jetzt habe ich folgendes Problem: Das erste Modul liest einen Satz zur weitern Bearbeitung ein und sperrt diesen, vor jedem Modul wechsel muss ich dann den Satz wieder freigeben, um ihn dann wieder zu sperren. Genau in dem kurzen Zeitraum kann ein anderes Programm den Satz sperren, was eigentlich nicht sein sollte.

    Gibt es eine Möglichkeit, dass die zu einem Programm vereinten Module einen Satz gemeinsam nutzen können ohne den Datensatz vor jedem Modul wechsel freizugeben und wieder zu sperren?

    Danke für Eure Hilfe!

    Joe
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Frage zum Befehl STRPCCMD
    By stoerfang in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-01-13, 10:27
  2. Frage zu WDSC bzw. CODE400
    By Mr.iSeries in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 02-09-08, 10:16
  3. SQL Frage
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 24-01-07, 19:17
  4. Frage zu QZDFMDB2
    By Freezer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 23-10-06, 21:02
  5. CA und VPN (die nn. Frage dazu)
    By malzusrex in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-08-06, 17:12

Berechtigungen

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