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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!news.mixmin.net!proxad.net!feeder1-2.proxad.net!cleanfeed4-a.proxad.net!nnrp4-1.free.fr!not-for-mail Newsgroups: comp.lang.ada X-Mozilla-News-Host: news://news.free.fr:119 From: Xavier Petit Subject: Predicate and value attribute Date: Sat, 23 Jan 2016 12:16:10 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID: <56a360fa$0$3294$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 23 Jan 2016 12:16:10 CET NNTP-Posting-Host: 78.217.21.11 X-Trace: 1453547770 news-2.free.fr 3294 78.217.21.11:46109 X-Complaints-To: abuse@proxad.net Xref: news.eternal-september.org comp.lang.ada:29208 Date: 2016-01-23T12:16:10+01:00 List-Id: Hello, I have some beginner questions. subtype Number is String with Dynamic_Predicate => Positive'Value (Number) in -1 | 5; This line compiles and works. I would like some confirmation that 'Value attribute returns in this case the type Integer and doesn't take into account Positive subtype, and is why the following is valid: Test : Number := "-1"; So I should never write "Positive'Value" right ? And now my real newbie question : why do I have the error "Value_Integer is undefined" if I switch '|' to ".." this way : subtype Number is String with Dynamic_Predicate => Positive'Value (Number) in -1 .. 5; Knowing it works like this : function Check (Item : String) return Boolean is (Positive'Value (Item) in -1 .. 5); subtype Number is String with Dynamic_Predicate => Check (Number); Anyway now I use the oldschool : type Number is range -1 .. 5; and then do the conversion as string when I need to : Number'Image (Item). I could write a function to remove the first whitespace in case of non-negative number. Thanks by advance ! -- Xavier Petit