[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2004
    Beiträge
    470

    "Fenster schließen" abfragen

    Hab ich die Möglichkeit in meinem Programm darauf zu reagieren wenn ein Benutzer einfach das Fenster mit der 5250-Emulation schließt ohne das Programm ordnungsgemäß zu beenden.

    Ich müsste in diesem Fall noch ein paar Dateiänderungen machen

    Bei einem normalen Programmabruch mache ich die selben Dateiänderungen in der *PSSR.

    Ich habs bereits mit SHTDN probiert. Funktioniert aber nicht.

    Hat jemand noch eine Idee

    Vielen Dank für Eure Mühe

    Viele Grüsse Harald

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Sieh' dir einmal die APIs CEERTX und CEEUTX an. Damit kann dein Programm noch bestimmte Aufgaben machen, nachdem es abnormal beendet wurde. Du mußt jedoch aufpassen, daß es dabei nicht hängenbleibt, denn es hilft kein ENDJOB, sondern nur noch ein ENDJOBABN (und den darf man erst 10 Minuten nach einem ENDJOB *IMMED machen).

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Du musst einen

    CHGJOB DEVRCYACN(*MSG)

    durchführen.
    Dann erhält das Programm bei Bildschirm-I/O eine Fehlermeldung.

    Aber Achtung:
    Programme, die diese Meldung ignorieren, können den Dialog schnell zu 100% belasten!
    Begründung:
    Nach READ/EXFMT wird die INFDS mit einem entsprechenden Fehler besetzt.
    Wenn das Programm nun wie mit ENTER reagiert und ggf. nichts zu tun ist, wird sofort wieder auf den READ/EXFMT aufgesetzt, der natürlich sofort mit Fehler zurückkommt.

    Ich halte meinen Job z.B. auf *DSCMSG.
    Dadurch erhält das Programm erst die Nachricht, wenn der Job erneut verbunden wird, also quasi ein Wiederanlauf.
    Es kann nun aber nicht unterschieden werden, ob der Job tatsächlich getrennt wurde oder eben nun doch wieder aktiv wird.

    Bei *MSG musst du den Job dann ggf. selber noch beenden.
    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

  4. #4
    Registriert seit
    May 2004
    Beiträge
    470
    Hallo Herr Fuerchau,

    wie muss ich das ganze implementieren ?

    ich habe jetzt im aufrufenden CL den CHGJOB gemacht

    im rpg hatte ich bereits die infds an der bildschirmdatei.

    wie frage ich den status ab ?

    ich habe hinter dem EXFMT abgefragt ob mein Status-Feld > 99 ist ?????

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Entweder EXFMT mit Bezugszahl oder EXFMT(E).
    Dann kannst du entweder die BZ oder %ERROR() abfragen.
    Das gleiche gilt auch für READ(E) oder READ __ BZ.

    Beim WRITE wird ggf. gar kein Fehler ausgelöst, wenn die Daten gepuffert werden, es sei denn du verwendest FRCDTA.

    Bedenke, dass dein CLP ggf. den CHGJOB rückgängig macht (vorher also RTVJOBA).
    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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nachtrag:
    Du solltest dann aber auch "Systemanfrage 2" (ENDRQS) überwachen, wenn du Abschlussarbeiten benötigst.

    Hierzu muss dein CLP als "Anforderungsprozessor" eingerichtet werden:
    DCL &MYKEY *CHAR 4
    SNDPGMMSG MSG('/* */') TOPGMQ(*SAME) MSGTYPE(*RQS) KEYVAR(&MYKEY)

    RCVMSG PGMQ(*SAME) MSGTYPE(*RQS) RMV(*NO)

    Erst mit diesen Aktionen kannst du per MONMSG CPF1907 überhaupt einen ENDRQS überwachen.

    Zum Schluss deines Programmes nur noch
    RMVMSG MSGKEY(&MYKEY) CLEAR(*BYKEY)
    Damit die "/* */"-Nachricht wieder verschwindet.
    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
    May 2004
    Beiträge
    470
    Also das mit dem exfmt(e) hat wunderbar geklappt. Das mit Systemabfrage 2 kann ich vernachlässigen da dies von den Anwendern nicht gemacht wird.

    Vielen Dank für die Hilfe

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Da der ENDRQS vom CL-Programm abgefangen wird, können die Abschlußarbeiten auch nur dort stattfinden, sofern das aufgerufene Programm keine eigenen "Cancel Handler" (siehe meinen Beitrag weiter oben) registriert hat.

Similar Threads

  1. Bibliotheksliste in RPG IV abfragen
    By timeless in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-01-07, 12:04
  2. Timestamp Feld von MS Access abfragen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-09-06, 14:55
  3. Quersumme mit SQL abfragen
    By behmer in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 03-08-06, 09:53
  4. Ebene der Rekursion abfragen
    By zannaleer in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-07-06, 11:57

Berechtigungen

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