GFA-Basic erfreut sich seit vielen Jahren großer Beliebtheit. Mit dem »Basic nach C«-Konverter von »Cicero« wird nun das Portieren in die Hochsprache »C« ganz wesentlich erleichtert.
LAURENZ PRÜSSNER UND MICHAELA BECKERS
Sechs Jahre nach der Präsentation der ersten ST-Computer kommen die Nachteile von Basic immer deutlicher ans Licht: Es ist vollkommen in Assembler geschrieben und deshalb sehr schwer zu warten. So bleibt Programmierern, die sich auf GFA-Basic verlassen, meist nur noch ein Weg: um die Fehler »herumzuprogrammieren«, was den Wert der Kompilate nicht gerade steigert. Kaum ein Programm läuft auf Großbildschirmen, geschweige denn auf dem TT. So bleibt als letzter Ausweg nur die komplette Neuprogrammierung in einer zuverlässigen Programmiersprache.
Dem hilft der »Basic nach C«-Konverter des Saarbrückener Newcomers »Cicero« nun ab.
Nach dem Programmstart empfängt den Anwender zunächst eine GEM-Menüleiste, in der wesentliche Einstellungen vorgenommen werden. Um die Zusammenarbeit zwischen C, Konverter und GFA-Basic weiter zu vereinfachen, sind Zugriffspfade zum C-Compiler oder dem Basic-Interpreter einzustellen, über die dann mit einem Tastendruck in die entsprechenden Programme gesprungen wird.
Zum Einlesen der Basic-Source muß diese im ASCII-, sprich ».LST«-Format von GFA-Basic 3.x vorliegen. Nach dem Laden zeigt das Programm die Source auf dem Bildschirm an. Ein Editor ist nicht vorgesehen, dementsprechend ist das Window-Handling sehr unflexibel.
Nach Anwahl des Menüpunktes »konvertieren« beginnt das Programm seine Hauptarbeit. Die GFA-Sourcen werden entweder als Programm (also mit vollständiger Initialisierung) oder als Programmodul übersetzt. Letzteres kommt der Modulfähigkeit von C sehr entgegen.
»Basic nach C« durchläuft einen Drei-Pass-Compiler. Im ersten Durchlauf stellt der Konverter die verwendeten Variablen fest und bereitet Strukturübersetzungen in etwa durch FIELD-Anweisungen vor.
Der zweite Pass erzeugt einen Zwischencode, in dem Strukturen aufgebaut, die Verwaltung lokaler Variabler vorbereitet und Funktionsparameter geprüft werden.
Zuletzt erzeugt der letzte Pass den endgültigen C-Sourcecode. GFA-Basic-Befehle werden in entsprechende Library-Funktionen konvertiert, die Syntax wird angepaßt und geringfügige Optimierungen, z.B. bei Konditionalblöcken, vorgenommen.
Während der Konvertierung zeigt das Programm die momentan bearbeitete Zeile an und gibt gegebenenfalls Warnungen oder Fehlermeldungen aus. Während Fehler äußerst selten auftreten, erscheinen Warnungen — je nach Qualität des Basic-Listings — recht häufig. Sämtliche Warnungen werden als Kommentare in die C-Source übernommen.
Nach der Konvertierung zeigt das Programm die benötigte Zeit an, speichert die entstandene C-Source und stellt sie in der unteren Hälfte des Bildschirms der Basic-Source gegenüber. Nun kann der Programmierer schrittweise beide Listings durchscrollen, wobei er in der oberen Bildhälfte stets sein Basic-Programm, in der unteren die korrespondierenden C-Zeilen sieht und dadurch direkt vergleichen kann.
Der Konverter hält für nahezu jeden GFA-Basic-Befehl eine ihm entsprechende Bibliotheksfunktion bereit, die der Ursprungsfunktion von GFA-Basic möglichst nahekommen soll. Dementsprechend sind diese Routinen in den seltensten Fällen wirklich optimiert.
Sehr viel Arbeit hat man offenbar in die Behandlung von Strings gesetzt. Hier bietet der Konverter zwei Verfahren an: entweder die statische String-Verwaltung von C, wobei die maximale String-Größe durch eine benutzerdefinierte Konstante festgelegt wird. Zum anderen können konvertereigene Routinen zur dynamischen Verwaltung von Strings eingefügt werden (die sonst nicht nötig wären), mit denen die Basic-Variablenbehandlung nachgeahmt wird.
Festzuhalten bleibt, daß der »Basic Konverter nach C« erstmals eine »Breitwandübersetzung« zweier vollkommen verschiedener Sprachen erlaubt. Der »Basic Konverter nach C« bietet zu einem erschwinglichen Preis Hilfe auf diesem Weg. (mb)
Preis: 399 Mark zuzüglich der Funktions-Sourcen
Vertrieb: Richter
Stärken: leistungsstarke Konvertierung, hohe Arbeitsgeschwindigkeit, GEM-Einbindung, arbeitet auch auf TTs und Großbiidschirmen.
Schwächen: prinzipbedingte Unterschiede zwischen C und Basic besonders in der String-Behandlung.
Fazit: leistungsstarke Hilfe bei der Übersetzung von GFA-Basic-Listings
Cicero-Software, Ballweilerstr. 7, 6676 Mandelbachtal 4
Richter Computer Distributor, Hagener Str. 65, 5820 Gevelsberg