From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 29 Oct 92 10:44:25 GMT From: bloom-picayune.mit.edu!snorkelwacker.mit.edu!ira.uka.de!ira.uka.de!math.f u-berlin.de!weberwu@bloom-beacon.mit.edu (Debora Weber-Wulff) Subject: DATA_ERROR exception problem Message-ID: List-Id: [Now that we have the umlauts sorted out, the next problem!] I want to write a compeletly safe input procedure for integers: I GET an integer, and if DATA_ERROR is raised, I want to loop around until I get a decent answer. My problem is that DATA_ERROR is raised on two different conditions: an integer being illegal, i.e. out of bounds, or an illegal character being encountered (such as when I enter "1.0" or "z"). The problem ist that in the former case, the input buffer has been emptied (all digits read); in the latter, the illegal character (and all following characters) remain in the input buffer. How can I differentiate the two cases, so that I can GET_LINE (input_garbage, input_garbage_size) and reprompt for input? On Meridian's PC Ada I get an endless loop if I don't remove the garbage, and have to enter extra garbage if the problem was a bound error (!!). Is there any other way to do this besides reading in the input as a string and patching together an integer myself :-( ? Stupid me wanted to introduce my beginners to exceptions from the start - we specified type-safe input, and I expected it to be relatively straight-forward to implement in Ada. What am I missing? Thanks for any comments, by mail or by news. -- Debora Weber-Wulff dww@inf.fu-berlin.de Institut fuer Informatik +49 30 89691 124 Nestorstr. 8-9 (INCLUDE "standard.disclaimer") D-W-1000 Berlin 31 (PRINTN (WITTY-MESSAGE TODAY))