PDA

View Full Version : 2 Dateien mit gleichem Namen in 1 RPG



hrrdn
24-09-09, 08:20
Hallo,

ich habe da ein kniffliges Problem (für mich als iseries-Anfänger jedenfalls, aber vielleicht ist es in Wirklichkeit recht trivial).

Ich muß Datensätze von einer Datei mit historisierten Daten in eine andere Datei, mit den aktuellen Daten zurückschreiben. Beide dateien sind in verschiedenen Bibliotheken, haben aber den gleichen Namen.

Wie kann ich diese beiden in einem RPG verarbeiten?

Für einen Tip wäre ich sehr denkbar.

Viele Grüße
Michael

Fuerchau
24-09-09, 08:40
Für RPG geht das leider nur mit unterschiedlichen Namen und unterschiedlichen Formatnamen und es geht am besten mit ILERPG.
Hierzu benötigst du einfach 2 LF's mit identischem Aufbau.
Den tatsächlichen Namen und Lib gibts du über Variablen an und die Formatnamen bennenst du per RENAME einfach um.

kuempi von stein
24-09-09, 08:55
Moin,

irgendwie ist mir so, als ob wir früher das auch per OVRDBF gelöst haben?
Sprich die beiden Dateien DATEIX wurden im RPG mit DATEIX und DATEIY angegeben (somit keine doppelter Name) und zur Generierung und Laufzeit dann eben vorher ein OVRDBF?
Der Rename im RPG für den Formatnamen ist natürlich immer noch notwendig.

Oder habe ich da etwas falsch im Kopf?

k.

B.Hauser
24-09-09, 09:03
Hallo,

die Version mit dem Override war die alte Lösung, die man in RPGIII und auch RPGIV bis vor V5R1 verwenden musste.

Ab Release V5R1 kann man auch mit Hilfe des Schlüsselwortes EXTFILE in den F-Bestimmungen die Datei (auch incl. Bibliothek) im Programm direkt angeben. Die Umbenennung es Formates ist weiterhin notwendig, da dies innerhalb der Quelle eindeutig sein muss.
(Ab 6.1. ist soweit ich mich recht erinnere noch nichteinmal die Umbenennung des Formates notwendig, wenn man das Format qualifiziert Datei.Format angibt).

Zur Compilezeit muss allerdings die umbenannte Datei mit den entsprechenden Feldern und dem entsprechenden Format existieren.

Ansonsten würde ich zur Übertragung embedded SQL empfehlen.

Birgitta

Fuerchau
24-09-09, 09:03
Ja klar, aber mit ILE kannst du den OVRDBF doch sparen.

holgerscherer
24-09-09, 11:24
Ja klar, aber mit ILE kannst du den OVRDBF doch sparen.

Oder mit SQL? :)

-h

Fuerchau
24-09-09, 11:54
@Holger
Je nach "schreibfaulheit" SQL oder ILERPG.

Obiges Problem läßt sich wahrscheinlich mit ein / zwei SQL-Befehlen lösen:

insert into datei2
select * from datei1

ggf. mit "where not exists (select ... from datei2)" ergänzen.

bzw.
Update Datei2
set fld1x = (select fldx from datei1 where ...)
where exists (select ... )

Oder mit meinem wirklich genialen Tool SQLCPY.