Hallo,
wenn Du bereits auf Release V5R1M0 oder höher bist, kannst Du den Feldüberlauf mit einer Monitor-Group handeln.
Beispiel:
PHP-Code:
/Free
Monitor;
Ergebnis = FeldA * Feldb / (FeldC - 2**10);
On-Error 103; //Feldüberlauf
Ergebnis = *HiVal;
On-Error 102; //Division durch Null
Ergebnis = *Zeros;
On-Error; //sonstige Fehler
Ergebnis = *Zeros;
EndMon;
/End-Free
Mit der Monitor-Group kann jeder Fehler, in einem Statement, Programm, Prozedur abgefangen werden.
Die Monitor-Group kann auch anstatt der (E)-Erweiterung bzw. der mittleren Bezugszahl verwendet werden.
Vor Release V5R1M0 musst Du einen Feldüberlauf über eine If-Abfrage abfangen:
Beispiel:
PHP-Code:
D Erg S 5 2 inz(*Zeros)
D MaxErg S like(Erg) inz(*HiVal)
D Fakt1 S 5 2 inz(999,99)
D Fakt2 S 3 0 inz(999)
C if MaxErg > %abs(%float(Fakt1 * Fakt2))
C eval Erg = Fakt1 * Fakt2
C else
C eval Erg = *HiVal
C endif
Birgitta
Bookmarks