HDTenEightyP/NetNews huggingface dataset:
From: dnsurber@lescsse.jsc.nasa.gov (Douglas N. Surber)
Subject: Re: null arrays
Organization: Lockheed Engineering and Sciences
Date: 18 Nov 92 14:48:45 GMT

In <BxvtCA.LM1@dale.cts.com> jhb@dale.cts.com (John Bollenbacher) writes:

>procedure TEST is

>  subtype T is NATURAL range 0 .. 10;

>  type ARR is array (T range <>) of BOOLEAN;
>  
>  type A(N : T := 0) is record 
>    DATA : ARR(1..N);
>  end record;  
>  I : INTEGER;
>  O : A := (3, (TRUE, FALSE, TRUE));
>  
>  N1 : constant ARR := O.DATA(1..0) & O.DATA(1..0);
>  N2 : constant ARR := O.DATA(1..0) & O.DATA(3..2);

N2'first = 3 (LRM 4.5.3 4)

>begin
>  I := N1'LENGTH; -- I = 0 
>  I := N2'LENGTH; -- I = 0
>  O := (0, N1);   -- does not raise constraint
>  O := (0, N2);   -- raises constraint
 
O.Data'first /= N2'first thus raises constraint error (LRM 4.3.1 3, 3.3 4)

>end TEST; 

The trick here is that the constraint error is raised in forming the
aggregate, not in the assignment.  LRM 4.3.1 3 says "A check is made that
the value of each subcomponent of the aggregate _belongs_ to the subtype
of this component."  The magic word is "belongs".  LRM 3.3 4 says "a value
is said to belong to a subtype of a given type if it belongs to the type
and satisfies the constraint." The bounds of N2, i.e. 3 and 2, do not
satisfy the constraint of the aggregate, i.e. in the range 1 .. 0.  If this
were an array assignment rather than an aggregate, it would work.

Douglas Surber
Lockheed
Houston, TX
Newsgroups: comp.lang.ada
From: strickla@source.asset.com (Samuel N. Strickland)
Subject: Ada/Motif Bindings
Date: Thu, 19 Nov 1992 22:29:07 GMT
Organization: Asset Source for Software Engineering Technology


> From darwin.sura.net!zaphod.mps.ohio-state.edu!swrinde!ctcvax.ccf.swri.edu!trident!tim Thu Nov 19 17:05:26 EST 1992
> Article: 2553 of comp.lang.ada
> Path: source.asset.com!darwin.sura.net!zaphod.mps.ohio-state.edu!swrinde!ctcvax.ccf.swri.edu!trident!tim
> Newsgroups: comp.lang.ada
> Subject: Ada and X/Motif
> Message-ID: <195@trident.datasys.swri.edu>
> From: tim@trident.datasys.swri.edu (Timothy J. Barton)
> Date: 16 Nov 92 22:20:50 GMT
> Organization: Southwest Research Institute
> Keywords: Ada, X-Windows, Motif
> Summary: Anyone using Ada and Motif?
> Lines: 18
> 
> The FAQ lists several Ada to X/Motif bindings and I am preparing to do
> such a project for the AF.  Does anyone have experience with Ada and
> X, especially the DEC Ada Motif bindings?  Are the currently available
> solutions usable?  I thought I had seen considerable discussion in this
> group about several problems with Ada and X (callbacks ?), but unfortunatley
> I didn't pay close attention to the thread.  Please email any comments
> you have and I'll post a summary in several days.
> 
> Is STARS still on "stars.rosslyn.unisys.com" as specified in the FAQ?  My
> resolver and nslookup couldn't find an IP number for the name.
> 
> Thanks in advance.
> 
> ----------------------------------------------------------------------------
> Timothy J. Barton                         tim@trident.datasys.swri.edu
> Senior Research Analyst                   (512) 522-3540
> Southwest Research Institute (SwRI)       (512) 522-5499  (Fax)   
> San Antonio, Texas  78228-0510
> 
> 

"stars.rosslyn.unisys.com" is now "stars.rosslyn.paramax.com"

		Sam
		strickla@asset.com


Newsgroups: comp.lang.ada
From: accs1@bagheera.mumath
Subject: Ada/Ed for AMIGA
Reply-To: accs1@bagheera.mumath
Organization: Sun Microsystems
Date: Wed, 18 Nov 92 13:35:40 GMT


Where is Ada/Ed for AMIGA available? Which FTP site has it?
Thanks 

Frank
Newsgroups: comp.lang.ada
From: jlg@cochiti.lanl.gov (J. Giles)
Subject: Re: Computer languages
Organization: Los Alamos National Laboratory
Date: Wed, 18 Nov 1992 18:17:46 GMT

In article <9211121331.AA21974@efftoo.boeing.com>, crispen@efftoo.boeing.com (crispen) writes:
|> Sorry for the heresy that follows, but every time there's any text
|> to process, it's C for me.  [...]

Why?  C has *NO* language features supporting text *at all*.  It has
callable functions which are inconvenient and can be efficiently
written for *any* other language as well.  Even Fortran has better,
more convenient text handling features than C.  All the C text
handling functions can be written, tested, and debugged in Fortran
in about an hour (I know: I did it once on a bet).  But Fortran
has string assignment, substring selection, and concatenation
*built-in*!

To be sure, there are text handling *languages* which are better
than any of the general purpose Fortran, Ada, or Pascal style
languagtes for text.  But C is by far worse than any of these.

I can never understand why C is so often recommended for the 
things it's *poorest* at.

-- 
J. Giles
From: jhb@dale.cts.com (John Bollenbacher)
Newsgroups: comp.lang.ada
Subject: re: [null arrays]
Date: 19 Nov 92 17:51:32 GMT
Organization: Titan Linkabit Corporation
X-Newsreader: Tin 1.1 PL5

Thanks to all that responded to my initial mail on this thread.  I have a
followup question.  Is there a more straightforward way to code the function 
(REMOVE) below, given the restriction on sliding in aggregate creation?

package TEST is
  subtype T is NATURAL range 0 .. 10;

  type ARR is array (T range <>) of BOOLEAN;
  
  type A(N : T := 0) is record 
    DATA : ARR(1..N);
  end record;  
 
  function REMOVE(ELEMENT : BOOLEAN;
                  FROM    : A) return A;
  
end TEST; 
package body TEST is
  function REMOVE(ELEMENT : BOOLEAN;
                  FROM    : A) return A is
    RESULT : ARR(1..FROM.N-1);
  begin
    for I in FROM.DATA'RANGE loop
      if FROM.DATA(I) = ELEMENT then
        RESULT := FROM.DATA(1..I-1) & FROM.DATA(I+1..FROM.N);
        return (FROM.N - 1, RESULT);
      end if;
    end loop;    
    return FROM;
  end REMOVE; 
  
end TEST;


--
-----------------------------------------------------------------------------
- John Bollenbacher                                        jhb@dale.cts.com -
- Titan Linkabit Corp.                                       (619) 552-9963 -
- 3033 Sience Park Rd.                                                      -
- San Diego, Ca. 92121                                                      -
-----------------------------------------------------------------------------
From: gaertnej@Informatik.TU-Muenchen.DE (Jakob Gaertner)
Subject: Ada on QNX
Keywords: realtime, QNX, POSIX, compiler
Originator: gaertnej@hphalle9a.informatik.tu-muenchen.de
Organization: Technische Universitaet Muenchen, Germany
Date: Thu, 19 Nov 1992 17:26:24 GMT


Hello world!

I am desperately searching for a compiler, which runs on or makes executables for
my QNX 4.1 OS.

QNX would be an ideal platform for development in Ada, because it is designed
specially for realtime applications and is much faster than UNIX. (Though it fits
POSIX 1003 standards)

If anyone could give me a contact to get more information, please reply!

thanx

Jak 
Newsgroups: comp.lang.ada
From: bortzmeyer@cnam.cnam.fr (Stephane Bortzmeyer)
Distribution: world
Organization: cnam
Subject: DEC Ada run-time error messages (Was: More Ashamedness of Ada - this time OBJECT WORLD)
Date: Mon, 16 Nov 92 19:03:01 +0100
X-Received: by usenet.pa.dec.com; id AA08964; Mon, 16 Nov 92 10:04:29 -0800
X-Received: by inet-gw-2.pa.dec.com; id AA16507; Mon, 16 Nov 92 10:04:13 -0800
X-Received: from cnam.cnam.fr ([163.173.128.6]) by chenas.inria.fr (5.65c8d/92.02.29)via Fnet-EUnet id AA25869; Mon, 16 Nov 1992 19:02:49 +0100 (MET)
X-Received: from localhost by cnam.cnam.fr with SMTP id AA02960  (5.65c+/IDA-1.4.4 for comp.lang.ada.usenet@decwrl.dec.com); Mon, 16 Nov 1992 19:03:03 +0100
X-To: comp.lang.ada.usenet
X-Newsgroups: comp.lang.ada
X-References: <BwvCGp.6o3@world.std.com^<1992Nov6.171528.4730@rdg.dec.com> <1992Nov11.142808.17224@aber.ac.uk> <112@fedfil.UUCP>
X-Mts: smtp

In article <112@fedfil.UUCP>, news@fedfil.UUCP (news) writes:
> In article <1992Nov11.142808.17224@aber.ac.uk>, btk@aber.ac.uk
(Benjamin Thomas Ketteridge) writes:
...
>>  the DEC Ada compile-time messages are
>> very good, but it suffers from C-like run-time error-messages (this is not
>> surprising since the main program of DEC Ada programs is actually in C!)
> 
> You wouldn't expect them to write anything that complex in a goof language
> like Ada, would you?

DEC's "Software Product Description" says that the DEC Ada compiler for
Ultrix is written in Bliss and Ada (no proportions given). So, it's not
the fault of C...

> Ted Holden

He's back! He probably thought that Gregory's Aharonian criticisms were
too honest and too documented... 

Stephane Bortzmeyer           Conservatoire National des Arts et Metiers	
bortzmeyer@cnam.cnam.fr       Laboratoire d'Informatique
                              292, rue Saint-Martin			
tel: +33 (1) 40 27 27 31      75141 Paris Cedex 03
fax: +33 (1) 40 27 27 72      France	

"C'est la nuit qu'il est beau de croire a la lumiere." E. Rostand

Newsgroups: comp.lang.ada
From: tom@hpncmo.rose.hp.com (Thomas Vachuska)
Subject: Re: Outputting quote marks
Date: Fri, 20 Nov 1992 22:31:41 GMT
Organization: HP Networked Computer Mfg. Operation
X-Newsreader: TIN [version 1.1.8 PL6]

Robert Rosen (rosen@plato.ds.boeing.com) wrote:
: I need to use Text_IO to output a string consisting of three
: consecutive quote marks (""").  How can I do it?  Trying 
: 
:   Text_IO.Put_Line (""""");
: 
: produces a compilation error.

Try this...

    Text_Io.Put_Line (<some-string> & Ascii.Quotation & <other-string>);

Thomas Vachuska
------------------------------------------------------------------------------
tom@mothra.rose.hp.com                   (916)-785-4983  (Telnet & Voice Mail)
------------------------------------------------------------------------------
Newsgroups: comp.lang.ada
From: val@news.ccutah.edu (Val Kartchner)
Subject: Re: Who uses Ada??
Organization: University of Utah Computer Center
X-Newsreader: Tin 1.1 PL3
Date: Wed, 18 Nov 92 00:32:34 GMT

rlk@VisiCom.COM (Bob Kitzberger) writes:
: p.s. Does painting on oil and canvas limit an artist's expressive power,
:      or does it provide focus for their expression?  Michaelangelo's
:      Sistine Chapel and Chagall's ceiling of the Paris Opera show what
:      genius can do when constrained by his medium (i.e. painting on a
:      ceiling).  Various works by uncsonstrained contemporary artists
:      show what kind of horrid stuff can result when you impose no 
:      limitations at all.

There are many types of art; some better than painting, some worse.  But
isn't there a Congressional mandate about requiring all art to be done
with paint no matter what is painted on?  Since each eye can only see a
two dimensional image, aren't all art forms equivalent.  (Perhaps there is
an analogy here.)

I know that Paul A. Strassmann (Director of Defense Information) thinks
that ALL (software as) art should be done away with.  Does this mean
that creativity in software design is bad?  Perhaps there should be two
classes of programmers: software engineers who make functional but dull
software, and software architects who design software systems with
creativity and art.

				-=:[ VAL ]:=-

p.s.: I've seen some horrible paintings (real and analogous).
--
|===== The previous was my opinion -- val@csulx.weber.edu =====///============|
| "AMIGA: The computer for the creative mind." (tm) Commodore /// Weber State |
| "Macintosh: The computer for the rest of us."(tm) Apple \\\///  University  |
|============== "I think, therefore I AMiga." =============\///=== Ogden, UT =|
From: crispen@efftoo.boeing.com (crispen)
Newsgroups: comp.lang.ada
Subject: SA/SD Documentation of an OBD Design
Date: 16 Nov 92 13:58:36 GMT
Distribution: world
Organization: The Internet

I'm so confused!  Look, gang, you perform vanilla systems engineering,
right?  And you end up with partitions that allocate your functional
requirements to components in some sort of decomposition step, right?
Or don't you OODers have any functional requirements to allocate?
Didn't think so.

But once you've finished decomposing your system, there's a step in
vanilla systems engineering practice called "synthesis".  Or at least
there is unless the "elegance" of your functional decomposition fools
you into thinking that you've already got a design.

Could it be that the reason everybody thinks that functional decomposition
sucks is that nobody has done a *design*?

We have recently had an experience in redevelopment for STARS where
we tried to incorporate what we knew at the time about the SEI's
Air Vehicle Structural Model.  The segments and the top-level functions
were derived from functional decomposition, but once you got inside
the segments, it was what we've been calling "object focused design".

The biggest surprise was that there were no surprises, no disconnects.
I suspect that when we enlarge our domain (as we're required to do on
another STARS program) and when we understand Structural Modeling
a little better, we're going to have to iterate our decomposition/synthesis
process a few times.  Surprise, surprise!  That's what you *do*!

So what's the big deal?  You begin by allocating your requirements,
'cause you have to.  Then you build a design that suits your problem
domain and solution domain the best (you know, a domain-specific
software architecture) -- perhaps (probably?) using some sort of
object-oriented/object-abstracted architecture.  Then you iterate.

Or have I got it all wrong?
+-------------------------------+--------------------------------------+
| Bob Crispen                   |   The owls are not what they seem    |
| crispen@foxy.boeing.com       +--------------------------------------+
| (205) 461-3296                |Opinions expressed here are mine alone|
+-------------------------------+--------------------------------------+
Newsgroups: comp.lang.ada
From: sercely@convex.com (Ron Sercely)
Subject: Re: HELP! Input/Output of private types
Organization: CONVEX Computer Corporation, Richardson, Tx., USA
Date: Mon, 16 Nov 1992 16:11:24 GMT
X-Disclaimer: This message was written by a user at CONVEX Computer
              Corp. The opinions expressed are those of the user and
              not necessarily those of CONVEX.


You must add a subprogram specification to the generic declration that
will actually do the I/O.  You create this I/O procedure in the normal
way, then instantiate the generic with this procedure.  

If you are going to have LOTS of instantiations this indeed can be a pain,
because you will have to create the I/O procedure for each instantiation.
This is an example where and Ada pre-processor may be useful to you.

Ron Sercely
Newsgroups: comp.lang.ada
From: stt@spock.camb.inmet.com (Tucker Taft)
Subject: Re: GNU-NYU Ada project
Organization: Intermetrics Inc, Cambridge MA
Date: Fri, 20 Nov 1992 21:02:32 GMT

In article <1992Nov19.184504.22639@coe.montana.edu> 
  dpoole@hydrogen.oscs.montana.edu (David Poole) writes:

>  One of the professors at my university posted this to our local newsgroup. 
>I haven't seen anything here on this, so I thought I'd post it and see if
>anyone can confirm/deny this report.  
>
>  A few things in this report seem a mite confusing.  It mentions the parser
>running around 1,000,000 lines a minute on a 16 MHz 386.  Is this realistic? 

Yes.  That implies 60 micro-seconds per line, or roughly 500
386 instructions, which is sufficient to parse the average line 
of source code in a well-written parser.  And this one is.

>Also, the parser uses recursive descent.  Why?  I thought LALR was the best
>possible.

LALR is easier to construct, given a tool like YACC.  However,
for raw speed, a well-written recursive descent parser can be about
50% faster than YACC (or even BISON).  In general, anything table-driven
has to pay some overhead relative to hand-coding.  The procedure
call overhead of recursive descent is not very great if the compiler
passes parameters in registers.

Of course when the parser gets this fast, it becomes a miniscule
part of the time spent in the compiler, so speeding it up by
50% might not be worth the extra hassle.  However, one additional
nice thing about recursive descent is that it is easy to pass
data up and down during the parse, and to keep local variables.
To do this in YACC or BISON requires explicit stacks and/or parse-trees,
which can be more work and more error-prone.

>-----------------------------------cut here--------------------------------
>
>          GNAT Project
>          GNU-NYU Ada Translator.
>
>         GNAT Report 0001-921101
>
>            November 1, 1992

[etc...]

S. Tucker Taft  stt@inmet.com
Intermetrics, Inc.
Cambridge, MA  02138
From: amj@sparcle.genrad.com (Andrew M. Jackson)
Newsgroups: comp.lang.ada
Subject: DEC - OSF/Motif - Ada Bindings
Date: 20 Nov 1992 11:07:18 -0500
Organization: GenRad, Inc.
NNTP-Posting-Host: sparcle.genrad.com
Keywords: Help

I am trying to learn Ada and I would like to use the Motif bindings in a small
program I am writing. I am using a DEC compiler on a VMS system. My question
is how do I pass a procedure's address when registering a callback? In the code
below the procedure call XTADDCALLBACK is intending to pass the procedure
finish's address as an argument. The compiler gives an error of address evaluating
to zero and nor import/export pragma specified.

Could someone please tell me how this should be done.

Thanks,
Andrew
----------------------------------------------------------------------------------
with SYSTEM; use SYSTEM;
with STARLET; use STARLET;
with X;
with MOTIF; use MOTIF;
with Text_IO;

package line is

	top_level : WIDGET_TYPE;
	form : WIDGET_TYPE;
	canvas : WIDGET_TYPE;
        menubar : WIDGET_TYPE;
	option : UNSIGNED_LONGWORD_ARRAY(1..10);
        done : WIDGET_TYPE;
	wargs : ARG_TYPE_ARRAY(1..10);


	procedure line_draw(ARGC : in out CARDINAL_TYPE; 
			    ARGV : in out ADDRESS_ARRAY);
	procedure set_args(ARGLIST : in  out ARG_TYPE_ARRAY; ARG_NUM : in INTEGER;
			   NAME : in ADDRESS; VALUE : in XTARGVAL_TYPE);
        procedure finish(CLIENT_DATA : in  XTPOINTER_TYPE);
end line;

package body line is

procedure line_draw(ARGC : in out CARDINAL_TYPE; ARGV : in out ADDRESS_ARRAY) is
  call_back_data : XTCALLBACKPROC_TYPE;
begin

   XTINITIALIZE(top_level, "line_draw", "Line_draw", option, 0, ARGC, ARGV);

   XTCREATEMANAGEDWIDGET(form, "formtest", XMFORMWIDGETCLASS, top_level, wargs, 0);

   XTCREATEMANAGEDWIDGET(canvas, "canvas", XMFORMWIDGETCLASS, form, wargs, 0);

   set_args(wargs, 1, XTNWIDTH'ADDRESS, 400);
   set_args(wargs, 2, XTNHEIGHT'ADDRESS, 400);
   XTSETVALUES(canvas, wargs, 2);

   XMCREATEMENUBAR(menubar, form, "menubar", wargs, 0);
   XTMANAGECHILD(menubar);

   XTCREATEMANAGEDWIDGET(done, "DONE", XMCASCADEBUTTONWIDGETCLASS, menubar, wargs, 0);
   XTADDCALLBACK(done, XMNACTIVATECALLBACK, finish'ADDRESS, call_back_data);

   set_args(wargs, 1, XMNTOPATTACHMENT'ADDRESS, XMATTACH_FORM);
   set_args(wargs, 2, XMNLEFTATTACHMENT'ADDRESS, XMATTACH_FORM);
   set_args(wargs, 3, XMNRIGHTATTACHMENT'ADDRESS, XMATTACH_FORM);
   XTSETVALUES(menubar, wargs, 3);   

   set_args(wargs, 1, XMNTOPATTACHMENT'ADDRESS, XMATTACH_WIDGET);
   set_args(wargs, 2, XMNLEFTATTACHMENT'ADDRESS, XMATTACH_FORM);
   set_args(wargs, 3, XMNRIGHTATTACHMENT'ADDRESS, XMATTACH_FORM);
   set_args(wargs, 4, XMNBOTTOMATTACHMENT'ADDRESS, XMATTACH_FORM);
   XTSETVALUES(canvas, wargs, 4);

   XTREALIZEWIDGET(top_level);
   XTMAINLOOP;

end line_draw;
 
procedure set_args(ARGLIST : in  out ARG_TYPE_ARRAY; ARG_NUM : in INTEGER;
                   NAME : in ADDRESS;  VALUE : in XTARGVAL_TYPE) is
begin

   ARGLIST(ARG_NUM).NAME := NAME;
   ARGLIST(ARG_NUM).VALUE := VALUE;

end set_args;

procedure finish(CLIENT_DATA : in  XTPOINTER_TYPE) is

begin
 Text_IO.Put_Line("Done Button has been selected");
end finish;

end line;
From: alex@cs.umd.edu (Alex Blakemore)
Newsgroups: comp.lang.ada
Subject: Re: GNU-NYU Ada project
Date: 20 Nov 92 22:55:41 GMT
Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742

dpoole@hydrogen.oscs.montana.edu (David Poole) writes:
[report about NYU GNU Ada Project]
> the parser uses recursive descent.  Why?  I thought LALR was the best possible.

Thoretical answer at the end but in short in choosing between a LALR(1) and
recursive descent approach to a parser - there are tradeoffs on both sides.

LALR(1)
  + appropriate for a wide class of languages
  + usually constructed automatically from a grammar
  + easy to handle synthesized attributes
  - harder to handle inherited attributes
  - difficult to get good error messages and recovery

recursive descent (works for LL(1))
  + often faster (though parsing is not usually the compilation bottleneck)
  + easier to get good error messages and recover from syntax errors gracefully
  + easy to handle inherited attributes
  - harder to handle synthesized attributes
  - usually requires construction by hand
  - some grammars are not LL(1) but are LALR(1)

So we should be happy that the NYU GNAT team (really Robert Dewar in this case I think)
were willing to put in the effort to build a parser by hand so GNU Ada
would be faster and have very good error messages/recovery.

The class of language accepted is not as critical as one would think because
all practical compilers parse a language that includes strings (programs)  
that are not in the source language and then prune illegal programs via
semantic checks (conceptually after parsing phase).

LALR(1) is a very popular class of grammar because it includes a large class
of languages and there are efficient techniques/tools for automatically constructing
parsers for LALR(1) grammars.  It is not the _best possible_ assuming you mean
can parse the largest class of grammars.  I believe there exist languages for which
there exist LR(1) grammars but not LALR(1) grammars for example.  Recursive descent
works for the class LL(1) which is smaller than LALR(1).
-- 
---------------------------------------------------
Alex Blakemore alex@cs.umd.edu   NeXT mail accepted
Newsgroups: comp.lang.ada
From: brucej@verdix.com (Bruce Jones)
Newsgroups: comp.lang.ada
Subject: Re: null arrays
Date: 23 Nov 92 10:52:47 GMT
Article-I.D.: verdix.9220
Reply-To: brucej@verdix.com (Bruce Jones)
Organization: Verdix Western Operations; Aloha, OR

In article <1992Nov20.203818.26501@inmet.camb.inmet.com> stt@spock.camb.inmet.com (Tucker Taft) writes:
>Until you convince your implementor to provide a "-9X" mode
>in their compiler ;-)

Implementing -9X mode will be easy compared to getting you to stop
changing the language. :)

	-- brucej
Newsgroups: comp.lang.ada
From: jhb@dale.cts.com (John Bollenbacher)
Subject: null arrays
Organization: Titan Linkabit Corporation
X-Newsreader: Tin 1.1 PL5
Date: Tue, 17 Nov 1992 22:33:46 GMT

Can somebody shed some light on the symptoms of the following program.  In 
short, under circumstances I cannot completely understand, when assigning
the contents of a null array to the field of a variant record, I get a 
constraint error.  As the example shows, I can sometimes assign from a null
array, but not always.

I know it looks strange in this form.  It arose in a procedure whose job it
was to remove the last element from such an object.  For what it's worth,
I am using Alsys v4.4 DOS386 compiler.  Any insights would be appreciated.

-------------------cut here-----------------------------------------------
procedure TEST is

  subtype T is NATURAL range 0 .. 10;

  type ARR is array (T range <>) of BOOLEAN;
  
  type A(N : T := 0) is record 
    DATA : ARR(1..N);
  end record;  
  I : INTEGER;
  O : A := (3, (TRUE, FALSE, TRUE));
  
  N1 : constant ARR := O.DATA(1..0) & O.DATA(1..0);
  N2 : constant ARR := O.DATA(1..0) & O.DATA(3..2);
begin
  I := N1'LENGTH; -- I = 0 
  I := N2'LENGTH; -- I = 0
  O := (0, N1);   -- does not raise constraint
  O := (0, N2);   -- raises constraint
end TEST; 


--
-----------------------------------------------------------------------------
- John Bollenbacher                                        jhb@dale.cts.com -
- Titan Linkabit Corp.                                       (619) 552-9963 -
- 3033 Sience Park Rd.                                                      -
- San Diego, Ca. 92121                                                      -
-----------------------------------------------------------------------------
Newsgroups: comp.lang.ada