Anweisungen sehen bei Feldern bzw. Teilfeldern allgemein wie folgt aus:
kann dabei, je nach Datentyp von , ein beliebiger Ausdruck sein, wie wir es in den voranstehenden Kapiteln gesehen haben. Bei der Rechnung mit Teilfeldern ist aber im Besonderen zu beachten, daß beide Seiten der Zuweisung die gleichen Feldgrößen haben müssen, genauer die gleiche Anzahl an Elementen. Taucht in der Berechnung von ein skalarer Wert auf, so wird er als Feld mit gleicher Größe wie das eigentliche Teilfeld angenommen.
Beispiele:
REAL :: r1(7),r2(9),r3(6) | ||
r1(1:3) = r2(3:9:3) - r3(2:6:2) | Es ergibt sich somit | |
r1(1) = r2(3) - r3(2), | ||
r1(2) = r2(6) - r3(4) und | ||
r1(3) = r2(9) - r3(6) | ||
r1 = r1 + 3. | erhöht den Wert jedes Elementes von | |
r1 um 3. : r1(1) = r1(1) + 3., | ||
r1(2) = r1(2) + 3., usw... | ||
CHARACTER (LEN=5) :: c1(3)*17,c2(3),c3(3) | ||
c2 = (/'Anton','Berta','Chris'/) | ||
c3 = (/'Alice','Bernd','Carla'/) | ||
c1(1:3) = c2(1:3)//' liebt '//c3(3:1:-1) | liefert für | |
c1(1) : 'Anton liebt Carla' | ||
c1(2) : 'Berta liebt Bernd', | ||
c1(3) : 'Chris liebt Alice' | ||
LOGICAL :: l1(2),l2(2),l3(2),l4(2) | ||
l2(1) = .TRUE. ; l2(2) = .TRUE. | ||
l3(1) = .FALSE. ; l3(2) = .TRUE. | ||
l4(1) = .FALSE. ; l4(2) = .FALSE. | ||
l1 = (.NOT.(l2.AND.l3(2:1:-1))).EQV.l4 | liefert für l1(1) : .TRUE. | |
und für l1(2) : .FALSE. |
Die Auswertung solcher Anweisungen erfolgt also offensichtlich elementweise, wobei das jeweils das erste Element eines Teilfeldes von genommen wird um das erste Element von zu bestimmen. Ebenso geschieht dies mit dem zweiten, dritten, usw., bis das gesamte (Teil-)Feld mit neuen Werten belegt ist.