PDA

View Full Version : Ersatzzeichenfolge für eine Formel



harkne
07-07-15, 13:01
Hallo zusammen,

ich habe eine Datei mit den Feldern ausgepackte Menge (UNPQ) , gebuchte ausgepackte Menge (UNBQ) und defekte Menge (DMGQ).

Meine zu berechnende offene Menge ergibt sich aus UNPQ - UNBQ - DMGQ

Das heißt an jeder Stelle an der ich die offene Menge benötige müsste ich nun wieder folgende Anweisung angeben (Anmerkung nicht free Code)
EVAL OPNQ = UNPQ - UNBQ - DMGQ

So wie ich in den D-Bestimmungen z.B. cMwSt für 19% angeben kann hätte ich nun irgendwo angegeben cOpnQ und dahinter verbirgt sich diese Rechnung.

Also hätte ich gerne dann folgende Anweisung angegeben

EVAL OPNQ = cOpnQ

Ich könnte zwar eine Funktion verwenden aber der müsste ich dann auch die 3 Parameter mitgeben damit gerechnet wird. Ich möchte vorbeugen dass sich wenn sich die Formel mal ändert ich alle Anweisungen ändern muss.

Hat jemand eine Idee ?

Viele Grüße Harkne

malzusrex
07-07-15, 13:20
h dftactgrp(*no)
d a s 4 0 Inz( 10 )
d b s 4 0 Inz( 2 )
d c s 4 0 Inz( 1 )
d d s 4 0 Inz( *Zeros )
c Eval d = Wert
c Eval *InLr = *On
p wert b
d wert pi 4 0
d Ergebnis s 4 0

c Eval ergebnis = a-b-c
c Return ergebnis
p wert e


Geht doch auch ohne Werte der Funktion mit zu geben.

harkne
07-07-15, 13:21
Hat sich erledigt.

Mir war nicht bewusst dass die Variablen des Hauptprogramms den Funktionen zur Verfügung stehen. Somit kann ich ja eine Funktion aufrufen die genau das berechnet ohne ihr Parameter mitzugeben.

harkne
07-07-15, 13:22
Hi malzusrex

danke,

ich habe genau dein Beispiel eben selbst gemacht (nur ander Inz-Werte) ;-)




h dftactgrp(*no)
d a s 4 0 Inz( 10 )
d b s 4 0 Inz( 2 )
d c s 4 0 Inz( 1 )
d d s 4 0 Inz( *Zeros )
c Eval d = Wert
c Eval *InLr = *On
p wert b
d wert pi 4 0
d Ergebnis s 4 0

c Eval ergebnis = a-b-c
c Return ergebnis
p wert e


Geht doch auch ohne Werte der Funktion mit zu geben.

Robi
07-07-15, 13:48
wegen der Lesbarkeit würde ich hier immer mit mit einem dummy parameter arbeiten
also

eval d = wert()

so erkennt auch ein dritter, das wert ne Funktion ist und sucht sich keinen Wolf!

Oder via Namensregel, statt wert z.B. F_wert

Jeder macht das natürlich wie es für Ihn am richtigsten ist. Trotzdem ist es nicht verkehrt
auch mal an andere ggf erst kommende Programmierer zu denken!

Robi

malzusrex
07-07-15, 14:11
eval d = wert()
Robi

Da gebe ich dir Recht!
Macht das Leben und das Lesen fremder Quellen einfacher.

Gruß
Ronald

Fuerchau
12-07-15, 10:18
Man kann auch gleich "return a-b-c" kodieren und benötigt kein Zwischenfeld.

malzusrex
12-07-15, 20:06
"return a-b-c"

Hmm,
ich meine ich hatte das probiert und habe einen Umwandlungsfehler bekommen...
... Kann mich jetzt aber auch täuschen

Fuerchau
13-07-15, 09:14
RETURN (Return to Caller)
Free-Form Syntax RETURN{(HMR)} Expression

Code Factor 1 Extended Factor 2
RETURN (HM/R) Expression

"Expression" steht nun mal für Ausdruck.
Hier kann man dann auch wiederum Funktionen verwenden.