View Full Version : Fehler bei Prozedur in Serviceprogramm
Hallo zusammen,
ich habe ein Problem mit einem Serviceprogramm. Das Programm enthält mehrere Prozeduren. Wenn in einer Prozedur ein Fehler auftritt (in diesem Fall war es ein doppelter Schlüssel), wird dieser Fehler im aufrufenden Progarmm angezeigt: The call to MOVEARTICL ended in error (C G D F).
Nachdem ich das Programm neu gestartet habe, erhalte ich beim Aufruf einer Prozedur aus diesem Serviceprogram die Fehler:
The call to CLOSEOB02 ended in error (C G D F).
Tried to refer to all or part of an object that no longer exists.
Ich habe schon ein ein RCLRSC versucht, hat aber nichts gebracht. Erst nachdem ich mich neu angemeldet habe, läuft es wieder. Hat jemand eine Idee, wie ich das Problem beheben kann?
Danke
Hubert
Ggf. ist ein RCLACTGRP erforderlich !
Leider hat auch RCLACTGRP nicht geholfen.
Das Programm nutzt mehrere Serviceprogramme. Jedes Programm hat seine eigene Activation Group. Die Activation Group des Serviceprogramms, in dem der Fehler aufgetreten ist, existiert danach nicht mehr.
Da kann ich nur hoffen, dass ich jetzt alle möglichen Fehler sauber abgefangen hab.
Danke für die Unterstützung.
Hubert
AS400.lehrling
13-11-07, 11:09
Hallo zusammen,
ich habe ein Problem mit einem Serviceprogramm. Das Programm enthält mehrere Prozeduren. Wenn in einer Prozedur ein Fehler auftritt (in diesem Fall war es ein doppelter Schlüssel), wird dieser Fehler im aufrufenden Progarmm angezeigt: The call to MOVEARTICL ended in error (C G D F).
Nachdem ich das Programm neu gestartet habe, erhalte ich beim Aufruf einer Prozedur aus diesem Serviceprogram die Fehler:
The call to CLOSEOB02 ended in error (C G D F).
Tried to refer to all or part of an object that no longer exists.
Ich habe schon ein ein RCLRSC versucht, hat aber nichts gebracht. Erst nachdem ich mich neu angemeldet habe, läuft es wieder. Hat jemand eine Idee, wie ich das Problem beheben kann?
Danke
Hubert
Gib beim nächsten mal D ein, meines wissens nach müßte ein detailierter fehlerbericht die folge sein:)
Gruß AS400.lehrling
Leider steht die Maschine in Toronto und wird von dort administriert. Die Fehlermeldung wird vom System sofort mit 'C' beantwortet, da hab ich keine Chance zwischen zu kommen. Nach mehreren vergeblichen Versuchen, ein 'D' zu bekommen hab ich es aufgegeben.
AS400.lehrling
13-11-07, 12:27
Bleibt nur eine Info an den Admin vor Ort übrig, falls der den Lust hat ein D zu ermöglichen.
AS400.lehrling
Dann ist bei solch schwerwiegenden Fehlern eher ein ENDJOB (SIGNOFF) erforderlich.
AS400.lehrling
13-11-07, 13:00
Dann ist bei solch schwerwiegenden Fehlern eher ein ENDJOB (SIGNOFF) erforderlich.
Das beendet aber nur die jobs des Nutzers, die fehlerursache wird dadurch nicht offendsichtlich.
Die Frage nachbdem warum läßt sich doch nur mit einer detailierten problenanalyse beantworten.
Gruß AS400.lehrling
Das ist natürlich klar, deshalb kannst du ggf. "SIGNOFF *LIST" verwenden.
Ein Programmdump ist hierzu natürlich auch hilfreich.
Hallo,
der im ersten Posting genannte Fehler wird wohl gerade durch den Reclaim hervorgebracht.
Szenario: SRVPGMA läuft in ACTGRP A
SRVPGMB läuft in ACTGRP B
RCLACTGRP B macht alle ProcedurePointer in A auf
Prozeduren in B ungültig
der nächste Aufruf einer Porcedure aus SRVPGMB aus
SRVPGMB bringt den Fehler.
Konsequenz: Activationgroups von Serviceprogramme mit eigenen Activationgroups kann man nicht per Reclaim killen.
Lösungswege:
a) verlassen des steuernden Programmes und RCLACTGRP *eligible,
schwache Lösung, es darf auch kein weiteres Programm im Call Stack drunter liegen, das eines der SRVPGMs gebunden hat.
b) SRVPGMs mit *CALLER erstellen und den Programmen eigene ACTGRP (= Programmname) geben - einfache Lösung, die meist (ich weiß, nicht immer) ausreicht.
c) Den maroden Aktivierungsprozess der Runtime nicht benutzen und die Sache selber in die Hand nehmen: sprich zur Laufzeit binden per API (gibts OpenSource auf meiner WebSeite PROCP4NAME) - felxibel und stabil.
Grundsätzlich gilt natürlich, dass die Instabilität in der Prozedur selber geheilt werdne muss, um diesen Wackelhaufen zu sanieren. Anfangen würde ich da beim Programm Design und dem Aufräumen der Aktivierungsgruppen. Danach würde ich entweder einen ILE Condition Handler für das "Restfehlerhandling" dranhängen, oder die exportierten Procedures in Monitorblöcke einpacken.
mfg
Dieter Bender
Leider hat auch RCLACTGRP nicht geholfen.
Das Programm nutzt mehrere Serviceprogramme. Jedes Programm hat seine eigene Activation Group. Die Activation Group des Serviceprogramms, in dem der Fehler aufgetreten ist, existiert danach nicht mehr.
Da kann ich nur hoffen, dass ich jetzt alle möglichen Fehler sauber abgefangen hab.
Danke für die Unterstützung.
Hubert