View Full Version : warum 0
Hi @all
kann mir mal einer erklären warum das 0 und nicht 3 ist ?
D xxx DS
D SUST 1 0 Dim(100)
D IXX 3 0 inz
...
D ATR3 S 1
...
C eval SUST(2)= 8
...
C EVAL IXX = 2
...
C EVAL ATR3 = %EDITC((SUST(IXX)-5):'X')
Ergebmis in ATR3 : 0 statt 3, warum ?
gruß
IleMax
ATR3 muss mindestens 2A sein.
Hallo,
SUST(IXX)-5 generiert ein 2-stelliges Ergebnis, '03'
Durch den EVAL und den %EditC wird nur die 1.Stelle in das einstellige Text-Feld übertragen. Demzufolge ist das Ergebnis 0
Birgitta
Vielen Dank euch beiden für die Info.
wobei
einstelliges Feld minus einstelliges Feld = 2 stelliges Feld aus meiner sicht etwas seltsam ist
naja, RPG halt
Danke
ILEMax
naja, mit solchen Problemen muss man immer rechnen bei geschachtelten Ausdrücken (und beim rechnen mit Literalen). Die Zuweisung hat immer die niedrigste Priorität und Klammern haben Vorrang. Der Compiler legt sich dann nach irgendwelchen Regelwerken (die man manchmal in der Reference findet, manchmal nicht) Zwischenvariablen an und die für (SUST(...) - 5) ist hier halt zweistellig (nach dem Fressermotto lieber den Magen verrenken als was zu verschenken). Man hat jetzt mehrere Möglichkeiten:
- man lernt die Reference auswendig
- man sagt klar, was man haben will
-- nicht schachteln
-- Zwischenvariablen selber anlegen
-- casten (-> %editc(%dec(sust...): 1 : 0)), oder so ähnlich)
D*B
Vielen Dank euch beiden für die Info.
wobei
einstelliges Feld minus einstelliges Feld = 2 stelliges Feld aus meiner sicht etwas seltsam ist
naja, RPG halt
Danke
ILEMax