-
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
-
versuche es mal mit
eval(h) Ergebnis = Zahl1 * Zahl2
mfg Klaus
-
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 * Zahl2: 11: 3);
/End-Free
Birgitta
-
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
-
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
-
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
-
Hallo Birgitta,
noch mal eine Frage zum alten Thema:
Definiert die Angabe der Dezimalstellen beim %decH die Größe des internen Rechenfeldes ?
 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
-
Nur die Größe des Endergebnisses. Intern wird mit Fließkomma gerechnet.
-
 Zitat von Fuerchau
Nur die Größe des Endergebnisses. Intern wird mit Fließkomma gerechnet.
Dann verstehe ich nicht, warum Dezimalstellen im %decH angegeben werde müssen, da diese doch bereits durch die Angabe des Ergebnisfeldes definiert sind.
??
mfg. Ludger
-
 Zitat von loeweadolf
Dann verstehe ich nicht, warum Dezimalstellen im %decH angegeben werde müssen, da diese doch bereits durch die Angabe des Ergebnisfeldes definiert sind.
??
mfg. Ludger
Du kannst aber auch Built-in-Funktionen dazu benutzen, um innerhalb einer Formel zu runden.
Oder aber Dein Standard-Feld ist zwar 15,5 aber es sollen nur 2 Nachkommastellen ausgewiesen werden.
Birgitta
-
 Zitat von B.Hauser
Du kannst aber auch Built-in-Funktionen dazu benutzen, um innerhalb einer Formel zu runden.
Oder aber Dein Standard-Feld ist zwar 15,5 aber es sollen nur 2 Nachkommastellen ausgewiesen werden.
Birgitta
Aha,
ist denn immer gewährleistet, dass bei der interne Rechnung
die internen Rechenfelder eine ausreichende Größe haben ?
mfg. Ludger
-
 Zitat von loeweadolf
Aha,
ist denn immer gewährleistet, dass bei der interne Rechnung
die internen Rechenfelder eine ausreichende Größe haben ?
mfg. Ludger
Reicht Dir der Bereich zwischen ca. 2,2 *10 hoch -308 bis 1,8 *10 hoch +308?
Ungenauigkeiten kann es allerdings geben, wenn mit mehr als 16 Nachkommastellen gerechnet werden muss.
Birgitta
Similar Threads
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 14-03-08, 06:21
-
By Fucasdreh in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 10-01-07, 13:12
-
By mgraskamp in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 16-02-06, 16:01
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 25-01-05, 07:43
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks