[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2006
    Beiträge
    9

    Feldinhalt ermitteln

    Hallo ins Forum.

    Mein Problem ist folgendes:
    Ich habe in einem ILERPG-Pgm zwei Sätze von identischem Satzaufbau im Zugriff, ide ich Feldweise miteinander vergleichen möchte.
    Das die Anzahl der Felder groß ist und ich für eventuelle Dateierweiterungen gewappnet sein möchte, möchte ich den Feldabgleich dynamisch machen.
    Gibt es hierzu eine Möglichkeit?

    Bisher habe ich versucht über ein FFD-File die Feldnamen zu lesen. Aber dann habe ich nur Variablen mit den jeweiligen Feldnamen für die beiden Dateien als Inhalt. Vergleichen will ich aber den Inhalt der Felder, die durch diese Variablen definiert sind.

    Ich hoffe ich habe mich klar genug ausgedrückt ;-)

    LG Holger

  2. #2
    Registriert seit
    Sep 2003
    Beiträge
    236

    Vielleicht mit externen Datenstrukuren?

    Hallo,

    ich bin überhaupt nicht fit im ILE-RPG.
    Aber könnte man das Problem nicht mit zwei
    externen Datenstrukturen erledigen.

    Daten der 1 Datei in Datenstruktur 1.
    Daten der 2 Datei in Datenstruktur 2.

    Vergleich der Datenstrukturen.


    Vielleicht hilft dieser Gedanke.

    Gruss Thomas

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

    Du könntest 2 Variablen deklarieren mit *like wie die Formatnamen

    Code:
    D dsDatei1 E DS extname(Datei1) 
    D a$Datei1 E DS extname(Datei1) prefix(a$) 
    
    D dsDatei2 E DS extname(Datei2) 
    D b$Datei2 E DS extname(Datei2) prefix(b$) 
    ...
    C MOVE dsDatei1 a$Datei1 
    C MOVE dsDatei2 b$Datei2 
    C a$Datei1  IFNE b$Datei2
    ...
    
    So in der Art.
    Ich weiß allerdings nicht, ob es hier eine Größenbeschränkung gibt, so dass z.B. ab 2000 Zeichen es nicht mehr funktioniert.

    Gruß,
    Christian

  4. #4
    Registriert seit
    Jul 2006
    Beiträge
    11
    Hallo,

    @cbe: Damit würde ja der gesamte Record und nicht nur die Felder verglichen werden.

    Das mit der FFD Datei (API Call ginge auch) ist schon der richtige Weg. In der FFD-Datei steht die Feldpositionen drin sowie die Länge usw.

    FFD-Datei Satz für Satz lesen und dann einfach die Dateirecords über die Position und Länge miteinander vergleichen. So werden dann praktisch nur die Felder geprüft.

    Tschüß
    Benedikt

  5. #5
    Registriert seit
    Apr 2005
    Beiträge
    385

    Cool

    Kleiner Lösungsansatz von mir:

    per QCMDEXC

    DSPFFD *OUTFILE QTEMP/FFD

    FFD im Prg mit USROPn definieren

    CALL QCMDEDXC

    FFD öffnen und lesen

    Die beiden Dateien in DS schieben (wie ist egal, entweder wie oben beschrieben oder MOVEL SATZFORMAT DSPUFFER)

    IF (%SST(DSPUFF1:WHIBO:
    WHFLDB) <> %SST(DSPUFF2:WHIBO:
    WHFLDB)

    anstelle von WHFLDB musst du WHFLBD nehmen wenn das feld 'P' 'S' 'B' ist (Feldart)

    Wenn es ungleich ist hast du auch direkt den Feldnamen.

    So ungefähr muss es gehen

  6. #6
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    stimmt natürlich, dass ich alle Felder auf einmal vergleiche - ich bin gar nicht auf den Gedanken gekommen, dass Holger die Unterschiede _je Feld_ brauchen könnte.

  7. #7
    Registriert seit
    Jan 2003
    Beiträge
    759
    Hallo Christian,

    ich auch nicht, er hat ja von von identischem Satzaufbau gesprochen ;-)

    Gruß,
    Robert

  8. #8
    Registriert seit
    Jul 2006
    Beiträge
    9
    Vielen Dank!

    So funktioniert es und habe, was ich brauche: die Unterschiede auf Feldebene.

    Gruß
    Holger

Similar Threads

  1. PAGRTT aus Printer-File ermitteln
    By MatthiasK in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 10-01-07, 13:26
  2. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  3. Dateigröße ermitteln und anzeigen
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 08-01-07, 09:50
  4. nach Insert neu gen. Datensatz ermitteln
    By M.Kasper in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 25-08-06, 07:32
  5. SQL Select mit SUM aus einer DB
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 30-03-06, 12:33

Berechtigungen

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