PDA

View Full Version : Dateileseprobleme unter V5R1M0



Seiten : [1] 2

holli
01-08-02, 15:20
Hallo @ALL

Hat von Euch auch schon mal jemand Probleme mit CHAIN in RPG gehabt.

Ich habe das Problem, dass Ich mit einem Schlüssel eine Datei chaine, diesen Schlüssel in das Dateischlüsselfeld schiebe, die anderen Datenfelder fülle und dann einen WRITE auf die Datei mache.

Hin und wieder kommt dann der Fehler: RPG1021 Doppelter Schlüssel gefunden.

Es ist ausgeschlossen, dass eine andere Anwendung zu diesem Zeitpunkt einen Satz mit besagtem Schlüssel geschrieben hat.

Das Problem tritt bei einem Kunden auf, der V5R1M0 hat. Das Programm wurde aber bei uns unter V4R4 gewandelt.

Danke für alle Hinweise.

Gruß Holger

rmittag
01-08-02, 17:31
http://www.as400-forum.de/ubb/confused.gif
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Dateileseprobleme ...
[/quote]
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
... WRITE auf die Datei mache
... Fehler: RPG1021 Doppelter Schlüssel gefunden
[/quote]
Lese oder Schreibproblem?
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Es ist ausgeschlossen, dass eine andere Anwendung zu diesem Zeitpunkt einen Satz mit besagtem Schlüssel geschrieben hat.
[/quote]
Ist der Satz in der Datei vorhanden oder nicht?

Ich würde als erstes auf einen Logikfehler im Programm tippen

Gruß
Rolf

Gerlitz
01-08-02, 18:18
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von holli:
Hin und wieder kommt dann der Fehler: RPG1021 Doppelter Schlüssel gefunden.[/quote]
Schau noch mal genauer ins Joblog. Dort müssen noch andere Meldungen sein. Mit F1 diese sich anzeigen lassen. Da müßte eine Nachricht dann die MSG-ID CPF5009 haben, welche genauere Auskünfte geben sollte.

Gruß

Matthias

Ludger Muhmann
01-08-02, 23:15
Hallo Holger,

man kann davon ausgehen, dass tatsächlich doppelte Schlüssel geschrieben werden.

Entweder ist die Programmlogik nicht in Ordnung oder es gibt logische Dateien, deren Key als eindeutig definiert wurde und die jetzt unter Umständen Probleme machen.

Ich denke, dass bei einer genaueren Beschreibung des Datei-Keys und der Programm-Statements die Ursache gefunden werden sollte.

mfg. Ludger

holli
02-08-02, 09:44
Das Problem ist, dass der Fehler nur beim Kunden auftritt. Die canceln dann den Job und löschen auch alle Joblogs. Meine Programmlogik sieht wie folgt aus.

*ENTRY KLIST
KFLD #FILIALE

Ina
02-08-02, 09:44
holli holli,

hast du mal gebaggert?
ausserdem würde mich interessieren ob auf dem system die aktuellen datenbank und hyper-ptfs installiert sind? daran könnte es vielleicht auch liegen.
ausserdem könntest du es auch mal mit einem setll probieren, der ist ein klein bisschen schneller.

gruss ina

holli
02-08-02, 09:54
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von holli:
Das Problem ist, dass der Fehler nur beim Kunden auftritt. Die canceln dann den Job und löschen auch alle Joblogs. Meine Programmlogik sieht wie folgt aus.

*ENTRY KLIST
KFLD #FILIALE [/quote]

Ich bin auf ENTER gekommen, deswegen watr das Posting unvollständig. Also nochmal:


KEY KLIST
KFLD #FILIALE
KFLD #BELEGNR
KFLD #LFDNR // laufende NR //

eval #Filiale = Filiale
eval #BELEGNR = Belegnr
eval #LFDNR = Lfdnr

KEY CHAIN DATEI 95 (not found)

* füllen Dateifelder
eval Filiale = #Filiale
eval Belegnr = #Belegnr
eval LFDNR = #LFDNR
eval Betrag = NeuBetrag
usw.

If *IN95
WRITE DATEI
ENDIF

Die Datei hat keine logischen Dateien und nur die o.g. Schlüsselfelder.

Ich habe mal gelesen, dass ab V5 alle RPG-Lese-Befehle in SQL-Befehle umgesetzt werden. Meine Befürchtung ist, dass das für V4R4 erstellte Objekt irgendwie nicht richtig läuft.

Danke für eure Bemühungen

malzusrex
02-08-02, 10:32
hi

kann es sein, das zwischen dem chain und der abfrage *in95 diese bezugszahl nochmal woanders benutzt wird (z.B.: ein weiter chain auf eine andere datei, ein read, oder was auch immer) ?

gruß ronald

holli
02-08-02, 10:38
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von malzusrex:
hi

kann es sein, das zwischen dem chain und der abfrage *in95 diese bezugszahl nochmal woanders benutzt wird (z.B.: ein weiter chain auf eine andere datei, ein read, oder was auch immer) ?

gruß ronald[/quote]

Nein, das Programm läuft genau so, wie oben beschrieben. Zwischen dem CHAIN und dem WRITE werden lediglich die Dateifelder gefüllt. Das ist ja das Merkwürdige. Das Programm ist uralt und hat nie Probleme bereitet. Erst seit dem es auf einer Kundenmaschine mit V5R1M0 eingesetzt wurde.
Ich habe auch ausdrücklich drauf geachtet, dass genau die Schlüsselfelder geschrieben werden, mit denen auch gelesen wurde. Sonst könnte es ja sein, dass irgendwie falsche Daten reinkommen, aber das ist definitiv nicht der Fall.

Gruß Holli

malzusrex
02-08-02, 10:42
versuche es doch mal anstelle von
if *in95

mit

if not %found(datei)

ronald