In AWL ist es nicht mögich, einen Index, wie bei anderen Sprachen gewohnt, direkt in die eckigen Klammern [] zu setzen.
Hier ein Beispiel, wie dieses realisiert werden kann.
Deklaration:
Feld := ARRAY[0..10] of INT
Index := INT
Code:
L #Index // Lade Index in den Akku1 Bsp.:0
SLD3 // Schiebe den Wert im Akku1 um 3 Bits nach links
LAR1 // Lade den Inhalt des Akku1 in das AR1
L #Feld[AR1,P#0.0] // Lade den Wert im Feld mit dem Index 0 in den Akku1
Lädt man den ersten Eintrag eines Feldes, funktioniert es nach dem oben beschriebenen Code. Da das sicherlich nicht das Ziel eines Feldes ist, muss der Code für höhere Indizes noch erweitert werden.
Den Index direkt ins AR1 zu laden ist eigentlich ein Fehler. Er muss noch mit der Größe der Feldvariablen multipliziert werden.
Fortsetzung folgt...
Vorschau:
L #Index // Lade Index in den Akku1 Bsp.:2
L 2 // Lade die Bytegröße der verwendeten Variablen (INT = 2 Byte)
*I // multipliziere den Index
SLD3 // Schiebe den Wert im Akku1 um 3 Bits nach links
LAR1 // Lade den Inhalt des Akku1 in das AR1
L #Feld[AR1,P#0.0] // Lade den Wert im Feld mit dem Index 0 in den Akku1