[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2001
    Beiträge
    34

    Post Programmierung

    Hallo an alle,
    hat jemand eine Lösung für ein anscheinend einfaches, aber vertracktes Problem?
    Ich habe in einer Datei
    KDNR ANR GEBO,
    aufsteigend sortiert Nach KDNR und ANR.
    Wenn KDNR Satz 2= KDNR Satz1, dann soll ANR Satz2 Nach GEBO Satz1 gespeichter werden.
    Wenn KDNR Satz 3=KDNR Satz2, dann ANR Satz3 nach GEBO Satz1 rechts neben die 1.Position und ANR Satz3 nach GEBO Satz2 u.s.w.
    Ist das überhaupt auf der AS400 programmierbar oder ist das besser auf dem PC machbar? Obwohl, da fällt mir eigentlich
    auch keine Lösung ein -außer der "per Hand"-Methode.
    Vielen Dank für einen Tipp.
    Gruß Helwo

  2. #2
    Registriert seit
    May 2002
    Beiträge
    1.121

    Question

    kannst du mir noch was über die feld größen erzählen ????

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo Helwo,

    was mich an Deinem Problem am meisten verwirrt ist "Rechts neben die 1. Position"

    Sollen die ANR's in unterschiedliche Felder, oder direkt in das Feld GEBO geschrieben.

    In beiden Fällen muss klar sein, dass sowohl die Anzahl der Felder als auch die Feldlänge nicht beliebig per Programm erweitert werden kann. (evt. Datenverlust!)

    Nur noch mal zum Verständnis.
    Soll das Ganze wie folgt aussehen:
    Ursprungs-Datei:
    KDNR ANR GEBO
    10 4711
    10 4712
    10 4713
    11 4810
    11 4812
    11 4819

    Nach Update:
    KDNR ANR GEBO
    10 4711 4712 4713
    10 4712 4713
    10 4713
    11 4810 4812 4819
    11 4812 4819
    11 4819

    Realisieren könnte man dies, indem man zwei Lesescheifen verwendet.
    1. Leseschleife für den Update
    2. Leseschleife zum Ermitteln des Strings für GEBO

    z.B.
    H DEBUG DECEDIT('0,') DATEDIT(*DMY.)
    FFileUP UF E K DISK
    FFileIP IF E K DISK rename(FileF: FileIF)

    D $$GEBO S Like(GEBO)
    D K$KDNR S like(KDNR)
    D K$ANR S like(ANR)

    C do *Hival
    C read (E) FILEF
    C if %EOF
    C leave
    C endif
    c exsr XGEBO
    C eval GEBO = $$GEBO
    C update (E)FILEF
    C enddo

    C eval *InLR = *on
    ************************************************** ********************************************
    C XGEBO BegSR

    C clear $$GEBO

    C KeyL Klist
    C Kfld K$KDNR
    C Kfld K$ANR

    C eval K$KDNR = KDNR
    C eval K$ANR = ANR

    C KeyL setgt FILEIF

    C Do *HiVal
    C K$KDNR reade FILEIF
    C if %EOF
    C leave
    C endif
    C eval $$GEBO = %TrimR($$GEBO) + ANR
    C Enddo

    C EndSR

    Du benötigst für diese Lösung entweder eine logische Datei mit dem gleichen Schlüssel wie die physische, oder Du überschreibst die physische Datei in einem vorgelagerten CL-Programm.
    (Die Überschreibung kann natürlich auch im RPG-Programm erfolgen, dazu müssen die Dateien allerdings explizit geöffnet werden. USROPN in den F-Bestimmungen)

    Der Quellcode ist nur beispielhaft und nicht getestet.
    Vielleicht hilft Dir das weiter

    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

  4. #4
    Registriert seit
    Jul 2001
    Beiträge
    34

    Post

    Hallo,

    bin erst heute wieder in meinem "Inhouse-Büro". Vielen Dank für Eure Antworten.

    1. Die Feldgrößen
    KDNR = 7 stellig
    ANR = 3 "
    GEBO = 60 "
    GEBO könnte theoretisch zu klein werden

    2. Du hast das Problem richtig erkannt.
    Danke für den Quellcode, werde das mal
    probieren.

    Gruß Helwo

Similar Threads

  1. Programmierung für Anfänger
    By i_new in forum NEWSboard Server Software
    Antworten: 9
    Letzter Beitrag: 18-12-06, 15:14
  2. HTML-PHP Programmierung für ISeries-Entwickler
    By mott in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 27-02-06, 13:15
  3. Socket Programmierung Linux AS400
    By THH in forum NEWSboard Linux
    Antworten: 2
    Letzter Beitrag: 01-02-06, 09:53
  4. Programmierung
    By Tommy in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 05-12-03, 14:59
  5. Programmierung iSeries (RPG)
    By Pictum in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 30-08-02, 12:38

Berechtigungen

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