RRACINE@USC-ISIF.ARPA (Roger Racine) (02/10/86)
In regard to the following question: Hi all, We have a question concerning subaggregates. Consider the following program... procedure Agg is type R is record X : String (1 .. 2) := (others => 'z'); Y : String (5 .. 6) := (others => 'z'); end record; A : R; begin A := (others => (others => 'a')); A := (X | Y => (others => 'a')); A := ((others => 'c'), (others => 'c')); end Agg; Now the question is: Should any of these assignments raise Constraint_Error? The Data General raises Constraint_Error on the first two but not on the third. Is the subaggregate (others => 'a') in the first (and second) assignment evaluated once or twice? Do things change if the components X and Y are of different lengths? thanks in advance to anybody who has the slightest idea, doug bryan and Geoff Mendal ------- ----------------------------------------------------------------------- All three work fine on DEC's Ada compiler. The "expression" (in your case 'a') is evaluated separately for each component assigned (i.e. 4 times total per assignment statement). It should not matter how many characters are in each string. I hope that helps. I did not try to find the LRM paragraph, but believe the DEC compiler is correct. Roger Racine -------