[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2003
    Beiträge
    338

    Dezimalstellen abschneiden

    hallo,

    folgende Merkwürdigkeit:

    D refe1 ...... s ... 20 8
    D bigewi .... s ...... 5 2
    D grammh .. s ...... 4 0
    D biistbrt ... s ...... 3 0
    D bibrut ..... s ...... 6 2


    eval(h) ref1 = (bigewi * 1000 - grammh) / (biistbrt / 100) / bibrut;

    Bei der Umwandlung wird als Fehlermeldung gebracht:
    *RNF7551 10 Ergebnis der numerischen Operation wird auf 0 Dezimalstellen abgeschnitten

    Das verstehe ich nicht, das Ergebisfeld ist doch groß genug !?

    mfg. Ludger

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Ludger,

    die Zuweisung hat die niedrigste Priorität, das heißt es wird zuerst der Ausdruck der rechten Seite berechnet und dabei werden Zwischenvariablen angelegt, die der Compiler nach einem Regelwerk (für das ich mich nicht interessieren möchte!!!) angelegt. Du hast zwei Möglichkeiten: Du kannst Dich mit dem Regelwerk befassen, und wenn Du es noch komplizierter haben willst mit irgendwelchen Modifiern dieses auch noch verändern, oder Du legst die Zwischenvariablen selber an und rechnest in Einzelschritten, dann wird so gerundet, wie Du es hinschreibst.

    mfg

    Dieter Bender

    Zitat Zitat von loeweadolf
    hallo,

    folgende Merkwürdigkeit:

    D refe1 ...... s ... 20 8
    D bigewi .... s ...... 5 2
    D grammh .. s ...... 4 0
    D biistbrt ... s ...... 3 0
    D bibrut ..... s ...... 6 2


    eval(h) ref1 = (bigewi * 1000 - grammh) / (biistbrt / 100) / bibrut;

    Bei der Umwandlung wird als Fehlermeldung gebracht:
    *RNF7551 10 Ergebnis der numerischen Operation wird auf 0 Dezimalstellen abgeschnitten

    Das verstehe ich nicht, das Ergebisfeld ist doch groß genug !?

    mfg. Ludger
    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
    Jul 2003
    Beiträge
    338
    Hallo Dieter, vielen Dank für die samstagabendliche schnelle Antwort.

    Ich hatte gehofft, mit EVAL die Einzelschritte
    (so wie früher üblich) mir ersparen zu können.

    Es sieht leider nicht so aus.

    mfg. Ludger

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das Thema ist hier schon behandelt:
    http://www.rlpforen.de/showthread.php?t=5009

    Nimm einfach "eval(r)", das funktioniert meistens.
    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

  5. #5
    Registriert seit
    Jul 2003
    Beiträge
    338
    Hallo Baldur,

    danke für den Hinweis auf den Link.

    Ich werde es mal probieren mit eval(rh)

    mfg. Ludger

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    eval(h) ist uninteressant (h=halfadjust) betrifft nur geradzahlige Stellenanzahl, eval(r) (r=round) reicht da aus.

    PS:
    Konstanten kann man auch mit Nachkomma definieren z.B. "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

Similar Threads

  1. ILE aus Feld rechts Blanks abschneiden und mit move übertragen
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 16-10-06, 12:39
  2. Client Access - ODBC - Dezimalstellen
    By Kassandra in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 17-11-03, 14:12

Berechtigungen

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