[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jan 2005
    Beiträge
    37

    Smile Fehlerbehandlung

    Hallo,

    habe folgendes Problem:

    Bei der Verarbeitung von Schnittstellendaten mittels RPG schreiben wir an der ein oder anderen Stelle das Produkt zweier Felder in ein Zielfeld. Die Operanden sind erfolgreich durch die Plausiprüfung gelaufen, aber das Produkt ist unter Umständen zu groß für das Zielfeld, wenn bereits ein Wert (im Zielfeld) enthalten ist und dieser zum Produkt addiert wird. Die Anwendung läuft auf einen Fehler und es ist eine Benutzereingabe erforderlich (eine Break Message wird ausgegeben).

    Kann man so einen Fehler, ähnlich einer Try / Catch Behandlung in Java, nicht automatisch abfangen und ebenso automatisch übergehen, weiterreichen etc. ?

    Die Verarbeitung erfordert an dieser Stelle eine Eingabe und wird anschließend fortgesetzt, da der Fehler jedoch in der Nachtverarbeitung auftritt, ist kein Benutzer anwesend, der die Eingabe vornehmen könnte.

    Hat jemand einen Tipp ?

    Gruß Andreas Sturm

    P.S.
    Wünsche schöne Weihnachtsfeiertage und einen Guten Rutsch

  2. #2
    Registriert seit
    Apr 2002
    Beiträge
    792
    Moin,

    du kannst eine Monitor-Group verwenden.

    PHP-Code:
    /Free
    Monitor
    ;
        
    Ziel Wert1 Wert2;
    On-Error;
       
    // Fehlerbehandlung
    ENDMON;
    /
    End-Free 
    Gruß

    Sascha

  3. #3
    Registriert seit
    Oct 2005
    Beiträge
    39

    oder

    d ergebn s 9 2

    c if wert1 * wert2 > 9999999,99
    c eval ergebn =*Hival
    c else
    c eval ergebn = weret1 * wert2
    c endif

  4. #4
    Registriert seit
    Jan 2005
    Beiträge
    37

    Ohne Breakmessage wäre mir lieber !

    Das programmatisch so abzufangen ist OK, mich würde aber interessiern, ob man die erforderliche Benutzereingabe für eine Breakmessage nicht "automatisieren" bzw. die Message unterdrücken kann.

    Gruß Andreas Sturm

  5. #5
    Registriert seit
    Apr 2002
    Beiträge
    792
    Zitat Zitat von Asti
    Das programmatisch so abzufangen ist OK, mich würde aber interessiern, ob man die erforderliche Benutzereingabe für eine Breakmessage nicht "automatisieren" bzw. die Message unterdrücken kann.

    Gruß Andreas Sturm
    Verstehe ich jetzt nicht ganz. Wenn du eine Monitor-Group verwendest kommt es nicht zu einer Breakmeassage.
    Du kannst natürlich einen Antworteintrag für Fehlernachrichten setzen (WRKRPYLE), aber das macht für solche Fälle eigentlich keinen Sinn

    Gruß

    Sascha

  6. #6
    Registriert seit
    Jan 2005
    Beiträge
    37

    ?!

    .... nicht PHP sondern RPG !



    Zitat Zitat von JonnyRico
    Moin,

    du kannst eine Monitor-Group verwenden.

    PHP-Code:
    /Free
    Monitor
    ;
    Ziel Wert1 Wert2;
    On-Error;
    // Fehlerbehandlung
    ENDMON;
    /
    End-Free 
    Gruß

    Sascha

  7. #7
    Registriert seit
    Apr 2002
    Beiträge
    792
    Zitat Zitat von Asti
    .... nicht PHP sondern RPG !
    WHAT??? Das ist RPG-Code nur um den hier schöner darzustellen, verendet man PHP-Tags!

  8. #8
    Registriert seit
    Aug 2004
    Beiträge
    923
    Hallo Asti,

    ich persönlich würde die Problembeseitigung davon abhängig machen, wie auf die Fehlermeldung im Nachtlauf bisher reagiert wurde.
    Was passiert denn dann?
    Wird das Programm abgebrochen, die Werte manuell in irgendwelchen Dateien gepitcht, und dann das Programm neu aufgerufen, oder was?

    Warum so etwas "kompliziertes" wie ein Monitoring? (try/catch)

    Genügt es nicht einfach im RPG VOR der Stelle die knallt ne einfach IF-Abfrage reinzubauen, die dann entsprechend reagiert (Wert ändern, Nachrich senden o.ä.)?

    DAS wäre für mich ne Lösung die ich akzeptabel finden würde.
    Alles andere würde nach Murphy die Sache doch nur noch "verschlimmbessern"..

    kuempi

  9. #9
    Registriert seit
    Jan 2005
    Beiträge
    37

    ... es wird abgebrochen ...

    und auf die Benutzereingabe gewartet. Auf diese Vorgehensweise habe ich selber keinen Einfluss; würde den RPG Programmierern, die derzeit keine Alternative finden, gerne einen Vorschlag unterbreiten.

    Gruß Andreas Sturm

    Zitat Zitat von kuempi von stein
    Hallo Asti,

    ich persönlich würde die Problembeseitigung davon abhängig machen, wie auf die Fehlermeldung im Nachtlauf bisher reagiert wurde.
    Was passiert denn dann?
    Wird das Programm abgebrochen, die Werte manuell in irgendwelchen Dateien gepitcht, und dann das Programm neu aufgerufen, oder was?

    Warum so etwas "kompliziertes" wie ein Monitoring? (try/catch)

    Genügt es nicht einfach im RPG VOR der Stelle die knallt ne einfach IF-Abfrage reinzubauen, die dann entsprechend reagiert (Wert ändern, Nachrich senden o.ä.)?

    DAS wäre für mich ne Lösung die ich akzeptabel finden würde.
    Alles andere würde nach Murphy die Sache doch nur noch "verschlimmbessern"..

    kuempi

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Also solche Fehler automatisch zu ignorieren, halte ich im Sinne der Anwendung für fatal, wer weiß, welche Folgefehler durch solche fehlerhaften Daten dann entstehen.
    Ein RPG-Programmierer müsste eigentlich wissen, wie man solche Fehler abfängt

    Lass doch deine RPG-Programmierer mal hier ins Forum schauen.
    Beide Möglichkeiten
    - IF Wert zu groß
    - Monitor
    sind korrekt, aber das Programm sollte wissen, was dann zu geschehen hat. Einfache Ignoranz ist bestimmt nicht korrekt, insbesonders wenn z.B. Provisionen vom Umsatz oder Buchhaltung betroffen sind.
    Solche Meldungen per RPYLE zu beantworten bedeutet auch, dass andere Programme mit ähnlichen Fehlern automatisch weiterlaufen und keiner merkt's.
    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
    Jan 2005
    Beiträge
    37
    Hallo,

    habe mir eben die beiden Möglichkeiten mit einem RPG Programmierer angeschaut. Den Vorschlag bezüglich RPYLE würde ich selber als ungeeignet einschätzen, da Auswirkungen auf alle Anwendungen zu erwarten sind. Leider liegen besagte Programme nicht im Freeformat vor, was Vorschlag 2 wohl ausschließt (MonitoR) !? Da bei der Verarbeitung eine ganze Reihe Felder auf beschriebene Weise gefüllt werden ist eine Ergänzung um die IF Abfrage zur Zeit kein Thema (zu viel Aufwand).

    Problematisch ist, daß der Rest der Nachtverarbeitung nicht weiterläuft und diese Auswirkungen wesentlich kritischer sind als die fehlende oder fehlerhafte Verarbeitung des (einen) Satzes.

    Angemerkt sei folgendes: die Wahrscheinkichkeit für diesen Fehler ist schon sehr gering, da die Schnittstellendaten eigentlich sehr "sauber" sind (ist 1 x innerhalb von 3 Jahren aufgetreten).

    Der fehlerhafte Satz soll nicht ignoriert werden, es wäre aber "sehr schön", wenn keine Benutzereingabe erforderlich ist und der Programmieraufwand im akzeptablen Rahmen bleibt. Noch 'ne Idee ?!

    Gruß Andreas Sturm

    Zitat Zitat von Fuerchau
    Also solche Fehler automatisch zu ignorieren, halte ich im Sinne der Anwendung für fatal, wer weiß, welche Folgefehler durch solche fehlerhaften Daten dann entstehen.
    Ein RPG-Programmierer müsste eigentlich wissen, wie man solche Fehler abfängt

    Lass doch deine RPG-Programmierer mal hier ins Forum schauen.
    Beide Möglichkeiten
    - IF Wert zu groß
    - Monitor
    sind korrekt, aber das Programm sollte wissen, was dann zu geschehen hat. Einfache Ignoranz ist bestimmt nicht korrekt, insbesonders wenn z.B. Provisionen vom Umsatz oder Buchhaltung betroffen sind.
    Solche Meldungen per RPYLE zu beantworten bedeutet auch, dass andere Programme mit ähnlichen Fehlern automatisch weiterlaufen und keiner merkt's.

  12. #12
    Registriert seit
    Oct 2005
    Beiträge
    39

    na dann

    ändere einfach die entsprechende Jobbeschreibung auf default-Antwort.
    CHGJOBD JOBD(QBATCH) INQMSGRPY(*DFT)
    dann sollte das fehlerhafte Programm den defaultwert für die Fehlermeldung erhalten und z.B. dumpen und natürlich sich selbst beenden.

Similar Threads

  1. INFSR/PSSR
    By Squall in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 07-10-06, 16:20
  2. SQL Funktion und Fehlerbehandlung
    By C_Dewald in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 06-08-03, 08:14

Berechtigungen

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