Anmelden

View Full Version : Das Ziel für eine numerische Operation ist zu klein.....



FNeurieser
15-12-15, 13:22
Hallo allerseits,

wieder einmal eine Frage von mir, da ich nicht mehr ganz durchblicke.

In einem Programm habe ich eine Variable definiert:


D RWL_VKD s 4 2

Dieser Variablen soll ein Teilstring zugewiesen werden:


rwl_vkd = %dec(%subst(DIUEB:1:4):4:2);

Die Variable DIUEB hat eine Länge von 50 und ist ein Alphafeld.

Warum bekomme ich hier immer die Meldung:
Das Ziel für eine numerische Operation ist zu klein, um
das Ergebnis aufzunehmen.
Ursache . . . . : Eine Rechenoperation hatte einen Wert zur Folge, der für
das Ziel zu groß ist. Handelt es sich um einen numerischen Ausdruck, könnte
der Überlauf das Ergebnis der Berechnung eines Zwischenergebnisses sein.
Fehlerbeseitigung: Entweder das Ziel der Operation vergrößern oder, falls es
sich um einen Ausdruck handelt, die Genauigkeit der Operanden in dem
Ausdruck so definieren, daß der Zwischenwert in das Zwischenergebnis paßt.

Ich habe auch schon versucht die Variable rwl_vkd so zu definieren
D RWL_VKD s 4s 2 -> gleiches Ergebnis.

Was mache ich hier falsch?

Danke schon mal für eure Hilfe.

LG
Franz

Fuerchau
15-12-15, 13:33
Du definierst ein Dezimalfeld mit 2 Vorkomma und 2 Nachkomma.
Also muss dein Zeichenfeld einen Wert mit "XX,YY" enthalten.
Tut er das nicht, kommt der Überlauffehler.

camouflage
15-12-15, 13:35
ich würde es so lösen:

rwl_vkd = %dec((%subst(DIUEB:1:4)/100):4:2);

Robi
15-12-15, 13:35
rwl_vkd = %dec(%subst(DIUEB:1:4):4:2)/100

FNeurieser
15-12-15, 13:49
Danke, aber bei der Lösung von camouflage gibt er beim Umwandeln schon eine Meldung über Typenunverträglichkeit aus und bei der von Robi kommt erneut die Meldung.

FNeurieser
15-12-15, 13:50
@fuerchau

Dann müsste ich also zuerst ein 4/0 Feld nehmen und dieses in ein 4/2 rechnen?

Oder aber das Textfeld gleich mit xx,xx vorbelegen?

Fuerchau
15-12-15, 13:52
Was stehen denn definitiv in der Variablen?

%dec('1234':4:0) / 100.0

sollte funktionieren.
Die "100.0" sind ggf. erforderlich damit keine Integer-Division angewandt wird.

FNeurieser
15-12-15, 13:54
Ich habe es jetzt so gelöst, dass ich das Feld mit 01,00 vorbelege und danach %dec(%subst(DIUEB:1:5)4:2); -> und siehe da es funktioniert.

Danke nochmal an alle.

LG
Franz

FNeurieser
15-12-15, 13:57
@fuerchau

genauso hat es jetzt funktioniert. Danke nochmal

Fuerchau
15-12-15, 14:19
Das Problem kann dann noch mal das Dezimalkomma werden falls du mal mit Dezimalpunkt arbeitest.
Immer daran denken woher die Daten im Endeffekt kommen.