ProFortran 77 - Die feine englische Art

center

Für den Atari ST gibt es inzwischen nicht nur eine Fülle äußerst nützlicher Programme - man denke etwa an Textverarbeitung, Zeichnen, Desktop-Publishing, Dateiverwaltung, Tabellenkalkulation, Branchenpakete und vieles mehr - sondern auch eine große Auswahl an Programmiersprachen.

Neben Einsteigern und Gelegenheitsprogrammierern, die mit Basic und Logo schon in der Grundausstattung bedient werden, finden auch viele Profis die richtige Sprache. Dabei ist Vielfalt gefragt: Es gibt noch keine Programmiersprache, die sich für alle Zwecke gleichermaßen eignet.

Wenn ein Anwender auch mit einem Großrechner arbeitet, dann möchte er natürlich auf seinem Mikrocomputer nicht nur die gleiche Sprache, sondern auch den gleichen Sprachumfang vorfinden. Andererseits muß natürlich auch das Preisniveau dem privaten Budget entsprechen.

Preiswert und gut

ProFortran ist ein Fortran-System, das von der englischen Firma Prospero Software erstellt wurde und in Deutschland für knapp 500 Mark verkauft wird. Dieselbe Firma bietet auch ProPascal an, das bereits im Heft 10/86 dieser Zeitschrift besprochen wurde. Was von dem Streit um die bessere Programmiersprache zu halten ist, wird an folgender Tatsache deutlich: Beide Systeme, also ProPascal und ProFortran, sind mit ProPascal erstellt und verwenden das gleiche Laufzeitsystem. Jede Sprache hat ihr spezielles Einsatzgebiet.

Das ProFortran-Paket besteht aus einer einseitig formatierten Diskette und einem Handbuch. Die Diskette ist nicht kopiergeschützt; das bei anderen Produkten oft notwendige Einlegen der Originaldiskette beim Programmstart entfällt. Im Hinblick auf den günstigen Preis, den Umfang der mitgelieferten Dokumentation und die Möglichkeit, gegen Einsendung von 30 Mark und Originaldiskette ein Update zu bekommen, sollte dem Vertreiber dadurch kein Schaden entstehen. Professionelle Anwender sind wegen der Dokumentation und der Update-Möglichkeit ohnehin auf die Originalversion angewiesen, die Benutzer von Kopien sind gewiß keine ernsthaften Daueranwender und somit auch keine verlorenen potentiellen Käufer.

Solide Dokumentation

Laut Handbuch läuft ProFortran auf jedem verfügbaren Atari der ST-Serie; das gesamte Programmpaket hat, einschließlich einiger Beispielprogramme, auf einer einseitig beschriebenen Diskette Platz. Hierzu muß man wissen, daß ProFortran auch für den Sinclair QL, dessen Prozessor 68008 ja aus der gleichen Familie stammt, angeboten wird. Dort sind die Speicherkapazitäten nicht so üppig wie auf dem Atari.

Die Dokumentation ist sehr solide und entspricht dem für Software zum IBM-PC üblichen Standard. Die Druckqualität ist gut, die Texte sind übersichtlich formatiert und gut lesbar. Es handelt sich um die von Fachleuten ix englischer Sprache abgefaßte Original dokumentation, was der erfahrene Fortran-Programmierer sicher zu schätzen weiß. Für Anfänger genügt sie natürlich nicht, hier gibt es jedoch gute und preiswerte Lehrbücher in deutscher Sprache (z. B. Müller, Streker-Seeborg: Fortran 77 Programmierungsanleitung, Bibliographisches Institut Mannheim, 1984).

Der erste Teil der Dokumentation gibt auf elf Seiten einen Überblick über wichtige Details der Implementierung, etwa die verfügbaren Datentypen, Hinweise zur Ein-/Ausgabe und ähnliches.

Anbindung an TOS und GEM

Der zweite Teil des Handbuchs entspricht etwa der "Programmer Reference" in englischsprachiger Literatur zu Großrechnern. Auf 125 Seiten wird die Sprache vollständig und übersichtlich dargestellt, man kann in allen Zweifelsfällen nachschlagen und detaillierte Auskunft erhalten. Kapitel 8 behandelt "implementation-dependent aspects". Unter anderem wird hier die Einbindung von TOS-, VDI- und AES-Routinen gezeigt, für die eine Fülle von Interface-Programmen in den mitgelieferten Systembibliotheken zur Verfügung steht. Die Verknüpfung mit Assembler-Programmen wird ausführlich anhand von Beispielen erläutert.

Der dritte Teil heißt "ProFortran-77 Operation" und entspricht dem "user guide" auf Großrechnern. Er umfaßt, einschließlich der Anhänge, 58 Seiten. Hier wird der Umgang mit dem Programmpaket unter GEM und unter ' dem Befehlszeileninterpreter COMMAND.TOS beschrieben. Dabei wird die gemeinsame Entwicklung von ProFortran und ProPascal besonders deutlich: Das Handbuch von ProPascal ist genauso aufgebaut, die Texte sind sogar weitgehend identisch.

Gemeinsam mit Pascal...

Für den Programmierer haben diese Gemeinsamkeiten eine erfreuliche Konsequenz: Fortran-Programmeinheiten und Pascal-Module können in einem Programm gemischt werden. Anhang E des jeweiligen Handbuchs gibt hierüber Auskunft. Die einzelnen Programmteile werden mit ProFortran oder ProPascal getrennt übersetzt, beim anschließenden Binden ignoriert man einfach die unterschiedliche Herkunft. Dies ist möglich, weil beide Programmpakete den gleichen Binder (von GST), die gleiche Laufzeit-Bibliothek (s. u.) und die gleiche Datendarstellung verwenden. Viele der Laufzeit-Fehlermeldungen, die jeweils durch einen Buchstaben charakterisiert sind, stimmen in beiden Sprachen überein; Fehlermeldungen, die nur für eine der Sprachen typisch sind, werden über zusätzliche Buchstaben realisiert .

...und Assembler

Die Integration geht noch weiter: Neben Fortran- und Pascal-Programmen können auch mit dem Makro-Assembler von GST erzeugte Binärdateien verarbeitet werden. Dieser leistungsfähige Assembler mit der genauen Bezeichnung GST-ASM V L0 wurde bereits im Heft 11/86 dieser Zeitschrift getestet.
Die Möglichkeit der Integration von Assembler-Teilen in Fortran-Programme macht ProFortran endgültig zum professionellen Werkzeug.

Sprachumfang: Komplettes Fortran 77

Der Sprachumfang von ProFortran umfaßt den gesamten Fortran-77-Standard gemäß DIN 66027 (identisch mit ISO 1539-1980 und der ANSI-Norm X3.9-1978). Insbesondere die geforderten Datentypen INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER sind allesamt implementiert. Gemäß dem FortranStandard belegen INTEGER und REAL eine numerische Speichereinheit (dies sind hier 4 Byte, also 32 Bit oder ein Langwort), DOUBLE PRECISION und COMPLEX dagegen zwei. Als Größen vom Typ INTEGER sind damit ganze Zahlen zwischen -2147483647 und +2147483647 erlaubt; durch den Typ REAL lassen sich reelle Zahlen in der Größenordnung zwischen E-38 und E+38 und mit einer Genauigkeit von etwa 7 Dezimalstellen darstellen, bei DOUBLE PRECISION liegt die Größenordnung zwischen E-308 und E+308 und die Genauigkeit bei 16 Dezimalstellen. Der Typ CHARACTER verwendet ein Byte pro Zeichen, LOGICAL belegt für jeden Wert eine numerische Speichereinheit. Zusätzlich zum Standard gibt es noch die Datentypen INTEGER * 2, LOGICAL * 2 mit 2 Byte Speicherplatz für jede Größe und INTEGER* 1, LOGICAL* 1, die jeweils nur 1 Byte belegen. Entsprechend einem verbreiteten Usus wird REAL * 8 erkannt und wie DOUBLE PRECISION behandelt.

Arbeitsweise

Mit ProFortran arbeitet man wie mit einem Fortran-System auf Großrechnern: Das Quellprogramm liegt in einer oder mehreren Textdateien vor (für sie ist unter ProFortran der Typ ".FOR" vorgesehen), diese werden mit einem Übersetzer in verschiebbare Maschinenprogramme umgewandelt (hier in Dateien vom Typ ".O") und dann zu einem lauffähigen Programm zusammengebunden (hier in eine Datei des Typs ".PRG"), wobei im letzten Schritt Bibliotheken auf benötigte Unterprogramme durchsucht werden können. Arbeiten kann man wahlweise unter GEM oder unter dem Befehlszeilen-Interpreter COMMAND.TOS.

Übersetzen

Der Übersetzer arbeitet zweistufig und wird durch den Aufruf des Steuerprogramms F77.PRG gestartet. Die erste Stufe übersetzt das Quellprogramm in einen kompakten Zwischencode, der in der zweiten Stufe in ein Maschinenprogramm verwandelt wird. Der Übersetzer arbeitet sehr schnell, wenn man doch einmal etwas länger warten muß, liegt dies an den langsamen Diskettenoperationen. Die mit einer RAMDisk erzielte Geschwindigkeit ist jedoch beeindruckend.

Binden

Die übersetzten Programmteile müssen noch zu einem lauffähigen Programm zusammengebunden werden, wobei in der Regel noch Bibliotheken mit Maschinensprache-Programmen durchsucht werden müssen. Dies erledigt man mit dem Binder LINK.PRG. Die Namen der benötigten Programme und Bibliotheken müssen zuvor in eine Datei des Typs .LNK geschrieben werden, hierfür werden einige Musterdateien mitgeliefert. Je nachdem, ob man reine TOS-Programme schreibt (etwa zum Rechnen) oder ob man GEM-Routinen (etwa zur grafischen Ausgabe) benötigt, kann man zwischen zwei verschiedenen Systembibliotheken wählen.

Residente Laufzeitbibliothek

Die am häufigsten benötigten Unterprogramme wurden nicht in die Systembibliotheken aufgenommen, sondern zu einer speicherresidenten Laufzeitbibliothek zusammengefaßt. Diese wird einmal, am besten gleich nach dem Einschalten, in den Speicher geladen und verbleibt dort bis zum Ausschalten. Das zugehörige Programm heißt PRL.PRG. Die Laufzeitbibliothek wird übrigens auch von allen Programmen des Fortran-Systems benötigt.

Ausführen

Die gebundenen Programme erhalten den Typ .PRG und können wie alle anderen Programme gestaltet werden. Man kann sie auch mit einem Parameter aufrufen (in COMMAND.TOS oder als TTP-Anwendung), dieser kann im laufenden Programm über das Unterprogramm GETCOM geholt werden. Außerdem kann ein laufendes Programm über das Unterprogramm EXECPG ein Tochter-Programm starten. Insgesamt bieten sich hier viele interessante Möglichkeiten, man kann sich etwa einen Satz Unix-ähnlicher Tools unter COMMAND.TOS erstellen.

Anhalten oder nicht?

Am Ende der Ausführung halten alle Programme des Fortran-Systems sowie alle damit erzeugten Programme an und geben die Kontrolle erst nach einem beliebigen Tastendruck ans Betriebssystem zurück. Dies kann unter GEM besonders wichtig sein, da sonst der vom Programm erzeugte Ausdruck (im Falle des Übersetzters etwa Fehlermeldungen) gleich wieder vom Desktop überschrieben würde. Beim Arbeiten unter COMMAND.TOS oder wenn das Programm keinen Ausdruck erzeugt, kann diese Warterei jedoch sehr lästig sein. Hier gibt es Abhilfe: Die Programme lassens ich mit dem ebenfalls mitgelieferten RCONFIG.PRG so modifizieren, daß die Wartefunktion an- und abgeschaltet werden kann.

Modifizierung des Systems

Der Übersetzer bietet einige der üblichen Optionen: Ausgabe der Umwandlungsliste, der Liste aller Variablen mit Typ und Speicherplatz, Aufspüren von nicht erklärten Variablen und vieles mehr. Alle diese Dinge lassen sich ein- und ausschalten, etwa beim expliziten Aufruf von F77.PRG. Andererseits kann man mit Hilfe eines Programms FCONFIG.PRG auch sämtliche Voreinstellungen im Programm F77 selbst, und zwar dauerhaft, verändern.
Der Binder LINK.PRG produziert automatisch einen Speicherbelegungsplan (load map), der jedoch selten benötigt wird und nur Zeit und Speicherplatz verbraucht. Diese Liste läßt sich durch Angabe des Parameters "NOLIST" unterdrücken.

F77 %1
LINK %1 F77 -NOLIST
%1
Bild 2: Datei EXE.BAT zum Übersetzen, Binden und Ausführen eines Programms

Optimaler Betrieb

Durch Anmelden im Desktop kann der Übersetzer so konfiguriert werden, daß er beim Anklicken eines Quellprogramms automatisch aufgerufen wird, siehe Bild 1. Unter COMMAND.TOS kann man sich die Arbeit mit BAT-Dateien wesentlich erleichtern. Bild 2 zeigt eine solche Datei, die ein Programm automatisch übersetzt, bindet und anschließend ausführt. Der Programmname wird beim Aufruf als Parameter übergeben.

Programmpakete: NUMATH, PIotST, NAG

Inzwischen gilt es schon die ersten in ProFortran erstellten Produkte, so etwa das im Einsatz an Universitäten bewährte System NUMATH zur Verwaltung von Bibliotheken aus FortranQuellprogrammen oder das sehr leistungsfähige PlotST, eine Sammlung von Grafik-Unterprogrammen, wie sie auch auf Großrechnern zur Verfügung stehen. Prospero selbst hat schon eine Bibliothek mit den wichtigsten Programmen aus der bekannten und auf Großrechnern bestens eingeführten NAG-Bibliothek angekündigt.

Fehler und Unzulänglichkeiten

Der OPEN-Befehl zum Eröffnen einer Datei wird nicht umgehend ausgeführt, sondern erst beim ersten Schreiboder Lesebefehl. Dadurch läuft eine eventuelle Fehlerabfrage, die mit den Parametern "ERR=" oder "IOSTAT=" im OPEN-Befehl arbeitet, ins Leere. Im Handbuch wird auf diesen Mißstand zwar hingewiesen (Motto: This is a feature, not a bug!), aber nicht etwa dort, wo der OPEN-Befehl erläutert wird, sondern bei den Implementierungshinweisen! Die hat man natürlich auch schon mal gelesen, aber wenn der Fehler dann viel später zum ersten Mal passiert...

Weiter gibt es beim Einlesen von Texten aus Dateien ein Problem: Ist die eingelesene Zeichenkette länger als 80 Zeichen, so erhält man nur irgendwelchen Unsinn. Bis zu 80 Zeichen funktioniert alles einwandfrei. Die getestete Version hat die genaue Bezeichnung mmg 1.12, möglicherweise ist dieser Fehler in einer neuen Version schon behoben.

Bewertung

Das Programmpaket ProFortran zielt auf einen Markt, der im englischen treffend mit "professional-at-home" umschrieben wird. Hier werden sehr hohe Anforderungen an Kompatibilität mit gleichen oder ähnlichen Produkten auf Großrechnern und an das Preis-/Leistungsverhältnis gestellt. Durch die Einhaltung des vollständigen Fortran77-Standards und dem vergleichsweise niedrigen Preis wird ProFortran beiden Kriterien gerecht. Die Nachbildung der auch auf Großrechnern üblichen Arbeitsstufen (Übersetzen, Binden, Ausführen) und die Möglichkeit, auf verschiedenen Ebenen des Betriebssystems (TOS, GEM) zu arbeiten, machen den Umgang mit ProFortran für den Profi sehr angenehm, da er hier vertraute Arbeitsweisen und (Programmier-)Umgebungen vorfindet und auch umfangreiche Programmpakete bearbeiten kann.

Als wichtigste Erweiterung wäre ein Debugger zu wünschen, der die Fehlersuche bedeutend erleichtern würde. Sicher gibt es so etwas auch auf manchen Großrechnern nicht - aber warum sollten die leistungsfähigen Mikrocomputer nicht auch hier, wie schon der Textverarbeitung, ihren größeren Brüdern noch etwas vormachen?


Dr. Volker Kurz
Aus: ST-Computer 03 / 1987, Seite 46

Links

Copyright-Bestimmungen: siehe Über diese Seite