[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2008
    Beiträge
    83

    Aufrufstapel per API

    Moin,

    ich wollte ein Programm erstellen, dass für einen Job die geöffneten Dateien mit dem evtl. im Zugriff befindlichem Satz und die aktiven Programme mit der Anweisung an der sich der Job befindet, ausgibt. Also quasi die Auswahlen "Offene Dateien" und "Aufrufstapel" des Jobs.
    Die offenen Dateien habe ich mit QDMLOPNF hinbekommen.
    Den Aufrufstapel bekomme ich mit QWVRCSTK. Jetzt zum Problem. So wie ich das sehe, komme ich nicht an die aktuelle Anweisung. Das Feld "MI instruction number" geht nicht bei ILE.
    Gibt es eine API mit der ich an diese Information komme?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die benötigten Informationen stehen hier:
    Retrieve Call Stack (QWVRCSTK) API

    Du musst halt nur das richtige Satzformat auswählen.
    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
    Apr 2008
    Beiträge
    83
    Moin,

    kannst du mir da nochmal auf die Sprünge helfen? Ich nehme an du meinst CSTK0200 mit STKE0100. Ich sehe da wieder nur "MI instruction number" und dazu steht weiter unter:

    MI instruction number: The current machine instruction number in the program. This field is not meaningful for integrated language environment (ILE) procedures. A zero is returned for ILE procedures.

    Danke.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Bei ILE musst du wohl eher STKE0300 auswählen und dann Instruction offset verwenden.
    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
    Apr 2008
    Beiträge
    83
    Moin,

    also ich habe das jetzt mal probiert, bzw. hier auch ein komplettes Beispiel gefunden.

    Mit CSTK0200 bekomme ich als Format nur STKE0100. Das sieht dann aus wie bei CSTK0100.

    Mit CSTK0300 bekomme ich als Format mal STKE0100 und mal STKE0300. In STKE0300 stehen dann aber nicht die ILE-Programme, sondern Sachen wie "snapshot__16DoMatThreadStackFv" oder "processInterrupt__22DoMatThreadStackRemoteFv". Der Beschreibung von STKE0300 nach, ist das ja scheinbar auch für internen Code gedacht:
    This format describes the data that is returned for Licensed Internal Code stack frames.
    Die ILE-Programme kommen auch hier im Format STKE0100.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da ich keine Zeit habe, alle Varianten auszuprobieren überlasse ich das dir.
    Irgendwas muss es da geben, denn ich glaube nicht, dass die Job-Stackanzeige was anderes verwendet.
    Probiers halt weiter, ich habe es noch nicht gebraucht.
    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

  7. #7
    Registriert seit
    Dec 2011
    Beiträge
    11
    wir lesen den Callstack mit der MI-Funktion MATINVS (Materialize Invocation Stack) und MATPTRIF (Materialize Pointer Information) aus

    zur Doku: Materialize Invocation Stack (MATINVS)
    Materialize Pointer Information (MATPTRIF)

    und ein Beispiel von i5toolkit: https://i5toolkit.svn.sourceforge.ne...est/t101.rpgle

  8. #8
    Registriert seit
    Apr 2008
    Beiträge
    83
    Moin,

    Also ich habe jetzt noch mal alles probiert mit QWVRCSTK. Man kann das ja nur mit CSTK0100, CSTK0200 und CSTK0300 aufrufen.
    CSTK0100 gibt für ILE keine Anweisungen zurück.
    CSTK0200 und CSTK0300 geben für ILE das Format STKE0100 zurück und dieses wiederum hat keine Anweisungen.

    Also meiner Meinung nach geht das mit QWVRCSTK nicht.

    Ich werde mir mal MATINVS und MATPTRIF ansehen.

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... kann das sein, dass die Programme keine Debug Information haben? Dann geht das wohl mit keiner der verfügbaren Methoden.

    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/

  10. #10
    Registriert seit
    Apr 2008
    Beiträge
    83
    Moin,

    bin erst jetzt wieder dazu gekommen. Mit MATINVS und MATPTRIF funktioniert das.

    Ein anderes Beispiel ist z.B. auch hier:
    https://i5toolkit.svn.sourceforge.ne.../art/who.rpgle
    Und wird erläutert hier:
    Sometimes Programs and Procedures Want to Know: Who Am I? | RPG

    Zitat Zitat von BenderD Beitrag anzeigen
    ... kann das sein, dass die Programme keine Debug Information haben? Dann geht das wohl mit keiner der verfügbaren Methoden.
    Die Infos sind da. Im Aufrufstapel sehe ich es ja auch.

Similar Threads

  1. Tape-Zuordnung prüfen per API
    By Chris.jan in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 26-10-12, 16:05
  2. Spools einer OUTQ per API
    By Paul Gilbert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-07-10, 17:07
  3. Aktuelle Uhrzeit in CL oder per API
    By Asfa in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 18-08-09, 20:45
  4. IFS - Freigabe per Befehlszeile
    By eps330 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 26-11-07, 12:24
  5. Dateien per FTP von IFS auf der AS400 holen
    By kroehn in forum NEWSboard Windows
    Antworten: 5
    Letzter Beitrag: 08-11-06, 19:36

Berechtigungen

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