[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.102

    Programm aus QRPLOBJ wird dem echten Programm vorgezogen

    Hallo,
    wir haben da ein seltsames Phänomen: Ein Serviceprogramm wurde geändert. Das neue Programmobjekt wurde einwandfrei erstellt. Mein Kollege kann aber machen, was er will (neue Sitzung öffen), er bekommt einfach das neue Programmobjekt nicht in den Zugriff. Der Programmstapel des Jobs zeigt immer, dass das alte Objekt aus der QRPLOBJ im Zugriff ist.

    Hat jemand eine Erklärung?

    Dieter

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Nachtrag: Es scheint etwas mit dem Debug-Dämon des RDi zu tun zu haben. Möglicherweise trat das Problem nur beim Debuggen auf.
    In einer neuen Sitzung hat jetzt der Aufruf des neuen Objektes geklappt.
    Aber ich sehe das doch richtig: Wenn ein neuer Aufruf stattfindet (also z.B. über eine neue Aktivation-Group) dürfte das alte PGM aus der QRPLOBJ nicht mehr gezogen werden, oder?

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das Problem kann dann auftreten, wenn irgendwelche Cache-Funktionen (z.B. SQL-Procedure/-Function) zuschlägt. Diese sind z.T. systemweit.
    Es gibt irgendwelche API's/Calls QAQQINI-Optionen um Caches zu ignorieren bzw. zu löschen.
    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

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Danke für die Antwort. Bei uns zeigte der Debugger des RDi immer an, dass der Source nicht zum Objekt passte. Im Job sah man dann, dass das Objekt aus der QRPLOBJ kam. Es scheint jetzt behoben zu sein, nachdem wir den RDi Debug Dämon neu gestartet haben.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nun ja, Programmadressen (bzw. Adressen überhaupt) werden meist im Init-Vorgang des Aufrufers geladen.
    D.h., du kannst z.B. einem Pointer per %Addr() auch als INZ(%ADDR(Irgendwas)) zuweisen.
    Das hat aber mit ACTGRP's nichts zu tun, denn dies wird erst beim tatsächlichen Aufrufen bzw. Aktivieren des Programmes initialisiert.
    Ein CALL 'PGMX' ist insofern statisch, da die Adresse von PGMX bereits beim Laden des Programmes ermittelt wird.
    Beim CALL VARPGM wird intern ein Systempointer gefüllt, der erst beim 1. Call mit der Adresse gefüllt wird. Jeder weitere Call verwendet dann immer das selbe Objekt.
    Die Adresse bekommt man erst weg, wenn man einen CALL VARPGM mit einem anderen Programm durchführt, wo dann der interne Pointer neu initialisiert wird.

    Das ist beim CMD-CALL (CLP, Kommandozeile, QCMDEXC, ...) eben anders, da wird der Aufruf-Pointer immer neu initialisiert.
    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

Similar Threads

  1. %SCAN im CL Programm
    By Etherion in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 06-11-13, 19:24
  2. programm QSECIDL1 ???
    By Koelch400 in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 28-10-03, 09:34
  3. CGI-Programm und Zeichenumsetzung
    By cmatzat in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 11-07-02, 13:29
  4. RUNSQL im CL-Programm
    By samik in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 31-01-02, 15:26
  5. PC-Programm
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 03-07-01, 08:59

Berechtigungen

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