-
LIKEDS / QUALIFIED -> Werte von Datei in Struktur
Ich habe folgendes Problem.
In einem alten Programm sind Felder von verschieden Dateien zu einer Struktur zusammen gefasst. nur bei einer Änderung der Struktur werden die entsprechenden Werte in den Dateien geupdatet. Jetzt sollen neue Felder aus den Dateien hinzukommen. Diese müssen aber logisch zusammen gefasst hinzugefügt werden.
Beispiel:
Alte Struktur:
VARI001 100 100
VARI002 101 101
VARI006 102 102
VARI.....
VARI999 199 199
VAR 100 199 DIM(999)
NAMEXXX 200 219
PLZ 220 226
......
FELDER 200 459
Neue Struktur:
VARI001 100 100
VARI002 101 101
VARI003 102 102 Neu
VARI006 103 103
VARI.....
VARI999 199 199
VAR 100 199 DIM(999)
NAMEXXX 200 219
PLZ 220 226
.......
FELDER 200 459
Ich möchte jetzt die logisch zusammen gehörigen Bereiche der großen Datenstruktur in kleine Datenstrukturen unterbringen und dann diese durch QUALIFIED und LIKEDS zusammenführen. Dies klappt soweit dass ich die Strukturen verbinden kann. Die Gesamtstruktur weist aber keine Werte aus der Datei auf.
Mache ich etwas falsch?
Gibt es eine bessere Methode?
-
Qualified
Hallo,
ich bin nicht ganz sicher, ob ich Dein Problem richtig verstanden habe.
Aber in dem Moment, in dem Du mit qualified arbeitest, ist der Name nicht mehr FELD1 sondern DATENSTRUKTUR.FELD1.
Was hälst Du davon eine Datenstruktur über diese kleinen Datenstrukturen zu legen?
PHP-Code:
D Adresse DS Qualified based(DummyPtr)
D Vorname 20A
D Name 20A
D Strasse 20A
D PLZ 6P 0
D Ort 20A
D KundenInfo DS qualified
D KundenNr 10A
D LieferAdresse likeDS(Adresse)
D RechnungsEmpf likeDS(Adresse)
D Hauptverwalt likeDS(Adresse)
D LieferantInfo DS likeDS(KundenInfo)
*---------------------------------------------------------
/Free
KundenInfo.LieferAdresse.Ort = 'FRANKFURT';
LieferantInfo.LieferAdresse.Ort = 'MUENCHEN';
/End-Free
Birgitta
-
Das ist nicht das Problem.
Ich möchte das die Daten durch die Werte aus der Datei gefüllt werden. In den einzelnen Strukturen sind diese Daten auch vorhanden. Um aber einen Vergleich von Daten einem Update vom Benutzer und Daten nach der Veränderung durchführen zukönnen möchte ich die verschiedenen Strukturen zu einer Struktur zusammenfassen. Das gelingt auch. Wenn ich aber die gesammte "große" Datenstruktur anspreche enthält dies nicht die Werte aus der Datei. Ziel des ganzen ist es das ich eine Struktur habe die die ursprünglichen Werte beinhaltet und eine Struktur mit den geänderten Werten. Diese sollen dann verglichen werden. hat sich dann an den Werten etwas geändert soll der Satz in der Datei geupdatet werden.
D Adresse DS Qualified based(DummyPtr)
D Vorname 20A
D Name 20A
D Strasse 20A
D PLZ 6P 0
D Ort 20A
D VAR DS Qualified based(DummyPtr)
D VAR001 20A
D VAR002 20A
D VAR003 20A
D VORHER DS qualified
D LieferAdresse likeDS(Adresse)
D Varianten likeDS(VAR)
C* Struktur NACHHER wie VORHER aufgebaut
C LIKE VORHER NACHHER
C VORHER IFEQ NACHHER
C MOVEL(P) NACHHER VORHER
C UPDATE DATEI
C ENDIF
Datenstruktur VORHER wird durch Werte aus Datei gefüllt.
-
Dateifelder sind Einzelfelder, die NICHT per Qualified angesprochen werden. D.h., der Feldname der Datei ist nicht mehr identisch zum Feldnamen der Struktur !
Beispiel siehe Birgitta:
FELD1 <= Deteifeld
Struktur.FELD1 <= eigenes Feld der Struktur
Struktur2.FELD1 <= anderes Feld, da andere Struktur
Dein Problem kannst du nur mit Einzel-Move's lösen !
Oder du definierst eben 2 Strukturen:
d DS1 ds extfile(myfile)
d DS2 ds exfile(myfile) prefix(d2)
Durch den Read wird DS1 gefüllt, durch "eval DS2 = DS1" kannst du diese retten und anschließend die Einzelfelder vergleichen.
Qualified geht nicht für Dateien, da diese nicht in Strukturen verarbeitet werden. Erst durch eine Struktur mit identischen Feldnamen erreicht man die Verarbeitung als Struktur.
Macht man dies nicht, sind die Felder ja trotzdem ansprechbar und zwar so als ob man sie als Single-Felder definiert hätte:
D FELD1 S ...
-
Nachtrag:
Da in RPG ein Feld immer nur einmal vorkommt, kannst du das, was du vorbereitet hast doch verwenden:
D Adresse DS
D Feld1 30
D Feld2 30
:
:
D SVAdresse ds likeds(Adresse) qualified
In die Struktur Adresse werden die Daten beim Lesen übertragen.
Per EVAL kannst du nun die Strukturen sichern (eben nicht jedes Feld einzeln) und so anschließend die Strukturen vergleichen.
Es gibt nun das Feld "Feld1" als auch das Feld "SVAdresse.Feld1".
Similar Threads
-
By codierknecht in forum NEWSboard SAP
Antworten: 32
Letzter Beitrag: 09-02-18, 13:00
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 29-11-06, 18:07
-
By jogisarge in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 15-05-06, 13:47
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 17
Letzter Beitrag: 11-05-06, 14:57
-
By PGMR in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 15-06-05, 15:37
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