VAST-90 am RRZN

Dieser Umdruck enthält (nur) die wichtigsten Angaben zu den Eigenschaften und zur Handhabung von VAST-90. Das Reference-Manual von VAST-90 kann nach telefonischer Rücksprache im RRZN eingesehen werden; Tel. 3902 Gehrke.

1. Übersicht

VAST-90 ist ein Übersetzer, der in beiden Richtungen zwischen FORTRAN 77 und Fortran 90 operiert. Er ist am RRZN nur unter Solaris 2 verfügbar. Er kann (aus lizenzrechtlichen Gründen) nur jeweils von einem einzigen Benutzer verwendet werden.

Vor der Verwendung von VAST-90 muß einmalig das Kommando

init_vast90
ausgeführt werden.

Die Übersetzung eines FORTRAN 77-Programmes nach Fortran 90 macht Sinn,

Unter Umständen macht es sogar Sinn, ein vorhandenes FORTRAN 77-Programm nach Fortran 90 zu übertragen, es dort zu überarbeiten, um es anschließend nach Rückübersetzung als FORTRAN 77-Programm weiterzuverwenden. Diese Transformation FORTRAN 77 -> Fortran 90 -> FORTRAN 77 ist am einfachsten, wenn das Ausgangsquellprogramm ein fehlerfreies FORTRAN 77-Programm ist oder sogar ein standardkonformes FORTRAN 77-Program ist.

Bei einer Übersetzung eines Fortran 90-Programmes wird ein FORTRAN 77-Programm erzeugt, das mit dem vorhandenen f77-Compiler weiterverarbeitet werden kann.

Für beide Übersetzungsrichtungen ist ein gemeinsames Kommando vast90 verfügbar, wobei die Übersetzungsrichtung entweder explizit angegeben werden kann oder automatisch aus der Dateinamenerweiterung der Quelldatei folgt.

Für die Übersetzung eines Fortran 90-Programmes gibt es außerdem das Kommando v90, das die Angabe diverser Optionen für VAST-90, f77 und den Linker gestattet und das bei fehlerfreier Übersetzung eine ausführbare Datei, z.B. a.out, erzeugt.

Darüber hinaus kann VAST-90 eine statische Fehleranalyse des Programmes durchführen, und dabei u.U. Fehler finden, die der f77-Compiler nicht finden kann. Existierende Programme können durch automatisches Einrücken und Einfügen von Leerzeichen "verschönert" werden.

Fortran 90 --> FORTRAN 77

Das Fortran 90-Programm wird nach FORTRAN 77 übersetzt; das Ergebnis kann anschließend mit dem vorhandenen f77-Compiler weiterverarbeitet werden.

VAST-90 akzeptiert das vollständige Fortran 90 mit Ausnahme der nichtvorrückenden Eingabe und möglicherweise einiger der neuen Formatspezifikationen.

Am einfachsten ist es, das f90-Kommando zu verwenden:

v90 myprog.f90
Dabei kann man auch beliebige Optionen angeben, die man normalerweise für den f77-Compiler und den Linker angeben würde; sie werden automatisch an f77 und den Linker weitergereicht.

Wenn man lediglich VAST-90 einsetzen will, um sich den erzeugten FORTRAN 77-Code anzusehen, verwendet man besser

vast90 myprog.f90
und erzeugt sich die Datei Vmyprog.f.

VAST-90 nimmt an, daß das Fortran 90-Quellprogramm im spaltenunabhängigen Format vorliegt. Wenn das Fortran 90-Quellprogramm allerdings im spaltengerechten Format (d.h. in der alten FORTRAN 77-Schreibweise) vorliegt, dann muß man den Schalter -ya angeben:

v90 -Wv,-ya myprog.f90          oder           vast90 -ya myprog.f90
Normalerweise braucht man bei Übersetzungen von Fortran 90-Programmen keine VAST-90-Optionen oder -Schalter anzugeben, weil der FORTRAN 77-Zwischencode nicht interessiert.

FORTRAN 77 --> Fortran 90

Mit Hilfe des vast90-Kommandos kann von FORTRAN 77 nach Fortran 90 übersetzt werden. Dabei werden, wenn möglich, u.a. folgende Umwandlungen durchgeführt:

DATA-Anweisung --> Typvereinbarungsanw. + Initialisierung
Separate Spezifikationsanweisungen --> Attributorientierte Schreibweise
Schleife --> Feldnotation
IF ... GOTO-Schleife --> DO-Schleife
Sprung an das Schleifenende --> CYCLE-Anweisung
Sprung hinter das Schleifenende --> EXIT-Anweisung
Arithmetisches IF --> Block-IF-Struktur
Logisches IF mit GOTO --> Block-IF-Struktur
Block-IF-Struktur --> CASE-Struktur
Berechnetes GOTO --> CASE-Struktur
FORTRAN 77-DO-Schleife --> DO ... ENDDO
COMMON-Block --> Modul
INCLUDE --> Modul
Stellengerechter Quelltext --> Freie Fortran 90-Schreibweise

Hinweis: Wenn man den Schalter -xr angibt, wird "agressive Feldnotation" erzeugt, die zwar möglicherweise sehr effizient, aber kaum noch lesbar ist.

Folgende Umwandlungen werden leider nicht durchgeführt: Hollerith in CHARACTER, Formelfunktionen in interne Funktionen, Eleminierung von alternativen RETURNS, Ersetzung gesetzter GOTOs und ASSIGN-Anweisungen, Erzeugung von Schnittstellenblöcken (kann per Schalter -xf eingeschaltet werden, siehe Punkt 7.).

Wenn die Quelldatei z.B. datei.f ist, erzeugt VAST-90 eine Datei Vdatei.f90. Also bei Ausführung von

vast90 spaghetti.f
erhält man ein äquivalentes Fortran 90-Programm in der Datei Vspaghetti.f90.

2. Das Kommando v90

Das Kommando v90 ist vergleichbar mit dem Kommando f77, mit dessen Hilfe man FORTRAN 77-Programme übersetzt und ggf. bindet. D.h. vf90 übersetzt und bindet Fortran 90-Programme. Die allgemeine Form des Kommandos ist v90 [f77-Optionen] [-Wv,VAST-90-Optionen] datei1.f90 [...datein.f90] Die Optionen (wie z.B. die Optimierungsstufe) für den f77-Compiler werden so, wie sie sind, weitergereicht.

Für die beteiligten Dateien gilt folgende Konvention:

       Dateinamenendung        Bedeutung
       ----------------+-------------------------
       .f90            | Fortran 90-Quelltext
       .f              | FORTRAN 77-Quelltext
       .m              | Fortran 90-Modul
       .o              | Objektdatei fuer ld
       .s              | Assembler-Quelltext
       .inc            | Include-Datei
       .vo             | Modul in uebersetzter Form
       .inf            | Interface-Datei
Man beachte, dass v90 eine Zwischendatei Vdatei1.f erzeugt, die anschließend wieder gelöscht wird. Also Vorsicht, wenn Sie bereits eine derartige Datei haben.

Für die VAST-90-Optionen gilt folgende Schreibweise:

        -Wv'[optionen]'  Mehrere Optionen fuer VAST-90 koennen in Apostrophe
                         eingeschlossen werden; davor steht -Wv.

        -Wv,[optionen]   Oder eine Optionenfolge kann angegeben werden, wobei
                         die Optionen keine Leerzeichen enthalten und durch
                         Kommata voneinander getrennt sind.

        -Wvoption       Alternativ kann ein einzelner VAST-90-Schalter durch
                        Voranstellen von -Wv ohne Apostrophe angegeben werden,
                        z.B.:  -Wvxb.  Diese Form darf wiederholt werden.
v90 -fast -c abc.f90
Das Fortran 90-Programm befindet sich auf der Datei abc.f90. Es wird nach FORTRAN 77 übersetzt. Mit Hilfe des f77-Compilers wird Code erzeugt, wobei die Optimierungsoption -fast verwendet wird. Der erzeugte Code wird nicht gebunden.
v90 -Wv,-ya *.m xyz.f90
Alle Module, die sich in den Dateien mit der Dateinamenendung .m befinden, sowie die Datei xyz.f90 werden verarbeitet. Der Eingabequelltext liegt im stellengerechten Format vor (normalerweise ist Fortran 90-Quelltext stellenunabhängig). Es wird übersetzt und gebunden. Der ausführbare Code befindet sich anschließend in der Datei a.out.

3. Das Kommando vast90

Die allgemeine Form des Kommandos ist:
vast90 [-richtung] [-o ausgabe] [-l liste] [optionen] datei1 [...datein]
Dabei sind:
   richtung      90to77
                 77to90
                 77to77
                 90to90

                 Falls der Parameter fehlt,
                 ergibt sich die Voreinstellung aus der
                 Dateinamenendung der ersten Eingabedatei datei1.


   ausgabe       Uebersetzbare Ausgabedatei.

                 Falls der Parameter fehlt, wird der Dateiname der
                 ersten Eingabedatei ohne deren Dateinamenendung
                 verwendet, und ein V wird vorangestellt. Falls die
                 Ausgabe Fortran 90 ist, ist die Endung des
                 Dateinamens der Ausgabedatei .f90. Falls die Ausgabe
                 FORTRAN 77 ist, ist die Endung des Dateinamens
                 der Ausgabedatei .f.


   liste         Datei fuer die VAST-90-Ausgabeliste.

                 Falls der Parameter fehlt, wird keine Liste erzeugt.


   optionen      VAST-90-Optionen und -Parameter.


   dateik        Quelltext-Eingabedatei.

                 Falls die Angabe einer "richtung" (s.o.) fehlt, ergibt
                 sich die durchzufuehrende Aktion aus der
                 Dateinamenendung. Falls der Dateiname die Endung
                 .f hat, nimmt VAST-90 an, dass die Eingabedateien FORTRAN 77
                 enthalten, das nach Fortran 90 uebersetzt werden
                 soll. Falls der Dateiname die Endung .f90
                 hat, nimmt VAST-90 an, dass die Eingabedateien Fortran 90
                 enthalten, das nach FORTRAN 77 uebersetzt werden soll.
                 Falls die Datei die Endung .m  hat, nimmt VAST-90 an,
                 dass die Eingabedatei ein Fortran 90-Modul enthaelt. Die
                 Modul-Dateien brauchen nicht in .m-Dateien zu liegen.
Empfehlung:

Für die Übersetzung 77-->90 verwenden Sie am bestens zuerst die Option -ymd, damit Sie Ihr Programm anschließend leichter wiedererkennen. Die Option -ym bewirkt, daß COMMON-Bloecke nicht auf einzelne Dateien verstreut werden, und die Option -yd, daß die alte Form der Vereinbarungen beibehalten wird.

Die Fehlermeldungen, die VAST-90 ausgibt, sind wichtig für Sie,

Es ist jeweils vom Einzelfall abhängig, ob man zuerst das FORTRAN 77-Programm manuell umstellt, bis es von VAST-90 akzeptiert wird und nach Fortran 90 umgestellt werden kann, oder ob man es zuerst mit Hilfe von VAST-90 umwandelt, um danach die verbliebenen Probleme zu beheben.

Bitte betrachten Sie das von VAST-90 erzeugte Fortran 90-Programm erst dann als das Ergebnis der Umstellung auf Fortran 90, wenn Sie die Richtigkeit der erzeugten Ergebnisse überprüft haben.

4. Module

Die Module brauchen nicht in .m-Dateien zu liegen. Sie müssen aber übersetzt sein, ehe sie verwendet werden können.

Bei der Übersetzung 77-->90 versucht VAST-90 aus COMMON-Blöcken Module zu erzeugen. Das kann man mit dem Schalter -ym verhindern.

5. Format der Quelltexteingabe und der Ausgabe

Es gibt bestimmte Vorgaben. Z.B. nimmt VAST-90 an, daß der FORTRAN 77-Text stellengerecht ist und der Fortran 90-Text stellenunabhängig ist. Wenn man das nicht so will, kann man folgende Schalter angeben:
        Eingabe |  fest        frei
        --------+---------------------
          77    |  Vorgabe     -xa
          90    |  -ya         Vorgabe
        --------+---------------------


        Ausgabe |  fest        frei
        --------+---------------------
        77-->90 |  -yb         Vorgabe
        90-->77 |  Vorgabe     -xb
        --------+---------------------

6. VAST-90-Laufzeitbibliothek

Für die Übersetzung eines Fortran 90-Programmes wird u.U. die VAST-90-Laufzeitbibliothek benötigt. Wenn man das Kommando v90 verwendet, wird diese Bibliothek automatisch eingebunden. Aber wenn man zuerst mit dem Kommando vast90 die Übersetzung 90-->77 durchfßhrt, um anschließend mit f77 den ausführbaren Code zu erzeugen, dann muß man meistens die VAST-90-Laufzeitbibliothek libvast90.a einbinden, also:
vast90 iola.f90
f77 Viola.f -l vast90
Man beachte, daß die Bibliothek mit der Option -l im Anschluß (!) an die Quelltextdatei angegeben werden muß.

7. Schnittstellendateien

Bei der Übersetzung 77-->90 kann man in einem ersten Schritt für jede Routine eine Datei (Dateiendung .inf) mit einem Schnittstellenblock erzeugen lassen, indem man den Schalter -xf angibt.

In einem zweiten Schritt kann VAST-90 INCLUDE-Anweisungen für diese Schnittstellendateien jeweils in die aufrufende Routine einfügen, indem man den Schalter -x2 angibt.

Beide Schritte werden bei Angabe von -xf2 durchgeführt.

Auf diese Weise ist es möglich, dass VAST-90 die Unterprogrammaufrufe daraufhin überprüft, ob Formalparameter und korrespondierende Aktualparameter hinsichtlich Anzahl, Typ, KIND-Typparameter, Gestalt und INTENT zueinander passen. Diese Überprüfung wird mit der Option -p4 eingeschaltet.


10. Jun 1998        Wilhelm Gehrke         gehrke@rrzn.uni-hannover.de