Anmelden

View Full Version : Ile-RPG: Datei 2 x verwenden



dino
25-11-10, 15:13
Hallo *all,
ich möchte eine Auftragspositionsdatei verarbeiten und bei Verarbeitung bzw. Update eines Pos.-Satzes zunächst den nachfolgenden Satz auf einen bestimmten Feldinhalt prüfen, bevor eine Fortschreibung erfolgt. Meine Idee war: Datei 2x definieren und ein "READE" auf die Zweitdatei machen. Aber RPG lässt doch keine doppelten Dateinamen in den "F"-Bestimmungen zu oder?

Pikachu
25-11-10, 15:22
Nimm doch ne zusätzliche logische Datei.

prsbrc
25-11-10, 15:37
Noch ein Vorschlag wäre embedded SQL... sprich SQLRPGLE ...
MfG
Christian

Fuerchau
25-11-10, 16:42
Dein Problem läßt sich auch mit einer Datei lösen.
Definiere die Dateifelder noch mal als Mehrfachvorkommen in einer DS:

D MyFileDS E DS OCCURS(2) Extname(MyFile)

occurs 2;
reade (Key) MyFile;
// Prüfungen
occurs 1;
readpe (Key) MyFile;
// Verarbeitung
update MyFile;

B.Hauser
26-11-10, 05:33
Hallo,

mit dem Schlüssel-Wort EXTFILE ist es möglich die gleiche Datei mehrfach zu definieren.

Vor Release 6.1 muss allerdings die Datei, die an Stelle 7 angegeben wurde zur Compilezeit vorhanden sein.

Ab Release 6.1 kann man mit dem Schlüssel-Wort EXTDESC(File) angeben, welche Datei zur Compile-Zeit verwendet werden soll. Im Schlüssel-Wort EXTFILE kann der Sonderwert *EXTDESC angegeben werden, der besagt, dass die Datei, die zur Compile-Zeit verwendet wurde auch zur Laufzeit verwendet werden soll. Damit ist eine Dummy-Datei zur Compilezeit nicht mehr erforderlich.

Vor 6.1

FMyFile1 IF E K Disk
FMyFile2 if e Disk
F ExtFile('MYFILE1')


Ab 6.1


FMyFile1 IF E K Disk
FMyFile2 if e Disk
F ExtDesc('MYFILE1')
F ExtFile(*ExtDesc)

Birgitta

dino
26-11-10, 06:45
Donnerwetter, was Ile-RPG so alles kann.. System verstanden, ich werds probieren. Danke

Fuerchau
26-11-10, 07:21
Trotzdem solltest du bedenken, dass die Felder beider Dateien ja identische benamt sind und das Lesen der 2. Datei die Felder der 1. Datei überschreibt!

Entweder du verwendest dann Prefix für die Feldnamen oder arbeitest mit qualified Strukturen.

B.Hauser
26-11-10, 07:42
Trotzdem solltest du bedenken, dass die Felder beider Dateien ja identische benamt sind und das Lesen der 2. Datei die Felder der 1. Datei überschreibt!

Entweder du verwendest dann Prefix für die Feldnamen oder arbeitest mit qualified Strukturen.

Dann definiert man sich halt Externe Qualifizierte Datenstruktur(en) (zumindest 1) entweder mit EXTNAME oder mit LIKEREC und liest den Datensatz beim Chain oder Read direkt in die Datenstruktur.

Das direkte Einlesen in Datenstrukturen geht bereits ab Release V5R2. Qualifizierte Datenstrukturen kann man ebenfalls bereits mit Release V5R2 mit LIKEREC erstellen. Das Definieren von Qualifizierten Externen Datenstrukturen mit EXTNAME und direktes Einlesen in diese Datenstrukturen wird erst ab Release V5R3 unterstützt.

Birgitta

hwalk
27-11-10, 09:52
Hi,

mit V6 können m. W. Dateien in Prozeduren definiert werden. Auch so kann eine Datei in einem PGM mehrfach verwendet werden.