Anmelden

View Full Version : CPFA097 bei CPYTOSTMF



Kaufmann
11-07-08, 07:46
Wir kopieren mittels CPYTOSTMF Dateien auf den Folder. Der dazugehöhrige Job kann von verschiedenen Benutzern gleichzeitig benutzt werden, so das es vorkommen kann das zwei Dateien mit gleichen Namen und Inhalt geschrieben werden sollen. Sobald die zweite Datei geschrieben werden soll wird ein Fehler ausgegeben. Die Fehlernummer ist CPFA097. Der Grund hierfür ist mir klar, aber ich möchte den Fehler und nur den Fehler mittels Monitor im RPGLE-Programm abfangen.

Kann mir wer sagen auf welche ERROR-Kennung ich abfragen muss?

B.Hauser
11-07-08, 08:42
Hallo,

verwendest Du QCMDEXC um den Befehl auszuführen?
Wenn Ja müsstest Du bei Verwendung der Erweiterung (E) im CALLP, die CPF-Nachricht aus der Programm-Status-Datenstruktur Stelle 40-46 ermitteln und abfagen können.



D PGMDS SDS
D SDSMsgId 40 46
D SDSMsgTxt 91 140

/Free
CAllP(E) QCmdExc(.....)
If %Error and SDSMsgId = 'CPFA097';
// Source Code
ElseIf %Error;
// Sonstiges Fehlerhandling
EndIf;


Ob das auch mit Monitor klappt, müsstest Du ausprobieren, da MONITOR i.d.R. erst die nächste Fehlermeldung (die RPG-Meldung RNXirgendwas) abfangen kann.
Falls Du die RNX-Nachricht ermitteln kannst, hast Du auch den Status. (einfach die letzten 4 Stellen in der RNX-Message-Id ;)) Ich vermute allerdings, dass der Status mehr pauschal ist.

Birgitta

Kaufmann
11-07-08, 08:51
Also es ist so:

Der CPYTOSTMF wird über eine Prozedur in einem Serviceprogramm aufgerufen. Da diese Prozedur auch von anderen Programmen verwendet wird kann ich die Prozedurenschnittstelle nicht ohne weiteres geändert werden. Was ich allerding schon ausprobiert habe ist das ich um den Aufruf der Prozedur einen Monitor gemacht habe. Dies funktioniert auch, nur habe ich dabei jetzt generell alle Fehler die auftreten abgefangen.

Fuerchau
11-07-08, 11:57
Dann würde ich dir eine Sperrmimik drumrum empfehlen (z.B. DTAARA) um den parallelen Aufruf vorab zu verhindern.

Kaufmann
11-07-08, 12:10
Vielleicht habe ich nicht weit genug dafür ausgeholt. In die Datei auf dem IFS werden Daten geschrieben die dann zu einem späteren Zeitpunkt von einem PC-Programm abgegriffen werden. Dabei sind diese Dateien aber nur so was wie ein Flag der kennzeichnet das der Satz auf der AS bearbeitet wurde. Es währe auch denkbar dass bei einer zweiten Übertragung die erste Datei gelöscht wird, falls sie schon vorhanden ist.

Da aus der Prozedur aber nur die beiden Fehler CPFA097 und CPFA085 kommen können(sind die einzigen möglichen Fehlermeldungen des CPYTOSTMF) funktioniert das jetzt schon wenn ich einen Monitor um den Prozeduraufruf setze.