next up previous contents
Nächste Seite: Feldausdrücke Aufwärts: Felder Vorherige Seite: Dynamische Felder   Inhalt

Konstruierte Feldwerte

sind Wertefolgen, die als eindimensionale Feldwerte interpretiert werden. Die Werte der einzelnen Feldelemente können sowohl aus einer Liste einzelner skalarer Werte und Feldwerte, als auch aus Wertelisten mit impliziter Schleife bestehen, definiert werden sie durch (/ und /) und eine durch "," getrennte Liste.

Beispiel:

INTEGER x(28), f(3,3)
...
x = 10; f = 8
...
x = (/ 0, 1, x(11)-2, 3, 4, (i+5, 0, i=5,10), 11, 12, f**2 /)
...
Auf diesem Feld würde dann folgendes stehen:
0 1 8 3 4 10 0 11 0 12 0 13 0 14 0 15 0 11 12 64 44 64 64 64 64 64 64 64

Ganz ähnlich lassen sich auch Feldkonstante definieren:

INTEGER :: x1(5), x2(5), y(8), a(7)
CHARACTER*10 :: name(3)
CHARACTER :: nachname(3)*8
PARAMETER (a = (/ 0, 1, 0, 1, 0, 1, 0 /))
...
x1 = (/ 1, 3, 5, 7, 9 /)
x2 = (/ (l, l=0,8,2) /)     ! Werte 0 bis 8 mit Schrittweite 2
y = (/ (0,1, k=1,4) /)
name = (/ 'Anton', 'Berta', 'Cesar' /) ! muessen alle gleiche Laenge haben!
nachname = 'Peter'
...

Beispiel für verschiedene Feldtypen:

SUBROUTINE up (n, p, r, s, t)
 REAL, DIMENSION (1:15,5,10) :: p, q     ! 2 Felder mit expliziter Gestalt
 REAL :: r(0:15, n, *)                   ! Feld mit uebernommener Groesse
 REAL, DIMENSION (:,5:) :: s             ! Feld mit uebernommener Gestalt
 REAL, ALLOCATABLE, DIMENSION (:,:) :: u ! dynamisches Feld
 ...
 m = SIZE(s,DIM=2)                       ! Bestimme die Laenge der 2.
 ...                                     ! Dimension des Feldes s
 ALLOCATE (u(m,n))                       ! lege das Feld u in der Groesse
                                         ! m.n an
 ...
END SUBROUTINE



Reinfried O. Peter 2001-09-07