@c+
-- test of arrays and tuples

module test12_10 -- tuple with array component
 typedef integer range [1..5] one_five;
 integer i;
 one_five j;
private
  typedef integer array [one_five] A;
  [integer, A ] p, q;
begin
  p.1, q.2[1], q.2[2], q.2[3], q.2[4], q.2[5] := 0, 1, 2, 3, 4, 5;
  
  i := 1;
  do i <= 5 -> q.2[i] := p.2[6-i]; i := i+1; od;

  forall j ->  write q.2[j]; llarof;
end.
 
module more --array of tuples
 private
   typedef [integer, integer ] Pair;
   Pair array [one_five] x;
begin
  forall j -> read x[j].1; x[j].2 := x[j].1 + 1; llarof;
  forall j -> write x[j].2; llarof;
end.
 
 -- inputs  1 2 3 4 5
 -- outputs 5 4 3 2 1 2 3 4 5 6