Verwenden Sie den Datentyp array, um eine Reihe von Zahlen- oder Textwerten zusammen zu speichern. Alle Elemente in einem Array haben denselben Datentyp.

Definieren Sie Arrays nach folgendem Muster:

type [] identifier

Verwenden Sie einen der folgenden Typen als Datentyp:

  • intX—Vorzeichenbehafteter Integer
  • uintX—Vorzeichenloser Integer
  • realX—Fließkommazahl
  • text—Text-String
  • Definitionsoptionen

    Tabelle 55. Definitionsoptionen für Arrays
    Datentyp Global Lokal
    int32[]
    int16[]
    int8[]
    uint32[]
    uint16[]
    uint8[]
    real64[]
    real32[]
    text

    Definieren globaler Arrays

    Wenn Sie eine globale Array-Variable in PAscript definieren möchten, geben Sie den Datentyp int32[] oder real64[] in einen section globals-Codeblock ein. Geben Sie dann den Variablennamen ein.

    Beispiel

    program
    
      section globals
        int32[]  intArray  // int32 array
        real64[]  realArray  // real64 array
      endsection
    
      intArray[0]  = 1
      realArray[0]  = 1.2
    
    endprogram
    Hinweis Die im globalen Abschnitt verwendete Kennung muss einem PAtools-Namen (Name) vom Typ Tables entsprechen. Definieren Sie Tables im Test mit einer Wertetabellentyp vom Datentyp Integer oder Fließkomma.

    Definieren lokaler Arrays

    Definieren Sie lokale Arrays nach folgendem Muster:

    type[size] identifier [=initialization]

    Definieren von Array-Dimensionen

    Wählen Sie eine Dimension, zwei Dimensionen oder drei Dimensionen für die Array-Form aus.

    type[n] identifier              // Array with n elements
    type[m,n] identifier              // Array with m rows and n columns
    type[p,m,n] identifier      // Array with p pages, m rows and n columns

    In diesem Fall ist die Initialisierung optional. Wenn nicht initialisiert, werden die Elemente im Array auf 0 oder den leeren String "" gesetzt.

    Initialisieren von Arrays

    Die Initialisierung von Arrays ist optional.

    Arrays werden nach folgenden Regeln initialisiert:

    • Werte in einer Spalte werden durch ein Komma (,) getrennt
    • Werte in Zeilen sind durch ein Semikolon (;) getrennt
    • Elemente einer Seite sind durch eckige Klammern ([ ]) getrennt
    type[n] identifier = [Element_1, ... element_n]
    
    type[m,n] identifier = [Element_11, ... element_1n;
                            Element_21, ... element_2n;
                            ...
                            Element_m1, ... element_mn]
    
    type[p,m,n] identifier = [Element_111, ... element_11n;
                              Element_121, ... element_12n;
                              ...
                              Element_1m1, ... element_1mn]
                              [...]
                              [Element_p11, ... element_p1n;
                              Element_p21, ... element_p2n;
                              ...
                              Element_pm1, ... element_pmn]
    • Wenn Sie die Arrays initialisieren, ist die Angabe der Array-Dimensionen optional.
    • Bei der Initialisierung von Typdimensionen und Arrays muss Folgendes übereinstimmen:
      • Zeile
      • Spalte
      • Seitenzahl
    • Die Spaltenanzahl pro Zeile darf nicht variieren.
    • Die Zeilenanzahl pro Seite darf nicht variieren.

    Beispiel

    program
      section globals
        ...
      endsection
    
      int32[2] array1  // empty integer array with two elements
      int32[2,3] array2 = [ 1,2,2; 4,5,6 ]  // integer array with two rows and three columns
      int32[2,2,2] array3 = [ 1,2; 3,4] [5,6; 7,8]  //integer array with two pages, two rows, and two columns
    
      ...
    
    endprogram

    Zugriff auf ein Array-Element

    Greifen Sie auf ein Array-Element mit eckigen Klammern [] und dem relevanten Index für die entsprechende Spalte, Zeile und Seite zu.

    Hinweis Die Indizes beginnen bei 0. Für den Zugriff auf die erste Spalte ist beispielsweise der Wert 0 erforderlich.

    Beispiel 1: Lesen und Schreiben von Arrays

    program
      int32 value
      int32[2,3] array2 = [1,2,3; 4,5,6]  // integer array with two rows and three columns
      int23[2,2,2] array3 = [1,2; 3,4][5,6; 7,8]  // integer array with two pages, two rows, and two columns
    
      value = array2[0,2];  // accesses element in first row, thrid column; value is now 3
    
      value = array2[0,1,1];  // accesses element in first page, second row, second column; value is now 4
    
      array3[0,1,1] = 10;  // array3 is now [1,2; 3,10][5,6; 7,8]
    endprogram

    Sie können kleinere Dimensionen verwenden, als für das Array definiert wurden. Sie müssen nicht alle Indizes angeben. Die Indizes umfassen Seitenindex, Zeilenindex und Spaltenindex. Sie können beispielsweise nur den Spaltenindex angeben. Sie können auch nur den Spalten- und den Zeilenindex angeben. In diesem Fall wird 0 für die undefinierten Indizes verwendet.

    Beispiel 2: Lesen und Schreiben von Arrays

    program
      int32 value
      int32[2,3] array2 = [1,2,3; 4,5,6]  // integer array with two rows and three columns
      int23[2,2,2] array3 = [1,2; 3,4][5,6; 7,8]  // integer array with two pages, two rows, and two columns
    
      value = array2[2]  // row index is implied as 0; accesses element in first row, third column; value is now 3
    
      value = array3[1,0];  // page index is implied as 0; accesses element in first page, second row, first column; value is now 4
    
      value = array3[1];  // page and row index are implied as 0; access element in first page, first row, second column; value is now 2
    
      array2[2] = 10;  // row index is implied as 0; accesses element in first row, third column; array2 is now [1,2,10; 4,5,6]
    endprogram

    Kopieren von Arrays

    Mit der Typfunktion :copyFrom() können Sie den Inhalt eines Arrays in ein anderes Array kopieren.

    Die Dimensionen des Zielsystems passen sich an die Dimensionen der Quelle an.

    Eine nachträgliche Änderung der Dimension oder des Werts in einem Array hat keine Auswirkung auf die Dimension oder den Wert im anderen Array.

    Beispiel: Kopieren von Arrays

    int32[2,2] target=[9,8;7,6]
    int32[3] source=[1,2,3]
    target:copyFrom(source)  // target is now a 1x3 array with values [1,2,3]

    Referenzieren von Arrays

    Der Operator = veranlasst das Ziel-Array, das Quell-Array zu referenzieren.

    Die Dimension des Zielsystems passt sich an die Dimension der Quelle an.

    Eine nachträgliche Änderung der Dimension oder des Werts in einem Array wirkt sich auf die Dimension oder den Wert im anderen Array aus.

    Beispiel: Referenzieren von Arrays

    program
            int32[2,3] source = [1,2,3; 4,5,6]
            int32[2,2,3] target
    
            // copy the array
            target = source        // target and source now have a shape of [2,3] and a value of [1,2,3; 4,5,6]
            source[0,1] = 10        // target and source now have a value of [1,10,3; 4,5,6]
    endprogram