[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.973

    Post Signoff im Batch

    Hi, *all

    es ist ja schon fast peinlich, aber ...
    wie kann sich ein BatchJob hart beenden ?
    Signoff geht nicht
    endrqs auch nicht
    endjob geht nicht auf sich selber.
    muß ich echt ein endjob submitten ?
    wer weiß rat
    dank
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    340

    Question

    return im steuernden CL ??? oder worum geht's ???

    Gruß
    Rolf

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.973

    Talking

    ne, nix CL

    ein RPG (ILE) ruft ein ILE, das ruft ein ile ...
    und stellt fest : mittlere Katastrophe

    also, meldung in fehlermeldungsdatei
    und job abschießen !! da in den Parametern kein 'hör sofort auf' transportiert wird.

    is zwar nicht schön, aber hilfreich
    Robi


    [Dieser Beitrag wurde von Robi am 20. November 2002 editiert.]
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    304

    Post

    Hallo Robi,
    ich denke das funktioniert nur dann, wenn Du dies den vorherigen RPG's in irgendeiner Form mitteilst. Also, wenn das letzte RPG den Fehler feststellt --> *INLR setzen und per z.B. Parameterliste dem vorherigen aufrufenden Pgm den LR-Status übergeben. Dieses Pgm setzt dann bei erhaltenen LR-Status ebenfalls den *INLR und so weiter.

    Gruss Reinhold
    R.Schreiber

  5. #5
    Registriert seit
    Jul 2001
    Beiträge
    177

    Post

    Hallo!

    Interessante Aufgabenstellung....

    Würde ich so lösen:

    1. CL-Programm mit Parameter Job
    Dies führt einen ENDJOB OPTION(*IMMED)
    auf diesen Job durch
    2. Programm was die "mittlere Katastrophe" erkennt ruft CL-Programm aus 1.) auf.

    Viele Grüße

    Andreas Göring

    [Dieser Beitrag wurde von andigoering am 20. November 2002 editiert.]

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.869

    Post

    Hallo,

    verstehe ich Dich richtig, Du hast folgende Situation:

    1. Programm PGM1 --> Call PGM2
    2. Programm PGM2 --> Call PGM3
    :
    : Programm PGMN
    --> Mittlere Katastrophe und Ende

    Am einfachsten ist dies durch das Senden einer Message mit Message-Type *ESCAPE an das 1. Programm zu realisieren.
    (CL-Befehl SNDPGMMSG oder API QMHSNDPM)

    Die *ESCAPE-Message bewirkt, dass alle Programme und Prozeduren im Call Stack bis zu dem Programm, das die *ESCAPE-Message empfängt sofort beendet werden.

    Das 1. Programm empfängt die Nachricht
    und beendet sich dann.
    (CALL mit (E)-Extender oder mittlere Bezugszahl)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    1.973

    Post

    Danke
    Andigoering: so hab ich z.zt aber das ist unsportlich!!

    Brigitta: prima Idee, ist nicht so einfach, da ich das 1. rufende pgm nicht kenne.
    (also :mach ich ein rtvpgmstk)

    ein 'call QCMD' Parm(SIGNOFF-im-Batch)
    währ mir am liebsten

    Danke nochmal

    ROBI


    nochmal Danke
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  8. #8
    Registriert seit
    Dec 2000
    Beiträge
    79

    Post

    wenn du schon in einem ILE Programm bist versuch doch mal mit der Unix Funktion

    kill( 0, 15 )

    Thomas

  9. #9
    Registriert seit
    Jul 2001
    Beiträge
    177

    Post

    Hallo Robi!

    Also warum das jetzt plötzlich unsportlich sein soll weiss ich nicht.

    Du willst doch einen Befehl der den Job killt, oder?

    Auf unserer website www.goering.de habe ich soeben eine Freeware "KILLME" (CL-Quellen) zum Download bereitgestellt.

    HTH

    Andreas Goering
    GOERING iSeries Solutions

  10. #10
    Registriert seit
    Dec 2000
    Beiträge
    450

    Post

    Hallo Robi,

    bau doch einfach eine Escape-Message ein, wo der Abbruch stattfinden soll. APIs QMHSNDPM ist da ganz nützlich.

    Gruß
    Bruno

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207

    Post

    Ich kann mich da Bruno nur anschließen:

    1. SIGNOFF geht nur in Dialog-Jobs, da Batch-Jobs mit keinem Terminal verbunden sind!

    2. Schau Dir mal den Callstack eines Batchjobs an. An 1. Stelle steht immer QCMD, da dieser den ersten CALL ausführt.

    Mittels SNDPGMMSG ... TOPGMQ(QCMD) kann ich eine ESCAPE-Nachricht direkt senden, so dass alle dazwischenliegenden Programme keine Chance bekommen mittels Bezugszahl (RPG) oder MONMSG (CLP) einen Fehler abzufangen.
    Desweiteren gibt es dann auch immer ein Joblog, so dass ggf. Fehlergründe darüber festgestellt werden können.

    Ausserdem ist dieses Verfahren absolut üblich und bildet keinen Bruh in der Verarbeitungslogik !
    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. Jobs im Batch langsam ... V5R4 ...
    By bode in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 15-12-06, 10:43
  2. SFL im Batch benutzen
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 05-12-06, 15:13
  3. Systemsicherung im Batch
    By Frank.Sobanek in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 24-11-06, 08:51
  4. SQL-Source geht interaktiv,aber nicht im Batch
    By deni87991 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 10-08-06, 09:27
  5. STRPCCMD im Batch
    By Swiatopluk in forum IBM i Hauptforum
    Antworten: 15
    Letzter Beitrag: 09-08-06, 10:15

Berechtigungen

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