Definition eigener Typen ("Records", "Structuren")
! Definition des Typs Person
TYPE Person
CHARACTER(LEN=20) :: name
INTEGER :: age
REAL :: height
END TYPE Person
! Definition von Variablen des Typs Person
TYPE(Person) :: peter, mr_president
! Initialisierung einer Struktur
mr_president = Person('Hauke', 53, 1.78)
! Zugriff auf die Komponenten
peter%age = peter%age + 1
Pointer
! Definition von Pointern REAL(KIND=long), DIMENSION(:,:), POINTER :: pa, pb ! Ziele von Pointern muessen gekennzeichnet werden REAL(KIND=long), DIMENSION(10, 10), TARGET :: a ! Pointern koennen Ziele zugewiesen werden pa => a pa(5,5) = 314.59 ! aendert den Wert von a(5,5) ! oder sie bekommen dynamisch Speicher ALLOCATE(pb(5, 7)) pb(2,3) = pa(3,2) DEALLOCATE(pb) ! und weg damit - aber vorsichtig
Beispiel: Linked List
! Definition
TYPE List_Entry
INTEGER :: value
TYPE(List_Entry), POINTER :: next
END TYPE List_Entry
TYPE(List_Entry), POINTER :: first, current
! Anfang und ein weiteres Element vorschalten
ALLOCATE(first)
first = List_Entry(17, NULL()) ! NULL() erst in Fortran 95
ALLOCATE(current)
current = List_Entry(19, first) ! current%next => first
first => current