[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    47

    Falsches Ergebnis bei EVAL

    Hallo @ all,
    in einem RPGLE-Programm kommt folgendes Statement vor
    EVAL(H) Ergebnis = ((VariableA/1000) / (VariableB/100)) * VariableC

    FeldDef:
    Ergebnis 7.2
    VariableA 4.0
    Variablel 3.0
    VariableC 4.3

    Bei den Inhalten
    VariableA = 3900
    VariableB = 57
    VariableC = 8,500
    erhalte ich ein Ergebnis von 51,00.
    Was mache ich da falsch?

    Danke im Voraus.

  2. #2
    Registriert seit
    Feb 2008
    Beiträge
    104
    der RGP rundet selber schon intern (z.B. sind ja Variablea und b ohne Nachkomme definiert), das führt manchmal zu überraschenden Ergebnissen.

    Abhifel:

    selber Zwischenfelder mit entsrpechender Genauigkeit definieren und mit diesen rechnen.

    also etwa

    zw1 8,3
    zw1 = variablea/1000

    usw

    gr

    Karl-Heinz

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    47
    Hallo Karl-Heinz,

    ich hatte schon so was vermutet und auch mit Hilfs-Variablen gelöst.
    Aber damit bin ich wieder auf der Ebene des alten RPG, wo ich Hilfsfelder definieren muss und eher unübersichtliche Strukturen schaffen muss.
    Ich dachte, mit EVAL könnte ich das vermeiden, weil dieser Befehl so "schlau" sein sollte, intern möglichst genau zu rechnen.

    Danke für die Antwort
    Franz

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Probier mal mit EVAL (H R) und gib dem Ergebnis genügend Nachkommastellen.

  5. #5
    Registriert seit
    Aug 2006
    Beiträge
    47
    Bingo, Ergebnis ist einwandfrei.
    Danke

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Manchmal genügt es auch, Zahlenkonstanten mit der nötigen Genauigkeit zu definieren:

    eval(h) Feld = (FeldA / 1000.00) * (Feld2 / 100.000)
    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
    Apr 2012
    Beiträge
    360
    Wie setze ich das eigentlich im Free um?

    Code:
    eval(h)   Gesamt = (PROZENT / 100) * KOSTEN
              9,2       3,1              9,2
    Gruß

    Tarki

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Das ist Free-Format (du musst lediglich ein Semi Colon am Ende hinzufügen)!

    Code:
    Eval(H) Gesamt = (Prozent/100) * Kosten;
    Ansonsten kannst Du mit Hilfe der Built-In-Function %DECH kaufmännisch auf die gewünschte Anzahl Nachkommastellen runden.

    Code:
     Gesamt = %DecH(%DecH(Prozent/100: 5: 3) * Kosten: 9: 2);
    Birgitta
    Birgitta Hauser

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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Manchmal ist auch "eval(r) ..." ganz hilfreich um bei Zwischenergebnissen auf mehr Nachkomma zu kommen.
    Das gibts auch als Compiler-Option bzw. H-Bestimmung.

    Bei Dezimalkonstanten sollte man nach Möglichkeit die Mindestanzahl an Nachkomma mit angeben um obige Probleme (Ganzzahlenarithmetik) zu vermeiden.

    Also eher
    eval(h) Gesamt = (PROZENT / 100.00) * KOSTEN


    Das gilt i.Ü. auch für SQL.
    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

  10. #10
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke schön für eure Tips und Hilfen.

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Um es mit dem allseits bekannten Baumarktleiter aus dem westlichen Ostwestfalen, also östlichem Ruhrgebiet, also eigentlich Dortmund, zu sagen:

    "Immer füe Sie da!"
    (Fritz Ekenga, falls er unbekannt sein sollte.)
    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. InfoPrintServer ändern Empfänger
    By Jenne in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 24-11-09, 13:58
  2. Wirres SQL Ergebnis
    By lyrics in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 12:10
  3. CPYTOIMPF Ergebnis nicht lesbar
    By SUBUIS in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 09-05-06, 09:36
  4. VARPG - Excel starten
    By Spoldo in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 19-04-05, 15:32
  5. Binär rechnen & Ergebnis binär anzeigen
    By Rincewind in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 10-03-05, 11:15

Berechtigungen

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