-
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
-
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
-
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
-
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
-
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
-
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.
-
Hallo Christian,
ich auch nicht, er hat ja von von identischem Satzaufbau gesprochen ;-)
Gruß,
Robert
-
Vielen Dank! 
So funktioniert es und habe, was ich brauche: die Unterschiede auf Feldebene.
Gruß
Holger
Similar Threads
-
By MatthiasK in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 10-01-07, 13:26
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 08-01-07, 09:50
-
By M.Kasper in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 25-08-06, 07:32
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks