The Ada Program: a2.adb
1 -- a2.adb: comparing 2D arrays and array of arrays
2
3 with Ada.Text_IO, Ada.Float_Text_IO;
4 use Ada;
5
6 procedure A2 is
7
8 subtype S1 is Integer range 1..5;
9 subtype S2 is Character range 'A'..'Z';
10 type Array_1D is array (S2) of Float;
11 type Array_2D is array (S1,S2) of Float;
12 type Array_Of_Array is array (S1) of Array_1D;
13
14 -- NB. An array of unconstrained arrays is not legal.
15 -- A multidimensional array has all constrained or all
16 -- unconstrained ranges.
17
18 A: Array_1D;
19 B: Array_2D;
20 C: Array_Of_Array;
21
22 begin
23
24 -- For the purposes of aggregates only, an n-dimensional
25 -- array, eg "B", is treated like an array of (n-1) dimension.
26
27 -- Fully annotated array aggregates
28 A := Array_1D'(S2 => 3.964129E15);
29 B := Array_2D'(S1 => (S2 => 3.964129E15));
30 C := Array_Of_Array'(S1 => Array_1D'(S2 => 3.964129E15));
31
32 -- Array aggregates equivalent to those above
33 A := (S2 => 3.964129E15);
34 B := (S1 => (S2 => 3.964129E15));
35 C := (S1 => (S2 => 3.964129E15));
36
37 -- Array indexing
38 Float_Text_IO.Put (A ('Z'));
39 Text_IO.New_Line;
40 Float_Text_IO.Put (B (3, 'Z'));
41 Text_IO.New_Line;
42 Float_Text_IO.Put (C (3)('Z'));
43 Text_IO.New_Line;
44
45 end A2;