Bei der expliziten Typanweisung wird der Name in eine Typanweisung aufgenommen. Sie hat die Form
Dabei ist die
Typbezeichnungen, und
sind die Namen der Datenobjekte, deren Typ festgelegt
werden soll. Mit
kann man zusätzlich
optionale Angaben zu deren Eigenschaften machen, wie
schon z.B. im Programm circle mit Parameter PI
gezeigt.
Typen von Datenobjekten:
ganzzahlig:
reell:
doppelt genau:
komplex:
Beispiele:
Diese
vier Typanweisungen dienen zur Deklaration von
arithmetischen Datenobjekten. So legt z.B. fest,
daß die Namen ha, haha, hihi
und komik vom Typ reell sind, sich
dahinter also reelle Zahlen verbergen.
logisch:
Beispiel:
-Variablen können
dagegen nur die Wahrheitswerte beiden
und
enthalten.
Zeichenreihen:
Beispiele:
Bei der Typ-Vereinbarung muß
zusätzlich die Länge der Zeichenkette vereinbart werden. Dies geschieht seit
der Fortran95-Norm mit der (LEN=..)-Angabe. Diese bezieht
sich dann auf alle in der Anweisung angegebenen Variablen und
legt in unserem Beispiel für die Variablen zeichenkette und dateiname
eine Länge von jeweils 20 Zeichen fest.
Eine ältere Form der Längen-Angabe wird mittels *laenge vorgenommen.
Dabei wird hier mit *15 hinter text dessen Länge
mit 15 Zeichen vereinbart. Für alle anderen in
der Anweisung aufgeführten Namen
( buchstaben und zeile) gilt die Länge, die unmittelbar hinter
dem Schlüsselwort CHARACTER steht (hier 25 Zeichen).
Prinzipiell sind beide Formen in der Fortran95-Norm enthalten. Die zweite soll jedoch in nachfolgenden Fortran-Normen durch die Angabe mit (LEN=..) abgelöst werden.
Macht man jedoch bzgl. der Länge gar keine Angaben, so wird vom Compiler die Länge 1 festgelegt!
Attribute von Datenobjekten:
Konstanten:
Mit der Vergabe des PARAMETER-Attributs kann man für eine Konstante einen symbolischen Namen vereinbaren (,,symbolische Konstante``):
Darin sind symbolische Namen, und
sind Konstanten
oder Konstantenausdrücke, die ihrerseits
nur Konstanten und bereits vorher definierte symbolische Konstanten
(also insbesondere keine Funktionsaufrufe) enthalten dürfen.
Der Wert einer Konstanten kann im gesamten Programm nicht mehr
verändert werden.
Beispiel:
Man kann die Vereinbarung einer Konstante aber auch als eigenständige Anweisung schreiben:
In diesem Falle darf diese aber erst nach der Vereinbarung der symbolischen
Namen , - sonst aber an beliebiger Stelle in den Vereinbarungs-Anweisungen
stehen (Abb.4.3).
Felder:
Das -Attribut wird verwendet, um eine Variable als
Feld (indizierte Variable, array) zu vereinbaren.
Ein Feld ist eine spezielle Datenstruktur, bei der alle Elemente der
Struktur durch einen einzigen symbolischen Namen gekennzeichnet, und diese
Elemente alle vom gleichen Typ sind.
Neben dem DIMENSION-Attributes gibt es noch zwei weitere
Möglichkeiten solch ein Feld zu deklarieren. Die eine ist die, der direkten Angabe
und eine weitere, die der Verwendung der DIMENSION-Anweisung:
Die Beispiele
mit DIMENSION-Attribut:(eindimensional, 3 Elemente)
(eindimensional, 5 Elemente)
oder mit direkter Angabe:(zweidimensional, 21*21 Elemente)
(dreidimensional, 100*22*3 Elemente)
oder mittels DIMENSION-Anweisung:INTEGER :: n&
DIMENSION :: n (16,2,10:15)& (dreidimensional, 16*2*6 Elemente)
zeigen die Syntax der Feldvereinbarungen. Die erste der beispielhaft gezeigten Feldvereinbarungen richtet drei Speicherplätze für ganze Zahlen ein, die mit a(1), a(2) und a(3) angesprochen werden können. Die untere und die obere Grenze einer Dimension (eines Indexes) können beliebige ganzzahlige Ausdrücke sein und werden durch einen Doppelpunkt getrennt. Fehlt die untere Grenze, wird der Wert 1 angenommen. Die obere Grenze muß größer gleich der unteren Grenze sein. Wir werden später sehen (Abschnitt 4.2.19), daß in Unterprogrammen auch Felder vereinbart werden können, deren Dimensionen durch Variablen gegeben sind oder diese auch direkt vom aufrufenden Unterprogramm übernommen werden.
Es sind maximal sieben Dimensionen möglich. Die Länge eines Feldes ist gleich der Anzahl seiner Elemente. Weitere Informationen über Felder, insbesondere zu Dimensionierung, Form der Indizes und Speicherung, werden im Abschnitt 4.2.3.3 ,,Felder`` gegeben.
dynamische Felder:
Dynamische Felder sind Felder, deren Element-Anzahl erst im Laufe des
Programmes festgelegt werden können. Das -Attribut
kann also nur zusammen mit z.B. dem
-Attribut auftreten.
Dabei muß die Anzahl der Dimensionen bereits bei der Deklaration vorgegeben werden.
Wir werden darauf genauer im Kapitel 4.2.3.5 eingehen.
gesicherte Variablen:
Das Attribut ist nur bei der Verwendung von Unterprogrammen
interessant. Der FORTRAN-Standard besagt, daß beim
Rücksprung in das rufende Programm alle lokalen Größen nicht mehr
definiert sind.
Das SAVE-Attribut sorgt dafür, daß der Wert der Variablen erhalten bleibt, wenn das Unterprogramm bei Ausführung der END-Anweisung wieder verlassen wird. Dieses sollte jedoch mit Vorsicht behandelt werden!
Zeiger:
Mit dem POINTER-Attribut wird eine ganz besondere Art von Variablen deklariert. Diese dienen nicht - wie Variablen normalerweise - dazu, in ihnen Daten für zum Beispiel Berechnungen abzulegen, sondern bieten dem Programmierer die Möglichkeit, Adressen von anderen Variablen zu speichern. Mit dem
Beispiel:
haben wir einen Zeiger zeigtauf deklariert, der die Adresse einer Integervariablen speichern kann. Man sagt dabei: auf eine Integervariable zeigen kann. Genauer wird dies im Abschnitt 4.2.3.6 erläutert.
Zeigerziel:
Das -Attribut kann man einer Variablen geben, wenn
man diese als Ziel eines Zeigers benutzen möchte. Auch
dieses wird genauer im Abschnitt4.2.3.6 erläutert.