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


Zeichenausdrücke und -anweisungen

Ein Zeichenausdruck beschreibt eine Zeichenfolge (einen Text). Seine Auswertung liefert ein Ergebnis vom Typ Zeichen. Zeichenausdrücke bestehen aus Zeichenkonstanten, Namen von Zeichenkonstanten, Zeichenvariablen, Zeichenfeldelementen, Teilzeichenreihen und Aufrufe von Zeichenfunktionen, die durch den Verkettungsoperator // (zwei Schrägstriche) und Klammern verbunden sein können.

Beispiel:

'AB' // 'CDE' ergibt die Zeichenfolge 'ABCDE'.

Zeichenanweisungen haben die Form

$Zeich = expr$

wobei Zeich der Name einer Zeichenvariablen, eines Zeichenfeldelementes oder einer Teilzeichenreihe ist, und expr ist ein Zeichenausdruck. Keine der Zeichenpositionen von Zeich darf in expr auftreten (siehe unten). Die Längen von Zeich und expr können unterschiedlich sein. Ist Zeich länger als expr, so wird von rechts bis zur Länge von Zeich mit Leerzeichen aufgefüllt. Wenn Zeich kürzer ist als expr, wird expr entsprechend der Länge von Zeich von rechts verkürzt.

Beispiel:

CHARACTER :: mo*3, da*3, date*12

date = da//mo//'1993'

Die Zeichenvariablen mo und da werden mit der Zeichenfolge 1993 zu einer 12 Zeichen langen Zeichenreihe verkettet, die der Variablen date zugewiesen wird. date wird dabei rechts mit 2 Leerzeichen aufgefüllt.

Eine definierte und initialisierte Zeichenreihe (CHARACTER-String) erlaubt den Zugriff auf die komplette Reihe oder auf Teile davon (Teilzeichenreihe, Substring). Syntax:

char( first : last )

Dabei ist char der Name der Zeichenreihe, first die Position des ersten Zeichens des Substrings und last die des letzten Zeichens des Substrings. Fehlt first, wird der Wert 1 genommen, fehlt last, wird die Länge len des Strings genommen, wobei allgemein gilt: $1 \le first \le last \le len$.

Beispiel:

CHARACTER (LEN=6) :: chara1

chara1 = 'STRING'

Hier ist die Länge des Strings $len = 6$. Mögliche Teilzeichenreihenzugriffe sind dann beispielsweise:

chara1(1:3) Wert: 'STR'

chara1(3:4) Wert: 'RI'

chara1(4: ) Wert: 'ING'

chara1( :4) Wert: 'STRI'

chara1( : ) Wert: 'STRING' (also die ganze Zeichenreihe)

Nach dem oben Gesagten ist eine Zuweisung

zeich(1:5) = zeich(3:7)

unzulässig, da die beiden Teilzeichenreihen sich in zeich(3:5) überlappen. Bei Substring-Zugriffen auf Zeichenfelder wird erst das Feldelement (also dessen Index/Indices) und dann der Substring spezifiziert:

CHARACTER :: cfeld(6)*8, name*4

name = cfeld(2)(3:6)

Der Zugriff bezieht sich auf das 3. bis 6. Zeichen des 2. Elementes des Feldes cfeld.

Im Zusammenhang mit Zeichen soll noch auf die damit zusammenhängenden Standardfunktionen CHAR, ICHAR, (Typumwandlung Ganzzahl in Zeichen bzw. Zeichen in Ganzzahl), LEN (Länge einer Zeichenreihe), INDEX (Ort der Zeichenreihe in einer anderen) sowie LGE, LGT, LLE, LLT (lexikalische Anordnung) hingewiesen werden. Genaueres über die Standardfunktionen entnehme man der FORTRAN-Literatur (z.B. [#!rrzn!#] ).


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