-
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.
-
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.
-
... den man von QLICVTTP ermitteln lassen kann
D*B
-
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?
-
... 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
-
Das ist Mist.
Auf 7.1 scheints die Tabelle auch schon gar nicht mehr zu geben.
Schade drum.
-
Dieser Index sollte schon noch da sein. Mach mal
DMPSYSOBJ OBJ(QWCBT_JOB_INDEX) CONTEXT(QSYS)
und sieh dir die erstellte Spooldatei an.
-
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?
-
Zitat von Ottersberg
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
-
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.
-
Zitat von Fuerchau
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 von AG1965_2
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.
-
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.
Similar Threads
-
By B.Hauser in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 16-01-15, 15:20
-
By philsturm in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 01-09-14, 09:43
-
By harkne in forum NEWSboard Programmierung
Antworten: 17
Letzter Beitrag: 03-04-14, 11:51
-
By hs in forum IBM i Hauptforum
Antworten: 24
Letzter Beitrag: 30-01-03, 15:23
-
By Markus Ralf in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 08-08-01, 14:29
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks