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.