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

    Thumbs up FREE RPG Extender H für aufrunden

    Wie kann ich aufrunden im FREE RPG.

    Beispiel:
    Ergebnis (h) = Zahl1 * Zahl2


    Die Umwandlungsliste meldet mir: *RNF7030: Der Name H ist nicht definiert.

    Im Internet (RPG-Referenz) konnte ich die Lösung nicht finden.

    mfg. Ludger

  2. #2
    Registriert seit
    Jul 2001
    Beiträge
    16
    versuche es mal mit

    eval(h) Ergebnis = Zahl1 * Zahl2

    mfg Klaus

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Built-in-Function

    Hallo Ludger,

    normealerweise sind EVAL und CALLP in RPG-Free-Format nicht notwendig.
    Die einzige Ausnahme ist bei Erweiterungen z.B. (H) oder (E).
    Werden Erweiterungen verwendet, darf zwischen dem OpCode und der Erweiterung kein *Blank stehen!
    (Im Gegensatz zur klassischen Schreibweise)

    Wenn Du auf das EVAL verzichten möchtest, musst Du mit Built-In-Funktionen arbeiten.
    z.B. %DecH für Dezimal-Werte, %IntH oder %UnsH für Integer
    Das H steht jeweils für kaufmännisch runden.

    PHP-Code:
     /Free
        Ergebnis 
    = %DecH(Zahl1 Zahl2113);
     /
    End-Free 
    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

  4. #4
    Registriert seit
    Jul 2003
    Beiträge
    338
    Hallo Klaus, es hat geklappt, danke..

    Ich war mir 100% sicher, diese Variante schon getestet zu haben, anscheinend wohl doch nicht.

    Ein anderes Problemchen:
    Wie bringe ich in FREE RPG ein Datumsfeld in ein num. Feld mit 6,0 Länge ?

    D Datum S d
    D DatNeu S 6 0

    Datum ist bereits gefüllt (*eur).
    Nun möchte ich den Inhalt von Datum nach DatNeu (dmy) überstellen.

    mfg- Ludger

  5. #5
    Registriert seit
    Jul 2003
    Beiträge
    338
    Hallo Birgitta, danke für den Hinweis.

    Eine Frage zu %decH
    Was bedeuten in dem Beispiel die Angaben :11:3 ?
    Ist das die Länge des Ergebnisfeldes ? Das kann eigentlich nicht sein, da dieses bereits definiert wurde.

    Warum ist in Free Rpg kein CALLP mehr notwendig ?

    mfg. Ludger

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

    Datum

    Hallo Ludger,

    1. Umsetzen Datum nach Datum 6,0 im Format DMY:
    PHP-Code:
    D DateEur         S               D   DatFmt(*Eur
    D DateNum         S              6P 0 
     
    /Free                                           
      DateNum 
    = %Int(%Char(DateEur: *DMY0));
     /
    End-Free 
    2. Bei der Built-in-Funktion %DecH können die Länge und die Anzahl der Dezimal-Stellen angegeben werden. (Parameter 2/3)
    Dies ist gerade bei komplexen Rechenoperationen sinnvoll, da intern mit Gleit-Komma gerechnet wird.
    Die Parameter können als Variable verwendet werden.
    Allerdings muss das Format zur Compile-Zeit bekannt sein.
    Am besten hinterlegt man eine Konstante:
    Länge: Const(%Size(RefFeld))
    Anzahl Dezimalstellen: Const(%DecPos(RefFeld)

    3. Warum wird CallP im Free-Format nicht mehr benötigt?
    Die Frage müsste anders lauten: Warum wurde CallP in der klassischen Schreibweise benötigt?
    Aus dem gleichen Grund warum EVAL erfunden wurde:
    Damit das Feld OPCODE gefüllt werden kann.
    Durch die eindeutige Schreibweise kann der Compiler erkennen, dass es sich um einen Programm/Prozedur-Aufruf handelt.

    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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo nochmal,

    @Birgitta zu 3. stimmt nur fast, das mit dem CallP, da gibt es ein paar Probleme, da RPG nach wie vor keine reservierten Wörter hat. Der Compiler kriegt den Husten, wenn man eine procedure wie einen Opcode nennt und reagiert darauf unterschiedlich und kurios.

    BTW: als ich das erste Mal auf einer common Veranstaltung nach den zwei überflüssigsten RPG Anweisungen gefragt habe und dann EVAL und CALL benannt habe, habe ich einiges an Murren provoziert.

    Was sind die zwei überflüssigsten RPG Anweisungen im Free Format???
    /free und /endfree; das sieht man schon daran, dass keine Lochkartenart (Stelle 6) angegeben ist.

    mfg

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Jul 2003
    Beiträge
    338
    Hallo Birgitta, vielen Dank. Ludger

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    @Dieter

    Ohne /free /endfree mag der Compiler aber nicht !
    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
    Mar 2002
    Beiträge
    5.365
    Hallo,

    @Baldur: da kann man wieder mal sehen, wie schlampig dieser angeblich Meilenstein des Software Engineering entwickelt ist

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Jul 2003
    Beiträge
    338

    Wink

    Hallo Birgitta,

    noch mal eine Frage zum alten Thema:

    Definiert die Angabe der Dezimalstellen beim %decH die Größe des internen Rechenfeldes ?

    Zitat Zitat von B.Hauser
    Bei der Built-in-Funktion %DecH können die Länge und die Anzahl der Dezimal-Stellen angegeben werden. (Parameter 2/3)
    Dies ist gerade bei komplexen Rechenoperationen sinnvoll,
    da intern mit Gleit-Komma gerechnet wird.
    Die Parameter können als Variable verwendet werden.
    Allerdings muss das Format zur Compile-Zeit bekannt sein.
    Am besten hinterlegt man eine Konstante:
    Länge: Const(%Size(RefFeld))
    Anzahl Dezimalstellen: Const(%DecPos(RefFeld)

    Birgitta

    mfg. Ludger

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nur die Größe des Endergebnisses. Intern wird mit Fließkomma gerechnet.
    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. Datum-Konvertierung free rpg
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 14-03-08, 06:21
  2. Frei Porn Site!
    By Fucasdreh in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 10-01-07, 13:12
  3. Mehrere Bezugszahlen auf *off in Free RPG
    By mgraskamp in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 16-02-06, 16:01
  4. FREE RPG .. TESTN
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 25-01-05, 07:43
  5. Free Rpg Zeitdauer errechnen
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 12-07-04, 09:27

Berechtigungen

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