[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2006
    Beiträge
    37

    Test ob ein Programm auf dem System läuft

    Hallo zusammen,

    ich möchte innerhalb eines Programms A feststellen, ob ein anderes Programm B auf der Maschine noch läuft. Des weiteren weiß ich, dass wenn B läuft es im Subsystem QBATCH läuft.

    Gibt es einen CL Command oder zumindest eine API, die diese Information ermitteln kann? Wenn ja, wie?

    Gruß

    Etherion

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... freilich gibt es da APIs, die es ermöglichen, festzustellen ob ein bestimmter Job aktiv ist und/oder ein bestimmtes Programm da im Callstack ist, wenn es aber um wechselseitigen Ausschluss geht, den kann man damit nicht sicherstellen. Da macht man sich besser einen auf Sperren basierenden Mechanismus.

    D*B

    Zitat Zitat von Etherion Beitrag anzeigen
    Hallo zusammen,

    ich möchte innerhalb eines Programms A feststellen, ob ein anderes Programm B auf der Maschine noch läuft. Des weiteren weiß ich, dass wenn B läuft es im Subsystem QBATCH läuft.

    Gibt es einen CL Command oder zumindest eine API, die diese Information ermitteln kann? Wenn ja, wie?

    Gruß

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

  3. #3
    Registriert seit
    Jan 2006
    Beiträge
    37
    Hi Bender,

    das mit dem Sperrmachnismus habe ich implementiert. Aber da gibt es noch eine Lücke. Ich möchte deswegen zusätzlich noch das laufende Programm abprüfen. Hast Du da Beispielcode?

    Gruß

    Etherion

  4. #4
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Hallo Etherion,

    meinst Du sowas?
    http://newsolutions.de/forum-systemi...ie-chkjob.html

    Gruß, Christian

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... wo ist denn die Lücke?, vielleicht habe ich ja noch eine bessere Idee, als einen Wackelhaufen mit wühlen in Joblisten und Programm Stacks zu bauen!

    D*B

    Zitat Zitat von Etherion Beitrag anzeigen
    Hi Bender,

    das mit dem Sperrmachnismus habe ich implementiert. Aber da gibt es noch eine Lücke. Ich möchte deswegen zusätzlich noch das laufende Programm abprüfen. Hast Du da Beispielcode?

    Gruß

    Etherion
    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
    Feb 2001
    Beiträge
    20.695
    Wenn eine explizite Sperre z.B. auf einen bestimmten Datensatz oder eine DTAARA gesetzt und gehalten wird, gibts keine Lücke.
    Das Wühlen über Job's und Callstacks ist
    a) sehr langsam
    b) nicht sicher
    Zu b)
    Das Programm kann gerade nicht aktiv im Callstack aber in der Aktivierungsgruppe sein (*INLR = *OFF beim Return).
    Dann findest du es nicht per Callstack, eine explizite Sperre bleibt aber bestehen (am Besten auf externe Objekte und nicht auf Datensätze).
    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
    Mar 2002
    Beiträge
    5.365
    Baldur,
    Du sprichst mir (wie so oft) aus der Seele, bis auf (wie so manchmal): Satzsperren sind schon optimal, wenn man das Ganze mit Commitment Controll implementiert. Ich mache bei sowas eine Procedure getMutex(Name), die legt pro Name automatisch einen Satz in einer journalisierten Datei (eigenes Journal vermeidet Randprobleme) an und liest diesen mit Commit Level repeatable read und bei Ende (und exit registriert über CEE4RAGE) sagt man commit, das wars - und damit kann man auch Gruppen sperren (alphabetisch, versteht sich, damit es keine Deadlocks gibt).
    Für Batch Jobs macht man sowas per 2 Procedures (ala Unix) mit einer getProcess (returns JobId) und einer Join (JobId), die auf die Beendigung eines Tochterprozesses wartet (aufmerksame Leser haben dazu einen meiner Artikel gelesen, in einer hier nicht benennbaren Zeitschrift - vielleicht habe ich bei Common auch mal einen Vortrag hierzu gehalten...).

    D*B



    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wenn eine explizite Sperre z.B. auf einen bestimmten Datensatz oder eine DTAARA gesetzt und gehalten wird, gibts keine Lücke.
    Das Wühlen über Job's und Callstacks ist
    a) sehr langsam
    b) nicht sicher
    Zu b)
    Das Programm kann gerade nicht aktiv im Callstack aber in der Aktivierungsgruppe sein (*INLR = *OFF beim Return).
    Dann findest du es nicht per Callstack, eine explizite Sperre bleibt aber bestehen (am Besten auf externe Objekte und nicht auf Datensätze).
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Tools von IST – Integrierte System Technik
    By Kirsten Steer in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 14-01-08, 08:01
  2. Wo stehen auf System i die Emails?
    By Kent in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 31-10-07, 17:14
  3. Status nach Druck nich SAV, sonder Drucker auf END
    By zannaleer in forum NEWSboard Drucker
    Antworten: 6
    Letzter Beitrag: 13-09-06, 10:35
  4. *usrprf, übernehmen, LDAP, auf andere System ...
    By bode in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-11-05, 09:14
  5. Folder auf dem AS400 freigeben
    By cc in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-05-05, 14:36

Berechtigungen

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