From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT,REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!seismo!esosun!hulder.css.gov From: howard@hulder.css.gov (Howard Turner) Newsgroups: comp.lang.ada Subject: Re: What should this do? Keywords: Variable-length strings constraint exception Message-ID: <758@esosun.UUCP> Date: 28 Jun 91 21:40:23 GMT References: <1991Jun28.193513.14271@afit.af.mil> Sender: news@esosun.UUCP Reply-To: howard@hulder.css.gov (Howard Turner) Organization: Science Aplications Int'l Corp. In-reply-to: dlindsle@afit.af.mil (David T. Lindsley) List-Id: dlindsle@afit.af.mil (David T. Lindsley) writes: I have a question about dynamic strings. I was looking at a package on simtel20 that did the following: subtype INDEX is natural range 0..100; type DYN_STRING (SIZE : INDEX := 0) is private; -- private -- type DYN_STRING (size : index := 0) is -- record -- DATA : string (1..size); -- end record; the second declaration had a note to the effect of "uncomment and use this if you've got a VALIDATED compiler". Now as far as I can tell, during elaboration, a declaration of the form S : DYN_STRING; will result in the attempt to allocate an array constrained to (1..0), which should raise an exception. At least, that's what it does under VAX Ada, but not on Verdix. (Both generate warnings.) It seems to me this has to be a bug in one of the compilers. My question is: whose? Should this, or should it not, raise an exception? (The LRM references weren't any help.) Ahemm... While working on a recent project, I ran into much the same problem. One of the persons involved (Bob Smith, smith@prc.unisys.com) found the following and sent it to me. Bob set me right. Thanks Bob. Bob Smith (quite a while ago) writes: ... You might try reading LRM 3.6.1 paragraph 4: If any of the discrete ranges defines a null range, any array thus constrained is a null array, having no components. Then take a look at 3.5 paragraph 3: The range L .. R specifies the values from L to R inclusive if the relation L <= R is true. . . . A null range is a range for which the relation R < L is TRUE; no value belongs to a null range. ... While it does not explicitly mention strings, remember that the type string is defined as an array of characters. Hopes this helps Howard Turner SAIC 619.458.2654 howard@esosun.css.gov