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;