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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,685d80ec307a0c X-Google-Attributes: gid103376,public From: Philippe Torres Subject: Re: use of attribute Pos Date: 2000/10/12 Message-ID: <39E583F7.A971C8DB@laas.fr>#1/1 X-Deja-AN: 680498617 Content-Transfer-Encoding: 7bit References: <39E4A08D.B454CB1C@laas.fr> X-Accept-Language: fr-FR,en Content-Type: text/plain; charset=us-ascii X-Complaints-To: postmaster@cict.fr X-Trace: news.cict.fr 971342838 28861 140.93.144.128 (12 Oct 2000 09:27:18 GMT) Organization: Inconnue Mime-Version: 1.0 NNTP-Posting-Date: 12 Oct 2000 09:27:18 GMT Newsgroups: comp.lang.ada Date: 2000-10-12T09:27:18+00:00 List-Id: Pat Rogers wrote: > > "Philippe Torres" wrote in message > news:39E4A08D.B454CB1C@laas.fr... > > Hi, do you think the following behaviour is normal ? > > ----- > > subtype Upper is character range 'A'..'Z' ; > > begin > > Put(Upper'Pos('A')) ; > > ----- > > Output : 65 > > > > I was expecting 0 since 'A' is the first element of Upper but i got > > the ranking of 'A' in the Character type. > > > > What's the point of defining constrained subtype if we can't use the > > attributes on it ? Or am i missing something ? > > A subtype does not introduce a new type -- it names a constraint on an > existing type. Understand that and all else follows. > > You can indeed use the attributes on the subtype, but you must > recognize that only those attributes that represent *constraints* will > be different than those of the actual type in question. Thus > Upper'first will yield 'A', Upper'last will yield 'Z', and so on. > > Its all in the "names for constraints" concept... > OK. Thank you all for your answers. I understand the behaviour on a subtype of "constraint" attributes are the sole to change compared to the base class. But now, i wonder why Alejandro's solution ---- type Upper is new Character range 'A'..'Z' ; begin Put(Upper'Pos('A')) ; --- still manages to output 65 and not 0. Since a different type is introduced, how does Pos still refer to Character ? Should not 'new' have broken all "links" between the types Character and Upper ? Philippe