PDA

View Full Version : logische Datei über zwei phys. Dateien???



mott
21-02-03, 11:37
Hallo!

Ich habe zwei Dateien über die ich eine logische legen will. Mein Problem jedoch ist, dass ich Keyfelder aus beiden Dateien benötigt und dies unterstützt DDS nicht!?. OPNQRYF kommt auch nicht in Frage, da die Dateien sehr groß sind. Bleibt (vielleicht?) nur mehr SQL übrig.
Was muss ich alles machen (View erstellen, Index erstellen, ...), damit ich mit ILE RPG diese Datei verwenden kann. Ich möchte aber kein embedded SQL vewenden - wenn dies möglich ist.

Vielen Dank im voraus für eure Antworten!
Michi

SBaum
21-02-03, 14:26
Hallo Michi,

das müßte doch mit einem join-File gehen.
DDS-Quelle:
A R JREC JFILE(DAT1 DAT2)
A J JOIN(DAT1 DAT2)
A JFLD(FLD1 FLD1)
A JFLD(FLD2 FLD2)
A FLD1 JREF(1)
A FLD2 JREF(1)
A FLD3 JREF(1)
A FLD4 JREF(1)
A FLD5 JREF(1)

oder wo sind sonst die Probleme beim join-File??

Gruß
Stefanie

Fuerchau
22-02-03, 14:57
Also: Eine PF wird von der DDS immer erst mal als Datei ohne Key verstanden.
Der Key auf der PF ist zu sehen, wie eine separate LF.

Um 2 PF's zu verbinden, gibt man halt, wie oben beschrieben (JFILE, JOIN, JFLD), die Beziehung zwischen den PF's an.
Anschließend die Felder, wo man nur bei Namensgleichheit den JREF(n) angeben muss.

Problematisch wirds beim Key.
Wenn ein Key benötigt wird, sollten alle Felder aus der 1.Join-Datei kommen,
Ist das nicht der Fall muss DYNSLT angegeben werden.

holly
26-02-03, 11:25
Hallo Michi,
Zu Deinem Satz:"Ich habe zwei Dateien über die ich eine logische legen will. Mein Problem jedoch ist, dass ich Keyfelder aus beiden Dateien benötigt und dies unterstützt DDS nicht!?.", eine kurze Anmerkung:
DDS unterstütz dies sehr wohl. Logische Datei mit mehreren Satzformaten! Die Keyfelder müssen vom gleichem Format(Datenart,Länge,Dezimalstellen) sein, wenn sie auf gleicher Ebene stehen. Keyfelder die in einem Satzformat nicht vorkommen, müssen mit K *NONE kodiert werden. Am besten einfach mal das DDS-Handbuch bemühen ist dort gut erklärt.
R RECORD1 PFILE(PF1)
.
.
K FELD1
K FELD2
K FELD3

R RECORD2 PFILE(PF2)
..
..
K FIELD1
K *NONE
K FIELD3
K FIELD4

Gruss Holger

Proggi
03-04-08, 14:27
Also: Eine PF wird von der DDS immer erst mal als Datei ohne Key verstanden.
Der Key auf der PF ist zu sehen, wie eine separate LF.

Um 2 PF's zu verbinden, gibt man halt, wie oben beschrieben (JFILE, JOIN, JFLD), die Beziehung zwischen den PF's an.
Anschließend die Felder, wo man nur bei Namensgleichheit den JREF(n) angeben muss.

Problematisch wirds beim Key.
Wenn ein Key benötigt wird, sollten alle Felder aus der 1.Join-Datei kommen,
Ist das nicht der Fall muss DYNSLT angegeben werden.

Hi,

ich muss dieses Thema nochmal aufgreifen. Und zwar habe ich jetzt das gleiche Problem:

JFILE(PF1 PF2)
J JOIN(PF1 PF2)
JFLD(PF1_FLD1 PF2_FLD1)

... (hier sind die Felder definiert)

K PF1_FLD2
K PF2_FLD2

Die rot-markierte Zeile meckert der Compiler an, Fehlercode:

* CPD7986 30 12 Nachricht . . . : Schlüsselfeld nicht aus erster Datei im Schlüsselwort JFILE:

Ich habe das auch mit DYNSLT versucht, gleiche Fehlermeldung. DYNSLT hat glaube ich nur Auswirkungen bei SELECT/OMIT

Gibt es hierfür eine Lösung?

Fuerchau
03-04-08, 15:47
Von DDS wird das leider nicht unterstützt.
Hier musst du entweder SQL mit "Order by" (in einer View geht das auch nicht) oder eben OPNQRYF verwenden:

Specifying key fields from different files (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/dbp/rbafokfdf.htm?resultof=%22%6b%65%79%22%20%22%66%69 %65%6c%64%22%20%22%6a%6f%69%6e%22%20%22%6a%6f%69%2 2%20)

Proggi
04-04-08, 08:48
Danke für Deine schnelle Antwort