Umstellung von FORTRAN 77 auf Fortran 90/95


Die aktuelle internationale Norm der Sprache Fortran ist Fortran 95. Und es wird intensiv an der nächsten internationalen Fortran-Norm Fortran 2000 gearbeitet. Trotzdem gibt es immer noch Fortran-Programmierer, die den ersten Schritt von FORTRAN 77 nach Fortran 90 noch nicht vollzogen haben, und es gibt immer noch umfangreiche FORTRAN77-Programmpakete, die mit uralten FORTRAN77-Compilern gewartet werden.

Nicht nur weil diese alten Compiler langsam aussterben, sondern auch wegen des Jahr-2000-Problems rückt der Zeitpunkt immer näher, zu dem diese alten Programme auf neue Compiler und auf ein modernes Sprachniveau umgestellt werden müssen.

Das Programmiererproblem

Für Fortran-Programmierer, die noch nicht fit im Umgang mit Fortran 90 sind, gibt es sehr gute Online-Tutorials. Beispielsweise ist der erste Teil von "High Performance Fortran Programming" gut brauchbar insbesondere für Programmierer, die sich nicht nur für Fortran 90, sondern später auch für die datenparallele Programmierung von Parallelrechnern interessieren. Und "Fortran 90 for the Fortran 77 Programmer" ist für Programmierer geeignet, die sich speziell für den Übergang von FORTRAN 77 nach Fortran 90 interessieren.

Für Programmierer, die gar nicht das Problem der Umstellung alter FORTRAN77-Programme haben, sondern die ihre Fortran-Kenntnisse auffrischen wollen, bietet sich an, gleich alle alten Zöpfe abzuschneiden und sich der Programmiersprache F zuzuwenden. Die Programmiersprache F ist wie Fortran 90 ohne (die veralteten, die redundanten und die fehleranfälligen Sprachmittel von) FORTRAN 77.

Das Compiler-Problem

Im Zusammenhang mit der Umstellung auf modernes Fortran muß man u.a. die Frage klären, auf welcher Art Rechner (Mainframe, Workstation oder PC) die Fortran-Programme zukünftig gerechnet werden sollen. Für Workstations oder PCs gibt es jeweils eine ganze Reihe von Compilern zur Auswahl.

Den Mitgliedern der UH bietet das RRZN kostenlos Fortran90- und Fortran95-Compiler von NAGWare für die Installation auf institutseigene Workstations an.

Für viele alte Mainframe-Fortran-Programme bietet sich wegen der enorm gestiegenen Leistungsfägigkeit der PCs sogar die Möglichkeit des Umstiegs vom Mainframe zum PC an. Unter Windows 95 oder Windows NT gibt es eine Reihe brauchbarer bis guter Compiler für PCs. Die Mitglieder der UH können den Fortran90-Compiler von NAGWare/Salford kostenlos zur Installation auf institutseigene Windows-PCs vom RRZN bekommen.

Für Intel-PCs unter Linux gibt es neben einer Reihe kostenpflichtiger Compiler auch einige kostenlose Compiler. Für Mitglieder der UH bietet das RRZN einen Fortran90-Compiler und einen Fortran95-Compiler von NAGWare kostenlos zur Installation auf institutseigene Linux-PCs an. Darüberhinaus gibt es einen Fortran90-Compiler von Pacific-Sierra Research (PSR), der frei für nichtkommerzielle Nutzung ist und der auch zuhause außerhalb der UH installiert werden darf. Dieser Compiler ist hinsichtlich Compilationszeiten und Ausführungszeiten deutlich effizienter als die oben genannten Compiler für PCs unter Windows 95/NT. Und mit Ausnahme rekursiver Unterprogramme ist er so leistungsfähig wie die NAGWare-Compiler für Linux-PCs.

Weil Fortran 95 sich nur sehr wenig von Fortran 90 unterscheidet, und weil Fortran95-Compiler Fortran90-Programme akzeptieren, ist es gleich, ob Sie einen Fortran90-Compiler oder einen Fortran95-Compiler für die Umstellung alter FORTRAN77-Programme verwenden wollen. Die Umstellung auf Fortran 90 ist fast immer auch eine Umstellung auf Fortran 95.

Das Programmumstellungsproblem

Die eigentliche Programmumstellung auf den neuen Compiler sollte möglichst einfach sein. Welchen Aufwand Sie treiben wollen, hängt auch davon ab, wie normgerecht das Programm anschließend sein soll.

Die 1. Möglichkeit führt möglicherweise am schnellsten zum Ziel. Tatsächlich erreicht man aber auf diese Weise nur, daß ein FORTRAN77-Programm auf einem Fortran90/95-System läuft. Es bleibt vom Charakter her ein FORTRAN77-Programm. Und die eigentlichen Umstellungsprobleme werden nur auf später vertagt. Die 4. Möglichkeit ist auf Dauer die sicherste Vorgehensweise.

Für die einfach Umwandlung von der alten Quelltextform in die neue Form kann man z.B. die Hilfsprogramme convert.f90 oder to_f90.f90 verwenden. Diese (Fortran90-)Programme sind für alle Nutzer frei verfügbar. Für RRZN-Nutzer haben wir das Programm VAST-90 auf den Sun-Workstations des RRZN installiert. VAST-90 wandelt Ihr FORTRAN77-Programm nicht nur in die neue Quelltextform um, sondern es kann auch in gewissem Umfang eine Restrukturierung Ihres Programmes durchführen. Für den nichtkommerziellen Einsatz auf Linux-PCs gibt es eine freie Version von plusFORT; dabei handelt es sich um eine ganze Werkzeugkiste für die Analyse und Restrukturierung von FORTRAN77-Programmen. Die abschließende automatische Umwandlung des FORTRAN77-Programms in die neue Fortran90-Form wird leider nicht von der freien plusFORT-Version, sondern nur von der kommerziellen Version unterstützt. plusFORT wird auch mit vielen der üblichen Spracherweiterungen (von DEC VAX Fortran, von IBM VS Fortran und der bekanntesten Compiler für Workstations und PCs) fertig.

Wenn Sie sicher gehen wollen, daß das umgewandelte Programm wirklich ein modernes Fortran-Programm ist, das frei von veralteten, redundanten und fehleranfälligen FORTRAN77-Sprachmitteln ist, dann sollten Sie es einmal einem F-Compiler zur Analyse vorlegen. Für eine ganze Reihe von Rechenumgebungen gibt es inzwischen sogar professionelle freie F-Compiler.

Resümee

Der Einsatz von Werkzeugen zur Analyse alter FORTRAN77-Programme und zur Umwandlung in moderne Fortran90-Programme ist sehr hilfreich. Häufig ist es möglich, FORTRAN77-Spracherweiterungen in normgerechtes Fortran umzuwandeln.

Trotz des Einsatzes von Werkzeugen sind mehr oder weniger umfangreiche manuelle Eingriffe erforderlich, um nichtnormierte FORTRAN77-Sprachmittel in normgerechtes Fortran umzuwandeln. Probleme gibt es regelmäßig dann, wenn in dem alten Programm hardware-nahe Sprachmittel ausgenutzt werden (z.B. Adreßarithmetik, Bildschirmansteuerung, etc.) oder wenn Tricks eingesetzt werden (z.B. Ausnutzen der Eigenarten der Parameterübergabe des verwendeten Compilers) oder wenn Betriebssystemeigenschaften ausgenutzt werden (z.B. Eigenarten der Speicherverwaltung, des Laders, der Behandlung von Kommandos, etc.).

Bei der Umstellung alter FORTRAN77-Programme in lauffähige oder gar moderne Fortran90/95-Programme gibt es keine Garantie dafür, daß der Einsatz eines Compilers innerhalb einer Entwicklungsumgebung mit graphischer Benutzeroberfläche und integrierten Werkzeugen effizienter und erfolgreicher ist als der Einsatz eines Linux-Compilers auf Kommandoebene von der Eingabeaufforderung aus.

Bei der Umstellung diverser alter zum Teil sehr umfangreicher Benchmark-Programme für den Test vieler verschiedener Compiler für Mainframe-Rechner, Intel-PCs und Workstations habe ich die geringsten Schwierigkeiten und den schnellsten Erfolg eindeutig beim Einsatz des neuen freien Linux-Compilers (s.o.) von PSR gehabt. Als angenehmer Nebeneffekt hat sich herausgestellt, daß der Compiler im Vergleich mit allen anderen getesteten Compilern für Intel-PCs fast immer in jeder Hinsicht effizienter war.


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