[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post Fehler beim READ

    hoi *all

    mein Problem ist schnell erklärt. Mein Programm (RPGLE) hängt sich bei einem einfachen READ auf ein PF auf. Ich habe es mit CHAIN, READE und READ probiert. Immer das gleiche. Das PF mit Datensätzen gefüllt, also dran kanns nicht liegen. Der READ ist auch nicht in einer DO-Schleife.
    Ich kann mir die Ursache nicht erklären.

    Wisst ihr was die Ursache für einen solchen Fehler sein kann?

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    759

    Post

    Hallo Steven,

    was meinst Du mit "aufhängen", wie sehen PF und F-Zeilen des RPG's aus?

    Fragend, grüßend,

    Robert

  3. #3
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post

    Hallo Robert,

    sobald der READ kommt ist unten das X - System, also das System arbeitet. Dann geht aber nix mehr weiter. Ich kann nur noch per Systembefehl 2 beenden. Wenn ich eine Zeit lang nichts mache kommt: E/A Fehler erkannt.

    Die F-Bestimmung für díe PF(SAVEERG):

    FSAVEERG UF A E K DISK


    [Dieser Beitrag wurde von Steven am 29. Januar 2003 editiert.]

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    759

    Post

    Hi Steven,

    Du hast die Datei UF definiert, das riecht nach einem RCDLCK. Prüfe mal, ob ein vorheriger READ oder ein anderes Programm den Satz blockiert.
    Möglichkeiten: Nach einem Read ohne Update den Satz mit SETGT freigeben, oder, wenn kein Update beabsichtigt ist, die Datei IF definieren oder mit READ(N) lesen.

    Falls Du nicht weiterkommst, müsste ich mir mal die ganze SRC ansehen...

    Viel Erfolg, Robert

  5. #5
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post

    Danke. Es funzt jetzt wenn ich nach jedem READ ein SETGT mach. Aber warum eigentlich? Ich hab nämlich auch vor jedem READ ein SETLL gemacht. Da dürften doch keine Sätze blockiert sein.

  6. #6
    Registriert seit
    Jan 2003
    Beiträge
    759

    Post

    ... sobald eine Datei als UF geöffnet wird, bedeutet jeder Satzzugriff eine Sperre! Diese wird nur durch einen Update, Unlock oder eben durch eine Neupositionierung des Zeigers (SETxx) aufgehoben.

    Gruß Robert

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696

    Post

    Ich würde auf jeden Fall den Tipp von Robert annehmen und einen "read(n)" nehmen. Das spart vor allem unnötige Zugriffe und das Programm läuft schneller, z.B.:

    kyFile setll myfile
    do *hival
    kyfile reade(n) myfile
    if %eof(myfile) then
    leave
    endif
    :
    :
    enddo
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Post

    Man sollte vielleicht noch anmerken, dass die ganze Geschichte mit Unlock bzw. (N)-Erweiterung und SETGT nicht funktionniert, wenn mit Commitment Control gearbeitet wird.

    Bei der Commitment Control bleibt ein Satz bis zum nächsten Commit gesperrt. Auch über mehrere Programme hinweg, und wenn das Programm mit *INLR beendet wurde.

    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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696

    Post

    das hängt aber ganz von der verwendeten Commit-Methode ab.
    Standard ist *CHG und dann werden ausschließlich geänderte Sätze bis zum Commit gesperrt.
    Das reine Lesen, selbst mit Sperre und anschließendem Weiterlesen mit Sperre hebt die vorherige Sperre wieder auf.

    Das Lesen ohne Sperre durch andere Programme wird übrigens nicht verhindert, wenn dann mal ein Rollback durchgeführt wird, ist der Satz im anderen programm nicht mehr gültig.
    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

Similar Threads

  1. Os400 Fehler ?
    By Robi in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 04-11-06, 16:02
  2. Fehler bei SNDDST
    By sysopr in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 23-08-06, 14:10
  3. Finde Fehler bei SQL nich...
    By deni87991 in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 08-08-06, 13:50
  4. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58
  5. ODBC Verbindungs Fehler (-7778)
    By Hubert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 10-05-06, 09:41

Berechtigungen

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