[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    RPGLE SETLL READE auf Null-Values

    Hallo zusammen,

    ich bräuchte mal wieder Eure Hilfe.

    Ich habe eine Datei mit CREATE TABLE erzeugt. Darin befindet sich ein Datumsfeld bei dem NULL-Values erlaubt sind.

    1. Ich war etwas überrascht dass diese bei der Sortierung am Ende stehen. Aber das scheint ja so zu sein.

    Jetzt wollte ich auf meinen Index (Status DECIMAL 2,0 und eben das Datum) ein SETLL und READE machen damit ich alle bekomme die NULL sind

    ist ILE-RPG nicht free

    Schlüsselliste (Schlüsselfelder sind auch die Dateifelder)
    K2MAIN_S_WD klist
    kfld Status
    kfld Datum

    eval Status = 13
    eval Datum = *loval

    K2MAIN_S_WD setll MAIN_S_WD

    do *hival

    K2MAIN_S_WD reade MAIN_S_WD
    if %eof
    leave
    endif

    enddo

    Bekommt er sofort EOF obwohl dass es den Wert gibt und der ist auch NULL das sehe ich über UPDDTA

    Wie muss ich lesen damit ich all Sätze die in Datum NULL haben bekomme?

    Selbst als ich vorher folgendes gemacht habe

    eval Status = 13
    Status setgt MAIN_S_WD
    Status readpe MAIN_S_WD
    if %eof
    goto EndPgm
    endif

    K2Main_S_WD setll Main_S_WD

    do *hival
    K2MAIN_S_WD reade MAIN_S_WD
    if %eof
    leave
    endif

    enddo

    endpgm tag
    eval *inlr = *on

    Bekommt er innerhalb der Schleife sofort einen EOF obwohl er die Werte ja oben außerhalb der Schleife selbst gelesen hat

    Viele Grüße Harald

  2. #2
    Registriert seit
    Jul 2002
    Beiträge
    218
    Hallo Harald,

    gibt es mehrere Datensätze mit dem gleichen Schlüssel ?
    Versuche mal mit Teilschlüssel (ohne Datum) weiter zu lesen.

    LG
    HaJo

  3. #3
    Registriert seit
    May 2004
    Beiträge
    444
    Wenn ich aus dem K2MAIN_S_WD reade einen STATUS reade mache innerhalb der Schleife, dann liest er den ersten Satz aus der Datei mit Status 13. Also er positioniert anscheinend beim SETLL davor K2Main_S_WD auf den ersten Satz und nicht vor die NULL-Values. Kapier ich nicht. Ich habe jetzt auch mal noch einen %nullind(Datum) = *ON vor den SETLL gemacht. Aber gleiches Ergebnis.

    In meinem Programm oben habe ich im DEBUG gesehen dass er beim Status SETGT und STATUS READPE auch wirklich im Datum 0001-01-01 stehen hatte und er hat ihn ja auch gelesen, dann kann er doch wenn ich genau mit diesen WErten einen SETLL und READE mache nicht %EOF bringen denn er hat sie ja gerade zuvor gefunden

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    832
    Hallo zusammen,

    bitte jetzt nicht missverstehen.

    Aber SQL Tabelle mit RPG . ( Geht weiß ich )

    Trotzdem
    SQL bleibt SQL und so etwas macht man mit SQL und nicht mit RPG .

    Gruß
    Michael

  5. #5
    Registriert seit
    May 2004
    Beiträge
    444
    Hallo mk,

    mache ich auch überwiegend. Aber ich denke es sollte trotzdem funktionieren.

  6. #6
    Registriert seit
    May 2007
    Beiträge
    295
    Hallo. Vielleicht hilft dir folgender Link weiter:
    https://www.rpgpgm.com/2016/03/handl...ll-in-rpg.html
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Nur mal so eine Frage:
    Hast Du Dein Schlüssel-Feld auch mit %NULLIND() auf *NULL gesetzt?
    Code:
    %NullInd(KeyName) = *ON;
    ... Mit NULL-Werten zu arbeiten ist sowohl mit SQL als auch RPG aufwändig. Es muss separat geprüft werden, ob eine Spalte einen NULL-Wert enthält oder nicht (%NULLIND, IS NULL, Indikator-Variable).

    Birgitta
    Birgitta Hauser

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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da NULL's ja am Ende einsortiert wurden kannst du per *HIVAL mit dem Datum aufsetzen und ohne Datum mit READE weiterlesen.
    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

  9. #9
    Registriert seit
    May 2004
    Beiträge
    444
    @alle

    Vielen Dank für die Hilfe. So wie es Fuerchau am Ende geschrieben hat funktionierts.

    Viele Grüße Harald

Similar Threads

  1. ALWNULL und READE
    By Ottersberg in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 07-11-19, 10:02
  2. Umstellung von Chain auf setll + reade - seitdem dauernd Satzsperren
    By ncc1701e in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 15-05-18, 13:23
  3. Programmabsturz bei SETLL auf Join-Logische Datei
    By harkne in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-03-17, 12:53
  4. RPG SQL Insert VALUES(Datenstruktur)
    By ASFOURI in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 02-11-16, 12:34
  5. VALUES Check auf Inputfeld ignoriert
    By camouflage in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 18-08-15, 15:10

Berechtigungen

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