Anmelden

View Full Version : DDS in ILE RPG



Seiten : 1 2 [3] 4 5 6 7 8 9

Fuerchau
12-09-06, 09:28
Auch dem CLP kannst du Parameter übergeben:

PGM PARM(&VAR)

DCL &VAR *CHAR 10

Squall
12-09-06, 09:47
Auch dem CLP kannst du Parameter übergeben:

PGM PARM(&VAR)

DCL &VAR *CHAR 10

Oh ich habe mich wahrscheinlich nicht deutlich ausgedrückt. Meine Frage war ob und wie ich in RPG eine Datei(F-Bestimmung) Variabel definieren kann. Also das Programm bekommt eine char-Variable die den Dateinamen der Datei enthält, auf die zugegriffen werden soll.

Ist das möglich und falls ja wie?

Danke.

Martin

kuempi von stein
12-09-06, 10:03
Hello,

irgendwie werde ich das Gefühl nicht los, dass das alles viel einfacher wäre, wenn Du mal Dein konkretes Problem beschreiben würdest....

Zu Deiner letzten Frage:
Die Struktur einer DDS ist ja im Prinzip immer die gleiche.
Also 6 Stellen SourceSequenz, 6 Stellen Datum und 80 Stellen Daten.

Man kann nun ohne Probleme verschiedene Wege angehen, sowas mehr oder weniger variabel zu händeln.

Da wurden hier schon diverse gute Lösungsansätze gebracht.

Wenn Du im RPG eine DDS ansprechen willst, von der Du zur Wandlungszeit nicht den korrekten Namen hast, reicht ein einfaches OVRDBF vorher um den variablen Namen damit auf die im RPG fixierten Anweisungen zu verdrehen.

Das kannst Du entweder vorher per CLP machen oder auch innerhalb des RPG wenn Du die Datei Usercontrolled bearbeitest.

Musst Dir nur das aussuchen, was am einfachsten für Dich ist.

Lass uns doch mal an der konkreten Problematik teilhaben...

k.

Squall
12-09-06, 10:18
Hello,

irgendwie werde ich das Gefühl nicht los, dass das alles viel einfacher wäre, wenn Du mal Dein konkretes Problem beschreiben würdest....

Zu Deiner letzten Frage:
Die Struktur einer DDS ist ja im Prinzip immer die gleiche.
Also 6 Stellen SourceSequenz, 6 Stellen Datum und 80 Stellen Daten.

Man kann nun ohne Probleme verschiedene Wege angehen, sowas mehr oder weniger variabel zu händeln.

Da wurden hier schon diverse gute Lösungsansätze gebracht.

Wenn Du im RPG eine DDS ansprechen willst, von der Du zur Wandlungszeit nicht den korrekten Namen hast, reicht ein einfaches OVRDBF vorher um den variablen Namen damit auf die im RPG fixierten Anweisungen zu verdrehen.

Das kannst Du entweder vorher per CLP machen oder auch innerhalb des RPG wenn Du die Datei Usercontrolled bearbeitest.

Musst Dir nur das aussuchen, was am einfachsten für Dich ist.

Lass uns doch mal an der konkreten Problematik teilhaben...

k.

Hm also:

Mein Problem ist das ich von einem Programm aus Mithilfe 2er Datenbankdateien eine DDS Datei erzeugen können soll. Ich habe also den Namen der zu erstellenden Datei und die Definitionen(SRCDTA) und muss daraus eine DDS Datei erzeugen.

Bisher hat es sich so rausgestellt das es das beste und einfachste wäre dies über CL und RPG zu machen.

Zzt habe ich noch 2 Probleme.
1. Wie kann ich in RPG die Datei so definieren das ich auf sie zugreifen kann? Weil ich den Namen der Datei auf die ich zugreifen soll übergeben bekomme. ZB.: Ich mache ein
ADDPFM FILE(LIB/DDSTEST2) MBR(DDSTEST3)

Auf dieses neue Member will ich zugreifen und in es meine Werte schreiben. Das Problem dabei ist wie gesagt das ich den Namen ja erst übergeben bekomme dh. eine normal Definition ist unmöglich(?).

2. Ich kann meiner Datei:


Ausw. Objekt Art Attribut
TESTDDS2 *FILE PF-DTA

nicht mit ADDPFM ein neues Member hinzufügen da diese Datei nur ein Member haben darf und ich nicht weiß wie ich das ändern soll.

Ich bin wie gesagt noch ein Neuling auf der i5 bzw beim Programmieren auf der i5.

Vielen Dank für eure Hilfe im Vorraus.

Gruß

Martin

Fuerchau
12-09-06, 10:29
Die F-Bestimmung lässt sich nicht variabel gestalten, da der Compiler die richtigen Befehle generieren muss.

Gerade dafür ist ja der OVRDBF konzipiert um die F-Bestimmungen variabel zu nutzen.

Fuerchau
12-09-06, 10:31
Die Anzahl der Member kann über CHGPF ... MAXMBR festgelegt werden.

Ansonsten:
PF-DTA ist eine PF die per CRTPF angelegt wurde.
PF-SRC ist eine PF die mittels CRTSRCPF angelegt wurde.

Bei DSPFD tauchen beide als PF auf.

Squall
12-09-06, 10:49
Danke.

Aber wie müsste die F Bestimmung nach dem OVRDBF dann genau aussehen? Weil den Namen der Datei habe ich ja beim compilieren noch nciht.

Frank Hildebrandt
12-09-06, 10:50
Das Ganze kann man auch ohne CL-Befehle (OVRDBF) variabel gestalten. Hier ein Beispiel.



fQDDSSRC O F 92 Disk UsrOpn
f ExtFile(MyFile)
f ExtMbr(MyMbr)
*
dQDDSSRCRF DS 92
d SRCSEQ 6A
d SRCDAT 6A
d SRCDTA 80A
*
dMyFile S 21A
dMyMbr S 10A
*
c Eval MyFile = 'LIB/FILE' oder MyFile = 'FILE'
c Eval MyMbr = 'MBR'
c Open QDDSSRC
c Write QDDSSRC QDDSSRCRF
c Close QDDSSRC

Squall
12-09-06, 11:06
Das Ganze kann man auch ohne CL-Befehle (OVRDBF) variabel gestalten. Hier ein Beispiel.



fQDDSSRC O F 92 Disk UsrOpn
f ExtFile(MyFile)
f ExtMbr(MyMbr)
*
dQDDSSRCRF DS 92
d SRCSEQ 6A
d SRCDAT 6A
d SRCDTA 80A
*
dMyFile S 21A
dMyMbr S 10A
*
c Eval MyFile = 'LIB/FILE' oder MyFile = 'FILE'
c Eval MyMbr = 'MBR'
c Open QDDSSRC
c Write QDDSSRC QDDSSRCRF
c Close QDDSSRC


Ah vielen Dank für das Beispiel.

B.Hauser
12-09-06, 11:08
Hat sich erledigt! Frank war schneller!

Birgitta