[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Apr 2008
    Beiträge
    83

    Question aktuelles Statement in einem ILE-Programm eines fremden Jobs ermitteln

    Moin.

    Ich möchte von einem laufendem Job (Name/User/Number) die aktuelle Anweisung eines ILE/RPG-Programms ermitteln, so wie es beim DSPJOB OPTION(*PGMSTK) angezeigt wird.
    Die API QWVRCSTK kann ich dafür nicht verwenden, da dort die Statements bei ILE-Programmen nicht ausgegeben werden.

    Ich habe herausgefunden, dass es wohl über Materialize Invocation Stack (MATINVS) geht. Ein Beispiel von JunLei Li für _MATINVS2 funktioniert und zeigt mir die Statements aber halt nur für den aktuellen Job. Mit _MATINVS1 geht das auch für fremde Jobs aber dafür wird ein System Pointer benötigt. JunLei Li hat auch ein Beispiel dafür. Hier wird über Resolve System Pointer (RSLVSP) vorab ein solcher Pointer ermittelt. RSLVSP braucht als Parameter 2 ein 30A-Object.

    Meine Frage ist jetzt wie ich von meinem Job zu diesem Object komme. Ich hab den Vormittag mit Suchen verbracht aber ich kann dazu einfach nichts finden.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das 30A-Objekt ist in diesem Fall der vollständige Jobname, so wie er z.B. in der SDS steht:
    'JJJJJJJJJJUUUUUUUUUUNNNNNN____'.
    Zusätzlich ist aber noch der Typ (2-Byte-Hex) erforderlich.
    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
    Mar 2002
    Beiträge
    5.286
    ... den man von QLICVTTP ermitteln lassen kann

    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/

  4. #4
    Registriert seit
    Apr 2008
    Beiträge
    83
    Die Typen stehen auch in diesen zwei Tabellen:
    http://www-01.ibm.com/support/knowle.../conObject.htm
    http://www-01.ibm.com/support/knowle...bjecttypes.htm

    Und aufgrund derer nahm ich an, dass ich nicht einfach die Jobinformationen als Object verwenden kann, denn: Was ist der Typ für einen Job?

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... Du brauchst hier den Job control space pointer, der wohl in einer Systemtabelle (QWCBT_JOB_INDEX) zu finden ist. Dein Beispielprogramm ist hier wohl weniger als die halbe Wahrheit. Ob das ganze Zielführend ist, habe ich so meine Zweifel. Seclevel > 40 geht das wohl ohne Hacks nicht mehr und das komplette Verfahren ist nur schwach dokumentiert, sprich: kann sich mit jedem Release ändern (und ob und wann dann neuere Infos kommen, weiß man nicht (es gab etliche Jahre kein gültiges MI Handbuch). Ach ja - und scharf ist die Information auch nicht (wie auch die call stack Anzeige im Jobmenü).

    D*B

    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/

  6. #6
    Registriert seit
    Apr 2008
    Beiträge
    83
    Das ist Mist.

    Auf 7.1 scheints die Tabelle auch schon gar nicht mehr zu geben.

    Schade drum.

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Dieser Index sollte schon noch da sein. Mach mal

    DMPSYSOBJ OBJ(QWCBT_JOB_INDEX) CONTEXT(QSYS)

    und sieh dir die erstellte Spooldatei an.

  8. #8
    Registriert seit
    Oct 2013
    Beiträge
    171
    Ich bin schrecklich neugierig, Ottersberg. Was möchtest Du denn mit diesen Infos machen? Sprich, was soll das Programm, das feststellen kann, wo sich ein Programm in einem anderen Job befindet, eigentlich tun?

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Ottersberg Beitrag anzeigen
    Das ist Mist.

    Auf 7.1 scheints die Tabelle auch schon gar nicht mehr zu geben.

    Schade drum.
    ... der ist von der Objekt Art *GENIDX (HexType 0EA4) und muss auch mit MI angepackt werden, was aber die vorher benannten Restriktionen nicht behebt.

    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
    Feb 2001
    Beiträge
    20.207
    Das API ist schon das Richtige!
    Für ILE musst du nur in das richtige Feld des Callstack-Entries schauen:

    Statement identifiers. The high-level language statement identifier. If this field contains the character representation of a number, the number is right-adjusted in the field and padded on the left with zeros (for example, '0000000246'). If the call stack entry is for an integrated language environment (ILE) procedure, more than one statement identifier may exist because of the compilers used for ILE languages.
    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

  11. #11
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das API ist schon das Richtige!
    Für ILE musst du nur in das richtige Feld des Callstack-Entries schauen:

    Statement identifiers. The high-level language statement identifier. If this field contains the character representation of a number, the number is right-adjusted in the field and padded on the left with zeros (for example, '0000000246'). If the call stack entry is for an integrated language environment (ILE) procedure, more than one statement identifier may exist because of the compilers used for ILE languages.
    Das Feld habe ich übersehen. Ich habe den Aufruf implementiert und es funktioniert wie gewünscht.

    Danke für eure Hilfe.


    Zitat Zitat von AG1965_2 Beitrag anzeigen
    Ich bin schrecklich neugierig, Ottersberg. Was möchtest Du denn mit diesen Infos machen? Sprich, was soll das Programm, das feststellen kann, wo sich ein Programm in einem anderen Job befindet, eigentlich tun?
    Ich möchte das für zwei Dinge nutzen.

    Einmal als Überwachung von Batchjobs. Wir wollen wissen wie häufig Batchjobs warten müssen und auf wen, also auf andere Batchjobs die mit denselben Dateien arbeiten oder auf Benutzer. Das Statement soll uns zeigen, ob der Benutzer in einem exfmt stehen geblieben ist oder ob die Programme evtl. fehlerhaft sind und sich gegenseitig blockieren.

    Dann haben wir mobile Geräte die hin und wieder "hängen". Außerhalb unserer Arbeitszeiten gibt es Mitarbeiter mit Befehlsaufrufmöglichkeiten die Jobs dieser Geräte zu beenden. Hier möchte ich mit einbauen, dass vor dem Beenden des Jobs gesichert wird, wo sich der Job zu dem Zeitpunkt befand.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da ist dann doch wohl eher raten angesagt.
    Bei OPM-Programmen wird da als Statement die interne Unterroutine zum Aufruf von IO-Funktionen angezeigt. Auf welchem der EXFMT's des Programmes der Job steht (bei OPM z.B. .DRVRX01), kann man da auch nicht sehen.
    Das Selbe gilt auch für andere Datei-IO's.
    Am besten kann man das beim Debugger im Einzelschritt nachvollziehen. Bei IO's und CALL's wird die Quelle am Anfang angezeigt und nicht auf dem Statement.

    Ein DSPJOB mit den entsprechenden Informationen muss da einfach ausreichen.
    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. IBM i Partitions-Nr. via Programm ermitteln
    By B.Hauser in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 16-01-15, 16:20
  2. 2 Bildschirmdateien in einem RPG-Programm
    By philsturm in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 01-09-14, 10:43
  3. Aufrufendes Programm ermitteln
    By harkne in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 03-04-14, 12:51
  4. CL: Kann man Status eines Jobs abfragen?
    By hs in forum IBM i Hauptforum
    Antworten: 24
    Letzter Beitrag: 30-01-03, 16:23
  5. Alarm aus einem RPG-Programm
    By Markus Ralf in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 08-08-01, 15:29

Berechtigungen

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