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