-
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 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
-
Hallo Birgitta, vielen Dank. Ludger
-
@Dieter
Ohne /free /endfree mag der Compiler aber nicht !
-
Hallo,
@Baldur: da kann man wieder mal sehen, wie schlampig dieser angeblich Meilenstein des Software Engineering entwickelt ist
Dieter Bender
-
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.
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