Array von Arrays

Die Deklaration eines “Array von Arrays” ist eine alternative Schreibweise für multidimensionale Arrays. Eine Sammlung von Elementen wird dabei verschachtelt, statt die Elemente zu dimensionieren. Die Schachteltiefe kann beliebig sein.

Syntax

<variable name> : ARRAY[<first>] ( OF ARRAY[<next>] )+ OF <data type> ( := <initialization> )? ;
<first> : <first lower index bound>..<first upper index bound>
<next> : <lower index bound>..<upper index bound> // one or more arrays
<data type> : elementary data types | user defined data types | function block types
// (...)+ : One or more further arrays
// (...)? : Optional

Syntax

Deklaration:

<variable name> : ARRAY[<dimension>] OF ARRAY[<dimension>] OF <data type> := [<initialization>];

<variable name>

Name des Arrays

Beispiel: aCounter

<dimension>

Dimension (untere bis obere Indexgrenze)

Beispiel: 1..100

Eine Dimension kann beliebig viele indizierte Elemente haben, bestimmt durch die untere und die obere Indexgrenze. Die Indexgrenzen sind ganzzahlige Zahlen, maximal des Datentyps DINT.

ARRAY[<dimension>] OF ARRAY[<dimension>] OF ARRAY[<dimension>] OF

Dreifach verschachteltes Array

Beispiel: ARRAY[1..2, 1..3] OF ARRAY[1..3] OF ARRAY[1..5]

<data type>

Datentyp eines Elements:

  • Elementarer Datentyp
  • Benutzerdefinierter Datentyp
  • Funktionsbaustein

<initialization>

Initialwerte des Arrays (optional)

Datenzugriff:

<variable name>[<index of first array>][<index of next array>][…]

<variable name>

Name des Arrays

Beispiel: aCounter

<index of first array>

Index der ersten (äußeren) Arrays

<index of next array>

Index des nächsten (inneren) Arrays

Beispiel

Die Variablen aPoints und a2Boxes sammeln die gleichen Datenelemente, aber die Schreibweisen bei der Deklaration und beim Datenzugriff unterscheiden sich.

PROGRAM MAIN
VAR
    aPoints : ARRAY[1..2,1..3] OF INT := [1,2,3,4,5,6];
    a2Boxes : ARRAY[1..2] OF ARRAY[1..3] OF INT := [ [1, 2, 3], [ 4, 5, 6]];
    a3Boxes : ARRAY[1..2] OF ARRAY[1..3] OF ARRAY[1..4] OF INT := [ [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ], [ [13, 14, 15, 16], [ 17, 18, 19, 20], [21, 22, 23, 24] ] ];
    a4Boxes : ARRAY[1..2] OF ARRAY[1..3] OF ARRAY[1..4] OF ARRAY[1..5] OF INT;
END_VAR
aPoints[1, 2] := 1200;
a2Boxes[1][2] := 1200;
Array von Arrays 1: