[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2011
    Beiträge
    2

    chain(e) und not %found

    Hallo zusammen,

    nachdem ich bisher sehr viele nützliche Informationen aus diesem Forum ziehen konnte, habe ich mich nun auch angemeldet. Vorab schonmal vielen Dank für die bisherigen Informationen.

    Nach 22 Jahren RPG I,II und III bin ich jezt auch dazu übergegangen neue Programme in ILE-Free zu schreiben (das zur Vorgeschichte).

    Nun habe ich aber ein leichtes Verständnisproblem mit dem CHAIN-Befehl.

    chain(e) %kds(X_RecKeys) DKSR;
    //
    select;
    when not %found(DKS); // Satz nicht gefunden
    Par_RtrnCode = 'N';
    when %error; // Satz gelockt
    Par_RtrnCode = 'L';
    other; // Satz vorhanden + frei
    Par_RtrnCode = ' ';
    endsl;

    Ist es richtig dass die Funktion "not %found" auch dann anspricht wenn der Satz gerade gelockt ist ? Im alten RPG gingen da zwei verschiedene Bezugszahlen an.

    Um euch die Schreibarbeit abzunehmen habe ich die Statements wie folgt umgestellt:

    chain(e) %kds(X_RecKeys) DKSR;

    select;
    when %status = 1218; // Satz gelockt
    Par_RtrnCode = 'L';
    when %error; // sonstiger Fehler
    Par_RtrnCode = 'N';
    other; // Satz vorhanden + frei
    Par_RtrnCode = ' ';
    endsl;

    Ich gebe zu, den Statuscode habe ich mir aus einem Eintrag von Brigitta abgeschaut .

    Meine Frage lautet nun: Bekomme ich so gelockte und nicht vorhandene Sätze getrennt ausgewiesen ? In der ersten Variante wurde immer ein "N" in das Feld Par_RtrnCode gestellt.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    %FOUND und %ERROR/%STATUS entspricht den früheren Bezugszanlen, d.h. %Found = HO, %ERROR/%STATUS = NI.
    Beide Built-In-Funktionen werden unabhängig voneinander versorgt.
    Nicht gefunden ist KEIN Fehler.

    Wenn Du den Source Code wie folgt änderst, erhälst Du alles:

    Code:
    If %status = 1218; // Satz gelockt
       Par_RtrnCode = 'L';
    ElseIf %error; // sonstiger Fehler
       Par_RtnCode = 'E';
    ElseIf Not %Found(File) //Nicht gefunden
       Par_RtrnCode = 'N';
    Else; // Satz vorhanden + frei
       Par_RtrnCode = ' ';
    endIf;
    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

  3. #3
    Registriert seit
    May 2011
    Beiträge
    2
    Vielen Dank für die prompte Antwort

Similar Threads

  1. "Environment variable not found"
    By Kampi4 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-10-06, 10:19
  2. IBM DB2 Client Configuration Assistant
    By srcdbgr in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 12-09-06, 14:37
  3. NOT NULL WITH DEFAULT
    By deni87991 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 04-08-06, 10:32
  4. Antworten: 3
    Letzter Beitrag: 06-06-06, 15:57
  5. DOW NOT %EOF
    By Marimari1009 in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 24-02-05, 13:08

Berechtigungen

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