next up previous contents
Nächste Seite: Steueranweisungen Aufwärts: Ausdrücke und Anweisungen mit Vorherige Seite: Ausdrücke mit Feldern und   Inhalt

Anweisungen mit Feldern und Teilfeldern

Anweisungen sehen bei Feldern bzw. Teilfeldern allgemein wie folgt aus:

$feld = expr$

$expr$ kann dabei, je nach Datentyp von $feld$, 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 $expr$ 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 $expr$ genommen wird um das erste Element von $feld$ zu bestimmen. Ebenso geschieht dies mit dem zweiten, dritten, usw., bis das gesamte (Teil-)Feld $feld$ mit neuen Werten belegt ist.


next up previous contents
Nächste Seite: Steueranweisungen Aufwärts: Ausdrücke und Anweisungen mit Vorherige Seite: Ausdrücke mit Feldern und   Inhalt
Lars Tornow 2003-03-31