[NEWSboard IBMi Forum]

Thema: MCH3402

  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    MCH3402

    Hallo zusammen,

    erst mal ein gutes neues Jahr.

    Mein Programm was seit Jahren läuft stürzt ab wenn zuvor ein anderes Programm aufgerufen wurde. Dieses andere Programm schließt allerdings auch nicht alle Dateien sauber.

    Der Fehler den er bringt ist MC3402 - Es wurde versucht, auf ein nicht mehr vorhandenes Objekt oder Teile des Objekts Bezug zu nehmen.

    Der Fehler tritt auf wenn mein Programm eine eigene Funktion aufruft und dort auf eine Datei zugreift, die wie bereits gesagt, im vorher gelaufenen Programm nicht sauber geschlossen wird. Ich wollte aber jetzt nicht unbedingt im anderen Programm rummwühlen und suchen wo die Dateien nicht geschlossen werden. Wenn es überhaupt an der offenen Datei liegt.

    Hat jemand eine Idee ?

    Viele Grüße Harkne

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Prüfe mal auf Dateiüberschreibungen oder geänderte Lib.
    Dateiüberschreibungen auf Jobebene löschen sich nicht automatisch.
    Wenn z.B. ein OPNQRYF mit OVRDBF kombiniert wird und nicht sauber gelöscht wird, ein OVRDBF auf eine Datei in QTEMP. Da gibt es viele Möglichkeiten.
    Im Joblog sollten vor dem MCH ggf. noch weitere Fehler (CPFxxxx) aufgetaucht sein.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Du hast jetzt nicht gesagt, was Du zwischen dem Programm mit den nicht sauber geschlossenen Dateien und dem eigentlichen Programm machst.
    Zufällig ein zur Sicherheit ein RCLRSC ausführen?
    Das wäre tötlich, wenn ILE Programme in der Default-Aktivierungsgruppe laufen!
    In diesem Fall ist ein Zugriff auf die durch RCLRSC geschlossenen Dateien NICHT möglich!

    Birgitta

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ein RCLRSC in der DFTACTGRP ist (bei mir zumindest) immer unkritisch gewesen.
    Auch ILE-Programme wurden dann rausgeschmissen und verhalten sich beim nächsten Aufruf wie bei Neustart (also 1. Aufruf).
    Der RCLRSC berücksichtigt nur die angegebene Aufrufebene.
    Kritisch ist natürlich ein RCLRSC *CALLER, wenn ich dieses aus dem RPG/ILERPG mittels QCMDEXC mache. QCMDEXC wird nicht als Aufrufebene gewertet so das der RCLRSC das eigene Programm ist. Somit werden dann auch meine Dateien geschlossen und der Zugriff führt zu MCH-Fehlern.

    Ein RCLRSC in einer benannten Aktivierungsgruppe ist wirkungslos.

    Aber das ist eh Spekulation so lange man die Meldungen vor dem MCH nicht kennt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    May 2004
    Beiträge
    444
    Ich mach auf Befehlsebene:
    CALL anderes Programm
    anschließend
    CALL mein Programm

    Absturz von meinem Programm

    Wenn ich mich abmelde und anmelde und nur
    CALL mein Programm
    mache ist alles in Ordnung.

    Keine anderen CPF Messages. Das Programm geht noch nicht mal in die PSSR und macht keinen DUMP. Wir prüfen momentan aber auch noch an anderer Stelle weil bei uns am Wochende PTFs eingespielt wurden.

    Was alles im "anderen Programm" im CL passiert kann ich nicht sagen, das prüfe ich jetzt mal.

    Danke für die Antworten

  6. #6
    Registriert seit
    May 2004
    Beiträge
    444
    Also um die Datei um die es geht ist sowohl in dem anderen Programm als auch in meinem Programm nur als IF eröffnet.

    Im anderen Programm wird nur ein STRCMTCTL und ENDCMTCTL ausgeführt, was die Datei ja aber nicht betrifft. Allerdings wird dort wieder ein RPG aufgerufen was unglaublich viele andere Programme aufruft. Was da passiert schaue ich mir nur an wenn es keine anderen Möglichkeiten mehr gibt

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... wenn dein Programm ILE ist, dann könnte eine eigene benamte ACTGRP helfen.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Möglicherweise kann es am CMTCTL liegen.
    Wenn ENDCMTCTL aufgerufen wird, kann der ggf. mit Fehler abgewiesen werden da eine Transaktion nicht abgeschlossen ist.
    Wenn du die Dateien ohne Commit bearbeitest führt dies ggf. genau zu diesen Fehlern.
    Mach mal vor deinem 2. Call ein DSPJOB, Auswahl 16.
    Falls eine Definition offen ist mache einen
    ROLLBACK
    ENDCMTCTL
    und betrachte ggf. die Nachrichten.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •